即对贝尔曼最优公式进行迭代求解
值迭代每轮会根据当前 vk 计算 qk(s,a),然后在每个状态选取使 qk 最大的动作:
qk(s,a)=r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vk(s′)ak∗(s)=argamaxqk(s,a)
据此得到贪心策略(greedy policy):
πk+1(a∣s)={1,0,a=ak∗(s)a=ak∗(s)
直观理解:在每个状态只选当前看来最划算的动作。
用上一步的贪心选择来更新价值函数。因为策略是贪心且确定性的,所以状态价值直接变为最大 q:
vk+1(s)=amaxqk(s,a)
这一步就是 Bellman 最优算子的迭代形式:
- 不需要显式“评估”整条策略(不像策略迭代那样要做多轮 policy evaluation)
- 每轮直接做一次“最大化更新”
对每一轮迭代:
- 用 vk 计算所有 qk(s,a)
- 在每个状态选出 ak∗(s)=argmaxaqk(s,a)(得到贪心策略 πk+1)
- 价值更新:vk+1(s)=maxaqk(s,a)
- 重复直到收敛(例如 ∥vk+1−vk∥ 小于阈值)
vk(s)→qk(s,a)→greedy πk+1→vk+1(s)=amaxqk(s,a)

给定一个随机的初始策略 π0,
vπk=rπk+γPπkvπk.
注意,vπk 是一个状态价值函数。
πk+1=argπmax(rπ+γPπvπk).
其中,上述最大化运算是逐分量(componentwise)进行的。
该算法将产生如下序列:
π0PEvπ0PIπ1PEvπ1PIπ2PEvπ2PI⋯
其中,PE 表示策略评估(policy evaluation),PI 表示策略改进(policy improvement)。
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)∥足够小时,停止迭代。
πk+1=argπmax(rπ+γPπvπk).
πk+1(s)=argπmaxa∑π(a∣s)(r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπk(s′)),s∈S.
这里,
qπk(s,a)=r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπk(s′)
表示在策略 πk 下的动作价值函数。
令
ak∗(s)=argamaxqπk(s,a),
则对应的贪心策略为
πk+1(a∣s)={1,0,a=ak∗(s),a=ak∗(s).

接近目标状态的策略会先变好,远离目标状态的策略会后变好
策略迭代:
π0PEvπ0PIπ1PEvπ1PIπ2PEvπ2PI⋯
价值迭代:
u0PUπ1′VUu1PUπ2′VUu2PU⋯
说明:
- PE = 策略评估(Policy Evaluation)
- PI = 策略改进(Policy Improvement)
- PU = 策略更新(Policy Update)
- VU = 价值更新(Value Update)
| 策略迭代算法 | 价值迭代算法 | 备注 |
|---|
| 1)策略: | π0 | 不适用(N/A) | |
| 2)价值: | vπ0=rπ0+γPπ0vπ0 | v0≈vπ0 | |
| 3)策略: | π1=argmaxπ(rπ+γPπvπ0) | π1=argmaxπ(rπ+γPπv0) | 两个策略是一样的 |
| 4)价值: | vπ1=rπ1+γPπ1vπ1 | v1=rπ1+γPπ1v0 | vπ1≥v1,因为 vπ1≥vπ0 |
| 5)策略: | π2=argmaxπ(rπ+γPπvπ1) | π2′=argmaxπ(rπ+γPπv1) | |
| ⋮ | ⋮ | ⋮ | ⋮ |
考虑求解 vπ1=rπ1+γPπ1vπ1 的步骤:

价值迭代算法只计算 一次。
策略迭代算法执行 无限次迭代(an infinite number of iterations)。
截断策略迭代算法(truncated policy iteration algorithm) 执行 有限次迭代(例如 j 次)。从 j 到 ∞ 的剩余迭代将被截断。
考虑用于求解策略评估步骤的迭代算法:
vπk(j+1)=rπk+γPπkvπk(j),j=0,1,2,…
如果初始猜测被设为 vπk(0)=vπk−1,那么有:
vπk(j+1)≥vπk(j)
对于每一个 j=0,1,2,… 都成立。

本文方法需要系统模型,因此通常被称为 动态规划算法。