给定初始向量v0,迭代计算由vk算出πk+1
Matrix form:
πk+1=argπmax(rπ+γPπvk)
(注意,矩阵形式不好理解的点在于,必须要知道初始π0才能继续迭代,实际计算的时候我们根本不需要用到Pπ矩阵,因此矩阵形式只是数学表示, 实际算法实现使用下面的element wise)
The elementwise form :
πk+1(s)=argπmaxa∑π(a∣s)qk(s,a)(r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vk(s′)),s∈S
这里我们可以看到只要知道vk , 由于p(r∣s,a),r,γ,p(s′∣s,a)都是环境和已知变量,因此可以直接算出qk,进而算出πk+1
The optimal policy solving the above optimization problem is
πk+1(a∣s)={10a=ak∗(s)a=ak∗(s)
where ak∗(s)=argmaxaqk(a,s). πk+1 is called a greedy policy, since it simply selects the greatest q-value.
因为上面我们算出了πk+1,利用已知的vk,然后继续迭代
The elementwise form of
vk+1=rπk+1+γPπk+1vk
(注意这里的vk不是严格的state value了,它只是一组向量,因为不满足贝尔曼公式)
is
vk+1(s)=a∑πk+1(a∣s)qk(s,a)(r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vk(s′)),s∈S
Since πk+1 is greedy, the above equation is simply
vk+1(s)=amaxqk(a,s)
Procedure summary:
vk(s)→qk(s,a)→greedy policy πk+1(a∣s)→new value vk+1=amaxqk(s,a)
Algorithm 1 Value iteration algorithm2:While vk has not converged (∥vk−vk−1∥>threshold), for the kth iteration, do 3:For every state s∈S, do 4:For every action a∈A(s), do 5:q-value: qk(s,a)=∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vk(s′) 6:Maximum action value: ak∗(s)=argmaxaqk(a,s) 7:Policy update: πk+1(a∣s)=1 if a=ak∗, and πk+1(a∣s)=0 otherwise 8:Value update: vk+1(s)=maxaqk(a,s) 9:end for
10:end while
给定一个初始策略π0
根据迭代我们现在已经有了πk , 通过解贝尔曼啊方程得到这个策略对应的state value vπk
vπk=rπk+γPπkvπk
解这个方程在chapter2说过需要用迭代法,设vπk(j)为第j次迭代估计的vπk值,不断迭代让vπk(j)→vπk,j→∞
-
Matrix-vector form: vπk(j+1)=rπk+γPπkvπk(j),j=0,1,2,…
-
Elementwise form:
vπk(j+1)(s)=a∑πk(a∣s)(r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπk(j)(s′)),s∈S
Stop when j is sufficiently large or ∥vπk(j+1)−vπk(j)∥ is sufficiently small.
πk+1(s)=argπmaxa∑π(a∣s)qπk(s,a)(r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπk(s′)),s∈S.
Here, qπk(s,a) is the action value under policy πk. Let
ak∗(s)=argamaxqπk(a,s)
Then, the greedy policy is
πk+1(a∣s)={10a=ak∗(s),a=ak∗(s).
Algorithm 2 Policy iteration algorithm2:While vπk has not converged, for the kth iteration, do 3:// Policy evaluation
4:Initialize an arbitrary vπk(0) 5:While vπk(j) has not converged, for the jth iteration, do 6:For every state s∈S, do 7:vπk(j+1)(s)=∑aπk(a∣s)[∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vπk(j)(s′)] 8:end for
9:end while
10:// Policy improvement
11:For every state s∈S, do 12:For every action a∈A, do 13:qπk(s,a)=∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vπk(s′) 14:end for
15:ak∗(s)=argmaxaqπk(s,a) 16:πk+1(a∣s)=1 if a=ak∗, and πk+1(a∣s)=0 otherwise 17:end for
18:end while
如图:
- 策略迭代先有一个初始策略π0,然后根据π0算出对应的state value vπ0, 用vπ0来greedy更新π1, 根据 π1又可以解贝尔曼方程(迭代法)得到vπ1
- 值迭代需要一个初始v0,为了可比设为vπ0 , 根据v0贪心算出π1 , 用π1,v0 迭代算出v1
- 注意右边comments: vπ1≥v1 , 注意看红色的公式,两边都作用同一个策略 π1 的 Bellman operator
Tπ1(v)=rπ1+γPπ1v
由于 Pπ1 的元素都是非负概率,因此这个算子具有单调性:
x≥y⟹Tπ1(x)≥Tπ1(y)
,因此vπ1≥vπ0⇒vπ1≥v1
或者也可以理解成,策略迭代是对于Pπ1迭代很多次的代的vπ1,而v1只是迭代一次得到的结果
下一步,如果我们把策略迭代的这一步红色公式vπ1=rπ1+γPπ1vπ1迭代解法中的vπ1(0):=v0 ,如图
Algorithm 3 Truncated policy iteration algorithm2:While vk has not converged, for the kth iteration, do 3:// Policy evaluation
4:Initialize vk(0)=vk−1, maximum iteration jtruncate 5:While j<jtruncate, do 6:For every state s∈S, do 7:vk(j+1)(s)=∑aπk(a∣s)[∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vk(j)(s′)] 8:end for
9:end while
10:Set vk=vk(jtruncate) 11:// Policy improvement
12:For every state s∈S, do 13:For every action a∈A(s), do 14:qk(s,a)=∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vk(s′) 15:end for
16:ak∗(s)=argmaxaqk(s,a) 17:πk+1(a∣s)=1 if a=ak∗, and πk+1(a∣s)=0 otherwise 18:end for
19:end while
Truncated Policy Iteration(截断策略迭代),可以理解为:
Value Iteration 和 Policy Iteration 的中间形态
- Policy Iteration 每次更新 policy 后,会把新 policy 的 value 几乎算到完全收敛;
- Value Iteration 只算一步就立刻重新更新 policy;
- Truncated Policy Iteration 则折中一下,只算有限 j 步,然后就更新 policy。
Value Iterationj=1⟵Truncated PIj→∞⟶Policy Iteration