强化学习学习(三)收敛性证明与DDPG

文章目录

      • [Deep RL with Q-Functions](#Deep RL with Q-Functions)
      • [Double Q-Learning](#Double Q-Learning)
      • [DDPG: Q-Learning with continuous actions](#DDPG: Q-Learning with continuous actions)
      • [Advanced tips for Q-Learning](#Advanced tips for Q-Learning)
证明收敛?
  • 对于Value迭代:不动点证明的思路

    首先定义一个算子 B : B V = max ⁡ a r a + γ T a V \mathcal{B}:\mathcal{B}V=\max_ar_a+\gamma\mathcal{T}_aV B:BV=maxara+γTaV

    接着有一个不动点 V ∗ ( s ) = max ⁡ a r ( s , a ) + γ E [ V ∗ ( s ′ ) ] V^*(s)=\max_{a}r(s,a)+\gamma E[V^*(s')] V∗(s)=maxar(s,a)+γE[V∗(s′)],有 V ∗ = B V ∗ V^*=\mathcal{B}V^* V∗=BV∗

    每次使用算子都会,V离不动点的距离有收缩: ∣ ∣ B V − V ∗ ∣ ∣ ∞ ≤ γ ∣ ∣ V − V ∗ ∣ ∣ ∞ ||\mathcal{B}V-V^*||\infty\leq\gamma||V-V^*||{\infty} ∣∣BV−V∗∣∣∞≤γ∣∣V−V∗∣∣∞

  • 对于神经网络拟合的Value迭代:对于监督学习,也是得到一个 V ′ V' V′使得距离 ∣ ∣ V ′ ( s ) − ( B V ) ( s ) ∣ ∣ 2 ||V'(s)-(\mathcal{B}V)(s)||^2 ∣∣V′(s)−(BV)(s)∣∣2最小------投影

    V的迭代是这样的 V ← Π B V V\leftarrow \Pi\mathcal{B}V V←ΠBV

    定义一个新的算子 Π : Π V = arg ⁡ max ⁡ V ′ ∈ Ω 1 2 ∑ ∣ ∣ V ′ ( s ) − V ( s ) ∣ ∣ 2 \Pi:\Pi V=\arg\max_{V'\in\Omega}\frac{1}{2}\sum||V'(s)-V(s)||^2 Π:ΠV=argmaxV′∈Ω21∑∣∣V′(s)−V(s)∣∣2, Π \Pi Π实际上是用l2范数对 Ω \Omega Ω的投影,也是收缩的

!收缩:

∣ ∣ Π V − Π V ˉ ∣ ∣ 2 ≤ ∣ ∣ V − V ˉ ∣ ∣ 2 ||\Pi V-\Pi \bar{V}||^2\leq||V-\bar{V}||^2 ∣∣ΠV−ΠVˉ∣∣2≤∣∣V−Vˉ∣∣2**(注意这里用的是2范数而上面是无穷范数,两种算子都是再各自的范数上收缩的),但是把两个算子结合在一起就不会收缩了**

所以就导致了使用Q-table能够保证收敛,而用神经网络拟合的V的Q-iteration不能够收敛

  • 对于Q-iteration
    和上面一样,用神经网络拟合时不收敛,因为有投影算子
  • 对于A-C
    也是再用神经网络拟合的时候不收敛

尽管理论上令人沮丧,但是实际中可以表现的很好!

Deep RL with Q-Functions

这里面包含了replay buffer和target network,但是暂时不细说了。
Polyak averaging:模型平均的问题

Double Q-Learning

在实际的使用过程中,Q-Learning总是出现overestimate的问题:估计的价值比实际的价值高很多:

为什么会出现这样呢:

我们的target value是 y i = r i + γ max ⁡ a j ′ Q ϕ ′ ( s j ′ , a j ′ ) y_i=r_i+\gamma\max_{a'j}Q{\phi'}(s'_j,a'_j) yi=ri+γmaxaj′Qϕ′(sj′,aj′),其中 ϕ ′ \phi' ϕ′是当前的价值函数

imagine we have two random variables: X 1 , X 2 X_1,X_2 X1,X2,We have E [ max ⁡ ( X 1 , X 2 ) ] ≥ max ⁡ ( E [ X 1 ] , E X 2 ) E[\max(X_1,X_2)]\ge\max(E[X_1],E{X_2}) E[max(X1,X2)]≥max(E[X1],EX2)

而对于 Q ϕ ′ ( s ′ , a ′ ) Q_{\phi'}(s',a') Qϕ′(s′,a′),它是对真正Q函数的估计,也就是真正的Q函数加上一些"噪声",所以当我们取 Q ϕ ′ ( s ′ , a ′ ) Q_{\phi'}(s',a') Qϕ′(s′,a′)的最大值的时候,尽管"噪声"是无偏的,也会导致最后的值变大:
max ⁡ a ′ Q ϕ ′ ( s ′ , a ′ ) = Q ϕ ′ ( s ′ , arg ⁡ max ⁡ a ′ Q ϕ ′ ( s ′ , a ′ ) ) \max_{a'}Q_{\phi'}(s',a')=Q_{\phi'}(s',\arg\max_{a'} Q_{\phi'}(s',a')) a′maxQϕ′(s′,a′)=Qϕ′(s′,arga′maxQϕ′(s′,a′))
为什么有上面这个式子的写法? 别忘了遵循贪婪(没有"探索")的策略,我们选择下一个action就是根据 Q ϕ ′ Q_{\phi'} Qϕ′的,因为是根据 arg ⁡ max ⁡ \arg\max argmax选出来的,因此如果我们选择了正的噪声的action作为价值函数的输入,那么价值函数会基于同样的贪婪也会选择正的噪声,就会overestimate。

理论上的解法

因此,提出了Double Q-Learning,我们分别使用两个神经网络去产生动作和估计价值,这样两个神经网络拟合时产生的"噪声"就是不相关的!------这个操作非常像通信里面的啊!
Q ϕ A ( s , a ) = r + γ Q ϕ B ( s ′ , arg ⁡ max ⁡ a ′ Q ϕ A ( s ′ , a ′ ) ) Q_{\phi_A}(s,a)=r+\gamma Q_{\phi_B}(s',\arg\max_{a'} Q_{\phi_A}(s',a')) QϕA(s,a)=r+γQϕB(s′,arga′maxQϕA(s′,a′))
Q ϕ B ( s , a ) = r + γ Q ϕ B ( s ′ , arg ⁡ max ⁡ a ′ Q ϕ B ( s ′ , a ′ ) ) Q_{\phi_B}(s,a)=r+\gamma Q_{\phi_B}(s',\arg\max_{a'} Q_{\phi_B}(s',a')) QϕB(s,a)=r+γQϕB(s′,arga′maxQϕB(s′,a′))

实际上的解法

实际上,我们不需要麻烦的创造一个动作选择神经网络,一个价值神经网络,而是直接利用现成的:

别忘了我们其实有两个 ϕ \phi ϕ和 ϕ ′ \phi' ϕ′的,一个表示目标函数,另一个则是不断更新的,而目标函数会定期更新,因此我们直接借助这两个现成的:
y i = r i + γ Q ϕ ′ ( s j ′ , arg ⁡ max ⁡ a ′ Q ϕ ( s ′ , a ′ ) ) y_i=r_i+\gamma Q_{\phi'}(s'j,\arg\max{a'}Q_{\phi}(s',a')) yi=ri+γQϕ′(sj′,arga′maxQϕ(s′,a′))

上面利用当前的神经网络去确定动作action,而利用目标网络去确定价值value

DDPG: Q-Learning with continuous actions

  • 各种对连续动作采样的方法
  • DDPG

回忆一下,我们的目标是 max ⁡ a Q ϕ ( s , a ) = Q ϕ ( s , arg ⁡ max ⁡ a Q ϕ ( s , a ) ) \max_a Q_{\phi}(s,a)=Q_{\phi}(s,\arg\max_{a}Q_{\phi}(s,a)) maxaQϕ(s,a)=Qϕ(s,argmaxaQϕ(s,a))

因此,想办法训练另一个网络 μ θ ≈ arg ⁡ max ⁡ a Q ϕ ( s , a ) \mu_\theta\approx\arg\max_a Q_\phi(s,a) μθ≈argmaxaQϕ(s,a),它可以看作是一个状态-动作函数,用来模拟 arg ⁡ max ⁡ \arg\max argmax的过程

怎么去寻找这个网络的参数呢?因为我们是寻找最大的Q,因此用梯度上升就可以 d Q ϕ d θ = d a d θ d Q ϕ d a \frac{dQ_\phi}{d\theta}=\frac{da}{d\theta}\frac{dQ_\phi}{da} dθdQϕ=dθdadadQϕ

新的target: y j = r j + γ Q ϕ ′ ( s j ′ , μ θ ( s j ′ ) ) ≈ r j + γ Q ϕ ′ ( s j ′ , arg ⁡ max ⁡ a ′ Q ϕ ′ ( s j ′ , a j ′ ) ) y_j=r_j+\gamma Q_{\phi'}(s'j,\mu\theta(s'j))\approx r_j+\gamma Q{\phi'}(s'j,\arg\max{a'}Q_{\phi'}(s'_j,a'_j)) yj=rj+γQϕ′(sj′,μθ(sj′))≈rj+γQϕ′(sj′,argmaxa′Qϕ′(sj′,aj′))

Advanced tips for Q-Learning

  • Q-Learning再不同问题上的稳定度很不同,因此需要首先确保稳定性,包括选择合适的随机数种子。
  • 较大的replay buffer能够帮助提高稳定性
    • Looks more like fitted Q-iteration
  • 学习可能需要很长时间才能有突破
  • 进行探索的时候,先把 ϵ \epsilon ϵ设置大一点,随后慢慢的逐步减小
  • Bellman error gradients can be big: clip gradients or use Huber loss instead L = { x 2 / 2 if ∣ x ∣ ≤ δ δ ∣ x ∣ − δ 2 / 2 otherwise L=\begin{cases} x^2/2& \text{ if } |x|\leq\delta \\ \delta|x|-\delta^2/2& \text{ otherwise } \end{cases} L={x2/2δ∣x∣−δ2/2 if ∣x∣≤δ otherwise
  • 多使用Double Q-Learning,非常好用
  • 变化的学习率或者Adam optimizer会很有帮助
相关推荐
NAGNIP1 天前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab1 天前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab1 天前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP1 天前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年1 天前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼1 天前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS1 天前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区1 天前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈1 天前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang1 天前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx