值迭代与策略迭代#
值迭代 (Value Iteration)#
值迭代通过迭代更新值函数 vk 来逼近最优值函数 v∗。其核心迭代公式为:
vk+1=f(vk)=πmax(rπ+γPπvk),k=1,2,3…
该过程可分解为两个步骤:
-
策略更新 (Policy Update):
πk+1=argπmax(rπ+γPπvk)
-
值更新 (Value Update):
vk+1=rπk+1+γPπk+1vk
注:此处的 vk 是第 k 次迭代的估值向量,而非最终的 state value。
1. 策略更新 (Policy Update)#
πk+1=argπmax(rπ+γPπvk)
其逐元素形式 (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
由此得到的 πk+1 为贪婪策略 (Greedy Policy),即在状态 s 下选择使 qk(s,a) 最大的动作 ak∗(s):
ak∗(s)=argamaxqk(a,s)
πk+1(a∣s)={1,0,a=ak∗(s)a=ak∗(s)
2. 值更新 (Value Update)#
vk+1=rπk+1+γPπk+1vk
其逐元素形式为:
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
由于 πk+1 是贪婪策略,上式等价于:
vk+1(s)=amaxqk(a,s)
策略迭代 (Policy Iteration)#
策略迭代包含以下步骤:
-
初始化:给定一个随机的初始策略 π0。
-
策略评估 (Policy Evaluation, PE):计算当前策略的状态价值 vπk。
vπk=rπk+γPπkvπk
-
策略提升 (Policy Improvement, PI):基于当前价值生成更好的策略。
πk+1=argπmax(rπ+γPπvπk)
1. 策略评估 (Policy Evaluation)#
求解 vπk 通常采用迭代法:
-
矩阵-向量形式:
vπk(j+1)=rπk+γPπkvπk(j),j=0,1,2,…
-
逐元素形式:
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
停止条件:当 j→∞ 或 ∥vπk(j+1)−vπk(j)∥ 足夠小时停止迭代。
2. 策略提升 (Policy Improvement)#
-
矩阵-向量形式:
πk+1=argπmax(rπ+γPπvπk)
-
逐元素形式:
π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
令 ak∗(s)=argmaxaqπk(a,s),更新策略为确定性贪婪策略:
πk+1(a∣s)={1,0,a=ak∗(s)a=ak∗(s)
截断策略迭代 (Truncated Policy Iteration)#
我们可以从“策略评估的步数”这一角度来统一值迭代和策略迭代:
Policy Iteration: Value Iteration: π0PEvπ0PIπ1PEvπ1PIπ2…π0PEv0PUπ1′VUv1PUπ2′…
- Policy Iteration:P→vvvv...→P→vvvv... (评估至收敛)
- Value Iteration:P→v→P→v→P→v (评估仅做一步)
统一视角下的算法对比:
Value Iteration←v1⟵Truncated Policy Iteration←vˉ1⟵Policy Iteration←vπ1⟵vπ1(0)=v0vπ1(1)=rπ1+γPπ1vπ1(0)vπ1(2)=rπ1+γPπ1vπ1(1)⋮vπ1(j)=rπ1+γPπ1vπ1(j−1)⋮vπ1(∞)=rπ1+γPπ1vπ1(∞)初始值(只迭代 1 次)(迭代 j 次)(迭代至收敛)
注意:标准的 Policy Iteration 要求在每一步都精确求解 vπk(即 j→∞),这在实际计算中往往不可行或效率低下。因此,实际应用中使用的通常是 Truncated Policy Iteration,即限制评估步数 j。