大模型- 强化学习中的DP 动态规划--80
参考
https://g.co/gemini/share/148812031e5d
https://newfacade.github.io/notes-on-reinforcement-learning/06-dynamic.html
内容
如何在一个已知环境模型的情况下,求解最优策略。
所谓“已知环境模型”,指的是我们知道智能体(Agent)在任何状态(State)下,选择任何动作(Action)后,会以什么样的概率(Transition Probability)转移到下一个状态(Next State),并获得多少奖励(Reward)
这就像你下棋时,完全知道棋盘的规则,每走一步会导致什么样的确定性后果。但在强化学习的很多实际问题中,环境模型是未知的,需要智能体去探索,那是后续章节会讲到的内容。DP方法是理解后续更复杂算法的基础。
核心概念 (Key Concepts)
- 策略 (Policy, π): 策略是指导智能体行动的规则,即在某个状态 s 下,选择动作 a 的概率,表示为 π(a|s)。
- 状态值函数 (State-Value Function, V(s)): 衡量在状态 s 有多好。它的定义是:从状态 s 开始,遵循策略 π,所能获得的期望总回报(通常是带折扣的未来奖励总和)。
- 动作值函数 (Action-Value Function, Q(s, a)): 衡量在状态 s 下,选择动作 a 有多好。它的定义是:在状态 s 下执行动作 a,之后遵循策略 π,所能获得的期望总回报。
- 贝尔曼期望方程 (Bellman Expectation Equation): 这是DP方法的核心。它表明,当前状态的值函数 V(s) 可以由其所有可能的后继状态的值函数 V(s') 来表示。这个方程把问题分解成了更小的子问题。
![image]()
线性代数视角
如果你把所有状态的值函数看作一个向量 V,其中每个元素是 V(s)。那么贝尔曼期望方程可以写成一个巨大的线性方程组:V = Rπ + γPπV。
V 是一个 |S| x 1 的值函数向量(|S| 是状态总数)。
Rπ 是一个 |S| x 1 的向量,表示在策略 π 下每个状态的期望立即奖励。
Pπ 是一个 |S| x |S| 的状态转移矩阵,Pπ[i, j] 表示在策略 π 下从状态 i 转移到状态 j 的概率。
这个方程组有解析解:V = (I - γPπ)^-1 Rπ。这在理论上是可行的,但求逆矩阵 (I - γPπ)^-1 的计算复杂度是 O(|S|^3),当状态空间很大时,计算量非常巨大。因此,我们通常使用迭代的方法来求解
策略评估 (Policy Evaluation)
计算给定策略 π 的值函数 Vπ。
迭代式策略评估 (Iterative Policy Evaluation)
- 初始化: 随机初始化一个值函数向量 V0 (例如,所有元素都为0)。
- 迭代: 在每一步 k+1,对所有状态 s,使用上一轮的值函数 Vk 来更新当前值函数 Vk+1:
Vk+1(s) ← Σa π(a|s) Σs',r p(s',r|s,a) [r + γVk(s')] - 循环: 重复第2步,直到 Vk+1 和 Vk 之间的差异足够小(收敛)。
策略改进 (Policy Improvement)
在计算出当前策略 π 的值函数 Vπ 后,找到一个比 π 更好的策略 π'
原理 (策略改进定理):
对于一个策略 π 和其值函数 Vπ,如果我们构建一个新策略 π',它在每个状态 s 都选择能使动作值函数 Qπ(s, a) 最大化的动作,那么这个新策略 π' 一定比原策略 π 要好,或者一样好。
Qπ(s, a) 可以通过 Vπ 计算出来:
Qπ(s, a) = Σs',r p(s',r|s,a) [r + γVπ(s')]
所以,新的“贪心”策略 π' 如下:
π'(s) = argmax_a Qπ(s, a) # 找到让Q值最大的action 这时候的π就是最优的
将“策略评估”和“策略改进”结合起来的算法,形成一个循环,直到找到最优策略。
算法流程:
-
初始化: 随机初始化一个策略 π0 和值函数 V0
-
循环直到收敛:
(策略评估): 使用当前的策略 πk,通过迭代式策略评估计算其值函数 Vk+1,直到收-敛。 这一步就已经很耗时了
Vπk(s) = ...(策略改进): 使用计算出的值函数 Vk+1,通过贪心的方式生成一个新的、更好的策略 πk+1。
πk+1(s) = argmax_a Q(s, a) -
如果新策略 πk+1 和旧策略 πk 完全一样,说明已经找到了最优策略和最优值函数,算法结束。
这个过程就像是:评估一下我现在的做法 (E) -> 根据评估结果改进一下 (I) -> 再评估一下新做法 (E) -> 再改进 (I) ... 不断交替,直到无法再改进为止。
值迭代 (Value Iteration)
值迭代是策略迭代的一个变种,它更加高效。在策略迭代中,策略评估那一步需要完整地迭代很多次直到值函数收敛。而值迭代认为这没有必要,它将策略评估和策略改进两步合并了。
算法流程:
- 初始化: 随机初始化一个值函数 V0。
- 循环直到收敛: 在每一步 k+1,对所有状态 s,直接计算能达到的最优值,并更新 Vk+1。
Vk+1(s) ← max_a Σs',r p(s',r|s,a) [r + γVk(s')] - 循环: 重复第2步,直到 Vk+1 和 Vk 之间的差异足够小(收敛)。
这个更新规则其实是贝尔曼最优方程 (Bellman Optimality Equation) 的迭代形式。它不再依赖于某个固定的策略 π,而是在每一步都直接选择最优的动作来更新值函数。
策略迭代: 在评估和改进两个阶段之间清晰地切换。评估阶段需要多次迭代。
值迭代: 将评估(只进行一次扫描)和改进(通过max操作)合并为一步。通常收敛更快。
动态规划 (DP) 是一套在已知环境模型 (MDP) 下寻找最优策略的强大工具。
策略评估 用于计算一个给定策略的好坏(值函数)。
策略改进 用于根据值函数找到更好的策略。
策略迭代 和 值迭代 都是通过交替或结合这两个过程来最终找到最优策略的算法。


浙公网安备 33010602011771号