【强化学习】三、动态规划

三、动态规划

1.介绍

动态规划(Dynamic Programming,DP)是一类优化算法

动态规划将待求解问题分解成若干的子问题,先求解子问题,然后从这些子问题的解得到目标问题的解。

核心特点:

  • 最优子结构:子问题的最优解是可以得到的
  • 重复子问题:子问题的解决方案可以存储和重用

动态规划与强化学习

在完备的马尔可夫决策过程中,DP可用于计算最优策略。完备是指 P s s ′ a \mathcal P_{ss^\prime}^a Pssa R s a R_s^a Rsa已知

对于强化学习问题,传统的DP算法作用有限:

  • 完备的环境模型只是一个假设
  • 计算复杂度极高

但是DP提供了必要的基础,所有其他方法都是对DP的近似

  • 降低计算复杂度
  • 减弱对环境模型完备性的假设

基于动态规划的强化学习

策略迭代(Policy iteration):使用贝尔曼期望方程,求解最优策略,包含两个核心步骤:

  • 策略评估(Policy evaluation):输入 M D P ( S , A , P , R , γ ) MDP(S,A,P,R,\gamma) MDP(S,A,P,R,γ)和策略 π \pi π,输出价值函数 v π v_\pi vπ
  • 策略提升(Policy Improvement):输入 M D P ( S , A , P , R , γ ) MDP(S,A,P,R,\gamma) MDP(S,A,P,R,γ)和价值函数 v π v_\pi vπ,输出最优价值函数 v ∗ v_* v和最优策略 π \pi π

价值迭代(Value iteration):使用贝尔曼最优方程,求解最优策略


2.策略评估

迭代策略评估

**问题:**评估一个给定的策略 π \pi π,也称为“预测”问题

**解决方案:**迭代应用贝尔曼期望方程进行回溯
v 1 → v 2 → ⋯ → v π ∀ s : v k + 1 ( s ) ← E π [ R t + 1 + γ v k ( S t + 1 ) ∣ S t = s ] v_1 \rightarrow v_2 \rightarrow \dots \rightarrow v_\pi \\\\\forall s: \quad v_{k+1}(s) \leftarrow \mathbb{E}_\pi\left[R_{t+1}+\gamma v_k\left(S_{t+1}\right) \mid S_t=s\right] v1v2vπs:vk+1(s)Eπ[Rt+1+γvk(St+1)St=s]
不断地用老的打分器去更新新的打分器,算法会收敛到 v π v_\pi vπ

算法流程:

输入待评估的策略 π \pi π

算法参数:小阈值 θ > 0 \theta > 0 θ>0,用于确定估计量的精度

对于任意 s ∈ s + s \in s^+ ss+,任意初始化 V ( s ) V(s) V(s),其中 V ( 终止状态 ) = 0 V(终止状态)=0 V(终止状态)=0

循环:

  • Δ ← 0 \Delta \leftarrow 0 Δ0
  • 对每一个 s ∈ S s \in S sS循环:
    • v ← V ( s ) v \leftarrow V(s) vV(s)
    • V ( s ) ← ∑ a ∈ A π ( a ∣ s ) ( R s a + γ ∑ s ′ ∈ S P s s ′ a V ( s ′ ) ) V(s) \leftarrow \sum_{a \in \mathcal A}\pi(a \mid s)(\mathcal{R}_s^a+\gamma \sum_{s^{\prime} \in \mathcal{S}} \mathcal{P}_{s s^{\prime}}^a V\left(s^{\prime}\right)) V(s)aAπ(as)(Rsa+γsSPssaV(s))
    • Δ ← m a x ( Δ , ∣ v − V ( s ) ∣ ) \Delta \leftarrow max(\Delta, |v-V(s)|) Δmax(Δ,vV(s))

直到 Δ < θ \Delta < \theta Δ<θ

示例:

image-20230816120848416

image-20230816120804872

3.策略迭代

**问题:**如何获得最优策略?

**回答:**策略迭代方法,交替迭代下述步骤:

  1. 评估给定的策略 π \pi π,获得价值函数

v π ( s ) = E π [ R t + 1 + γ R t + 2 + ⋯ ∣ S t = s ] v_\pi(s)=\mathbb E_\pi[R_{t+1} + \gamma R_{t+2}+ \dots \mid S_t=s] vπ(s)=Eπ[Rt+1+γRt+2+St=s]

  1. 应用贪婪方法来改进策略,使其后续状态价值增加最多

π ′ = g r e e d y ( v π ) \pi^\prime=greedy(v_\pi) π=greedy(vπ)

在小型网格世界中,改进后的策略就是最佳的策略, π ′ = π ∗ \pi^\prime=\pi^* π=π

但是更多的场合中,我们需要进行多次的评估和改进迭代,才能找到最优策略

上述算法一般都能收敛至最佳策略 π ∗ \pi^* π

如果改进停止,
q π ( s , π ′ ( s ) ) = max ⁡ a ∈ A q π ( s , a ) = q π ( s , π ( s ) ) = v π ( s ) q_\pi\left(s, \pi^{\prime}(\mathrm{s})\right)=\max _{a \in A} q_\pi(s, a)=q_\pi(s, \pi(\mathrm{s}))=v_\pi(s) qπ(s,π(s))=aAmaxqπ(s,a)=qπ(s,π(s))=vπ(s)
满足贝尔曼最优方程
max ⁡ a ∈ A q π ( s , a ) = v π ( s ) \max _{a \in A} q_\pi(s, a)=v_\pi(s) aAmaxqπ(s,a)=vπ(s)
此时,对于所有的 s ∈ S , v π ( s ) = v ∗ ( s ) s \in S, v_\pi(s)=v_*(s) sS,vπ(s)=v(s)

所以, π \pi π是最优策略


策略迭代的相关讨论

策略评估需要收敛到 v π v_\pi vπ吗?在k次迭代策略评估后停止?

  • 比如在小型网格世界中, k = 3 k=3 k=3就可以输出最优策略

为什么不每次迭代都更新策略,即k=1?

  • 这等效于价值迭代

image-20230816132851599


4.价值迭代

image-20230816133627993


价值迭代流程

**问题:**找到一个最优的策略 π \pi π

**方法:**迭代应用贝尔曼最优方程进行回溯
∀ s : v k + 1 ( s ) ← max ⁡ a ( R s a + γ ∑ s ′ ∈ S P s s ′ a V ( s ′ ) ) \forall s:v_{k+1}(s) \leftarrow \max_a (\mathcal{R}_s^a+\gamma \sum_{s^{\prime} \in \mathcal{S}} \mathcal{P}_{s s^{\prime}}^a V\left(s^{\prime}\right)) s:vk+1(s)amax(Rsa+γsSPssaV(s))
最终可以收敛于最优价值函数 v ∗ v_* v

迭代过程中得到的价值函数可能不符合任何策略

image-20230816134854489

5.参考资料

强化学习基础 北京邮电大学 鲁鹏 强化学习基础 (本科生课程) 北京邮电大学 鲁鹏_哔哩哔哩_bilibili

深度强化学习 台湾大学 李宏毅 DRL Lecture 1_ Policy Gradient (Review)_哔哩哔哩_bilibili

蘑菇书EasyRL datawhalechina/easy-rl: 强化学习中文教程(蘑菇书),在线阅读地址:https://datawhalechina.github.io/easy-rl/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值