引言(Introduction)#
动态规划(DP)在强化学习中指的是在环境模型已知(即状态转移概率 P 和奖励函数 R 已知)的情况下,计算最优策略的一类算法。
DP 的核心思想是将复杂问题分解为子问题,通过求解子问题来求解原问题。在 MDP 中,这体现为利用贝尔曼方程进行迭代更新。
策略迭代 (Policy Iteration)#
核心思想: “先以此为据,算个清楚;再择优而行。”
策略迭代将求解过程严格拆分为两个交替的步骤,直到策略不再改变。
- 步骤一:策略评估 (Policy Evaluation):在当前策略 π 固定不变的情况下,计算出该策略下精确的状态价值函数 Vπ。这意味着在这个步骤里,我们通常需要多次迭代(或者解线性方程组)直到 Vπ 完全收敛。
- 步骤二:策略提升 (Policy Improvement):基于刚刚算出来的精确 Vπ,贪心地更新策略。即对于每个状态,选择那个能带来最大期望回报的动作 π′(s)=argmaxaQπ(s,a)。
特点: 收敛所需的迭代步数少,但每一步内部的计算量大(因为策略评估需要很久)。
策略评估(Policy Evaluation)#
策略评估的目标是求解给定策略 π 的状态价值函数 Vπ。
对于策略 π,状态价值函数满足贝尔曼期望方程:
Vπ(s)=a∈A∑π(a∣s)(R(s,a)+γs′∈S∑P(s′∣s,a)Vπ(s′))
这构成了一个线性方程组,但在状态空间较大时直接求解困难,因此采用迭代法。
贝尔曼迭代(Bellman Iteration)#
将当前时刻估计的价值函数 Vk 代入贝尔曼方程右侧,计算下一轮的估计 Vk+1 :
Vk+1(s)←a∈A∑π(a∣s)(R(s,a)+γs′∈S∑P(s′∣s,a)Vk(s′))
随机选定初始值 V0 ,当 k→∞ 时,序列 {Vk} 会收敛到 Vπ 。
为了方便证明收敛性,定义贝尔曼算子为 Tπ:
TπVk=a∈A∑π(a∣s)(R(s,a)+γs′∈S∑P(s′∣s,a)Vk(s′))
收敛性证明(Banach不动点定理)#
为了证明序列 {Vk} 收敛于 Vπ,我们将迭代过程看作算子 Tπ 的应用:
Vk+1=TπVk
证明步骤如下:
- 定义范数:采用无穷范数 ∥V∥∞=maxs∈S∣V(s)∣;
- 压缩映射性质:对于任意两个价值函数 U,V,有:
∥TπU−TπV∥∞=smax∣γa∑π(a∣s)s′∑P(s′∣s,a)(U(s′)−V(s′))∣⩽γsmaxa∑π(a∣s)s′∑P(s′∣s,a)∣U(s′)−V(s′)∣⩽γsmaxa∑π(a∣s)s′∑P(s′∣s,a)∥U−V∥∞=γ∥U−V∥∞
- 结论:只要折扣因子 satisfying 0≤γ<1,算子 Tπ 就是一个γ-压缩映射(Contraction Mapping)。根据 Banach 不动点定理,序列 {Vk} 必收敛于唯一的固定点 Vπ。
策略提升(Policy Improvement)#
在计算出 Vπ 后,我们需要判断当前策略是否最优。如果不是,如何改进?
策略提升理论(Policy Improvement Theorem)#
给定策略 π 和其价值函数 Vπ,构造新策略 π′ 使得其在每个状态下都贪心地选择动作价值最大的动作:
π′(s)=a∈AargmaxQπ(s,a)=a∈Aargmax(r(s,a)+γs′∈S∑P(s′∣s,a)Vπ(s′))
定理保证:
- Vπ′(s)⩾Vπ(s),∀s∈S(策略单调递增)。
- 如果 Vπ′(s)=Vπ(s),则 π 已经是与最优策略 V∗ 等价的策略。
理论证明(Theorem Proof)#
证明:对于任何状态 s,满足Vπ′(s)⩾Vπ(s)。
证明思路:利用 Vπ(s)⩽maxaQπ(s,a)=Qπ(s,π′(s)),反复展开 Qπ 即可证。
状态价值函数和动作价值函数之间的关系:
Vπ(s)=a∈A∑π(a∣s)Qπ(s,a)
经过推导,可以得出:
Vπ(s)=a∈A∑π(a∣s)Qπ(s,a)⩽a∈AmaxQπ(s,a)=a∈Amax(r(s,a)+γs′∈S∑P(s′∣s,a)Vπ(s′))=Qπ(s,π′(s))
有了 Vπ(s)⩽Qπ(s,π′(s)),可以进一步推导出:
Vπ(s)⩽Qπ(s,π′(s))=Eπ′[Rt+γVπ(St+1)∣St=s]⩽Eπ′[Rt+γQπ(St+1,π′(St+1))∣St=s]=Eπ′[Rt+γRt+1+γ2Vπ(St+2)∣St=s]⩽Eπ′[Rt+γRt+1+γ2Rt+2+γ3Vπ(St+3)∣St=s]⋯⩽Eπ′[Rt+γRt+1+γ2Rt+2+γ3Rt+3+⋯∣St=s]=Vπ′(s)
迭代算法(Iteration Algorithm)#
策略迭代交替进行“策略评估”和“策略提升”,直到策略不再变化。
流程:
π0EVπ0Iπ1EVπ1I⋯Iπ∗EV∗
算法伪代码:
- 初始化:V(s)∈R,π(s)∈A 任意。
- 策略评估(循环直到收敛):
- Δ←0
- For each s∈S:
- v←V(s)
- V(s)←∑s′P(s′∣s,π(s))[R(s,π(s))+γV(s′)]
- Δ←max(Δ,∣v−V(s)∣)
- 若 Δ<θ,停止评估。
- 策略提升:
- policy_stable←true
- For each s∈S:
- old_action←π(s)
- π(s)←argmaxa∑s′P(s′∣s,a)[R(s,a)+γV(s′)]
- If old_action=π(s), then policy_stable←false
- If policy_stable is true,停止并返回 V∗,π∗;否则跳转至步骤 2。
注意:由于有限状态 MDP 的策略总数是有限的(∣A∣∣S∣),且每次提升策略都严格(或非严格)变好,策略迭代保证在有限步内收敛。
价值迭代(Value Iteration)#
策略迭代的缺点是每次“策略评估”都需要迭代很多次直到完全收敛。
事实上,我们不需要等到 Vπ 完全收敛才进行策略提升。
如果将策略评估的迭代次数缩减为 1次,并结合策略提升,就得到了价值迭代。
贝尔曼最优迭代(Bellman Optimal Iteration)#
价值迭代直接迭代求解最优价值函数,基于贝尔曼最优方程进行迭代:
Vk+1(s)←a∈Amax{R(s,a)+γs′∈S∑P(s′∣s,a)Vk(s′)}
随机选定初始值 V0 ,当 k→∞ 时,序列 {Vk} 会收敛到 V∗ 。为了方便证明收敛性,定义贝尔曼最优算子为 T∗:
T∗Vk=a∈Amax{R(s,a)+γs′∈S∑P(s′∣s,a)Vk(s′)}
收敛性证明(Banach不动点定理)#
为了证明序列 {Vk} 收敛于 V∗ ,将迭代过程看作算子 T∗ 的应用:
Vk+1=T∗Vk
证明步骤如下:
- 定义范数:采用无穷范数 ∣∣V∣∣∞=maxs∈S∣V(s)∣;
- 压缩映射性质:对于 ∀s∈S 以及任意两个价值函数 U,V,有:
∣T∗U(s)−T∗V(s)∣=a∈Amax{R(s,a)+γs′∈S∑P(s′∣s,a)U(s′)}−a∈Amax{R(s,a)+γs′∈S∑P(s′∣s,a)U(s′)}⩽a∈Amaxγs′∈S∑P(s′∣s,a)(U(s′)−V(s′))=γa∈Amaxs′∈S∑P(s′∣s,a)∣U(s)−V(s)∣⩽γa∈Amaxs′∈S∑P(s′∣s,a)∣∣U−V∣∣∞=γ∣∣U−V∣∣∞
- 对左式取最大值: ∣∣T∗U−T∗V∣∣∞⩽γ∣∣U−V∣∣∞
- 结论:只要折扣因子 satisfying 0≤γ<1,算子 T∗ 就是一个γ-压缩映射(Contraction Mapping)。根据 Banach 不动点定理,序列 {Vk} 必收敛于唯一的固定点 V∗。
迭代算法(Iteration Algorithm)#
- 初始化:V(s) 任意。
- 迭代更新(Loop until Δ<θ):
- Δ←0
- For each s∈S:
- v←V(s)
- V(s)←maxa∑s′∈SP(s′∣s,a)[R(s,a)+γV(s′)]
- Δ←max(Δ,∣v−V(s)∣)
- 输出策略:
- π∗(s)=argmaxa∑s′∈SP(s′∣s,a)[R(s,a)+γV(s′)]
局限性(Limitation)#
动态规划方法(如策略迭代和价值迭代)是强化学习的理论基石,其核心优势在于理论完备性,利用自举(Bootstrapping)机制能够保证在有限步内稳定收敛至全局最优策略。
然而,其在实际应用中存在两大核心局限:一是强依赖完备的环境模型(Model-based),即必须预先知晓精确的状态转移概率和奖励函数,这在现实场景中往往难以满足;
二是受困于维数灾难(Curse of Dimensionality),随着状态变量增加,状态空间呈指数级膨胀,导致遍历所有状态进行全宽更新(Full-width Backup)在计算资源和存储空间上变得不可行,因此无法直接应用于大规模或连续状态空间的复杂问题。