深度强化学习(八)(策略梯度的近似)

微信图片_20240323113941.jpg

深度强化学习(八)(策略梯度的近似)

一.策略梯度的近似

在上一节中我们推出了在马尔可夫链稳态的假设下,策略梯度的表达式
∇ θ J ( θ ) = E S [ E A ∼ π ( ⋅ ∣ S ; θ ) [ Q π ( S , A ) ⋅ ∇ θ ln ⁡ π ( A ∣ S ; θ ) ] ] \nabla_{\boldsymbol{\theta}} J(\boldsymbol{\theta})=\mathbb{E}_S\left[\mathbb{E}_{A \sim \pi(\cdot \mid S ; \boldsymbol{\theta})}\left[Q_\pi(S, A) \cdot \nabla_{\boldsymbol{\theta}} \ln \pi(A \mid S ; \boldsymbol{\theta})\right]\right] θJ(θ)=ES[EAπ(S;θ)[Qπ(S,A)θlnπ(AS;θ)]]
解析求出这个期望复杂度太大,因此我们采用蒙特卡洛方法去近似策略梯度。每次从环境中观测到一个状态 s s s,它相当于随机变量 S S S的观测值。然后再根据当前的策略网络(策略网络的参数必须是最新的)随机抽样得出一个动作:
a ∼ π ( ⋅ ∣ s ) a\sim\pi(\cdot\mid s) aπ(s)
计算随机梯度:
g ( s , a ; θ ) ≜ Q π ( s , a ) ⋅ ∇ θ ln ⁡ π ( a ∣ s ; θ ) . \boldsymbol{g}(s, a ; \boldsymbol{\theta}) \triangleq Q_\pi(s, a) \cdot \nabla_{\boldsymbol{\theta}} \ln \pi(a \mid s ; \boldsymbol{\theta}) . g(s,a;θ)Qπ(s,a)θlnπ(as;θ).
很显然, g ( s , a ; θ ) \boldsymbol{g}(s, a ; \boldsymbol{\theta}) g(s,a;θ) 是策略梯度 ∇ θ J ( θ ) \nabla_{\boldsymbol{\theta}} J(\boldsymbol{\theta}) θJ(θ) 的无偏估计(我们仅关心梯度的方向):
∇ θ J ( θ ) = E S [ E A ∼ π ( ⋅ ∣ S ; θ ) [ g ( S , A ; θ ) ] ] \nabla_{\boldsymbol{\theta}} J(\boldsymbol{\theta})=\mathbb{E}_S\left[\mathbb{E}_{A \sim \pi(\cdot| S ; \boldsymbol{\theta})}[\boldsymbol{g}(S, A ; \boldsymbol{\theta})]\right] θJ(θ)=ES[EAπ(S;θ)[g(S,A;θ)]]
然而,对于 g ( s , a ; θ ) = Q π ( s , a ) ⋅ ∇ θ ln ⁡ π ( a ∣ s ; θ ) \boldsymbol g(s,a;\boldsymbol \theta)=Q_{\pi}(s,a)\cdot \nabla_{\boldsymbol \theta}\ln \pi(a\mid s;\boldsymbol \theta) g(s,a;θ)=Qπ(s,a)θlnπ(as;θ),我们仍不知道 Q π ( s , a ) Q_{\pi}(s,a) Qπ(s,a)

二. REINFORCE 的推导

根据定义, g ( s , a ; θ ) ≜ Q π ( s , a ) ⋅ ∇ θ ln ⁡ π ( a ∣ s ; θ ) \boldsymbol{g}(s, a ; \boldsymbol{\theta}) \triangleq Q_\pi(s, a) \cdot \nabla_{\boldsymbol{\theta}} \ln \pi(a \mid s ; \boldsymbol{\theta}) g(s,a;θ)Qπ(s,a)θlnπ(as;θ) 。上一节中把策略梯度 ∇ θ J ( θ ) \nabla_{\boldsymbol{\theta}} J(\boldsymbol{\theta}) θJ(θ) 表示成期望的连加:
∇ θ J ( θ ) = E S 1 , A 1 [ g ( S 1 , A 1 ; θ ) ] + γ ⋅ E S 1 , A 1 , S 2 , A 2 [ g ( S 2 , A 2 ; θ ) ] + γ 2 ⋅ E S 1 , A 1 , S 2 , A 2 , S 3 , A 3 [ g ( S 3 , A 3 ; θ ) ] + ⋯ + γ n − 1 ⋅ E S 1 , A 1 , S 2 , A 2 , S 3 , A 3 , ⋯   , S n , A n [ g ( S n , A n ; θ ) ] . (2.1) \begin{aligned} \nabla_{\boldsymbol{\theta}} J(\boldsymbol{\theta})= & \mathbb{E}_{S_1, A_1}\left[\boldsymbol{g}\left(S_1, A_1 ; \boldsymbol{\theta}\right)\right] \\ & +\gamma \cdot \mathbb{E}_{S_1, A_1, S_2, A_2}\left[\boldsymbol{g}\left(S_2, A_2 ; \boldsymbol{\theta}\right)\right] \\ & +\gamma^2 \cdot \mathbb{E}_{S_1, A_1, S_2, A_2, S_3, A_3}\left[\boldsymbol{g}\left(S_3, A_3 ; \boldsymbol{\theta}\right)\right] \\ & +\cdots \\ & +\gamma^{n-1} \cdot \mathbb{E}_{S_1, A_1, S_2, A_2, S_3, A_3, \cdots, S_n, A_n}\left[\boldsymbol{g}\left(S_n, A_n ; \boldsymbol{\theta}\right)\right] . \end{aligned} \tag{2.1} θJ(θ)=ES1,A1[g(S1,A1;θ)]+γES1,A1,S2,A2[g(S2,A2;θ)]+γ2ES1,A1,S2,A2,S3,A3[g(S3,A3;θ)]++γn1ES1,A1,S2,A2,S3,A3,,Sn,An[g(Sn,An;θ)].(2.1)

我可以对期望做蒙特卡洛近似。首先观测到第一个状态 S 1 = s 1 S_1=s_1 S1=s1 。然后用最新的策略网络 π ( a ∣ s ; θ now  ) \pi\left(a \mid s ; \boldsymbol{\theta}_{\text {now }}\right) π(as;θnow ) 控制智能体与环境交互, 观测到到轨迹
s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , ⋯   , s n , a n , r n . s_1, a_1, r_1, s_2, a_2, r_2, \cdots, s_n, a_n, r_n . s1,a1,r1,s2,a2,r2,,sn,an,rn.

对公式 (2.1) 中的期望做蒙特卡洛近似, 得到:
∇ θ J ( θ now  ) ≈ g ( s 1 , a 1 ; θ now  ) + γ ⋅ g ( s 2 , a 2 ; θ now  ) + ⋯ + γ n − 1 ⋅ g ( s n , a n ; θ now  ) . \nabla_{\boldsymbol{\theta}} J\left(\boldsymbol{\theta}_{\text {now }}\right) \approx \boldsymbol{g}\left(s_1, a_1 ; \boldsymbol{\theta}_{\text {now }}\right)+\gamma \cdot \boldsymbol{g}\left(s_2, a_2 ; \boldsymbol{\theta}_{\text {now }}\right)+\cdots+\gamma^{n-1} \cdot \boldsymbol{g}\left(s_n, a_n ; \boldsymbol{\theta}_{\text {now }}\right) . θJ(θnow )g(s1,a1;θnow )+γg(s2,a2;θnow )++γn1g(sn,an;θnow ).

进一步把 g ( s t , a t ; θ now  ) ≜ Q π ( s t , a t ) ⋅ ∇ θ ln ⁡ π ( a t ∣ s t ; θ now  ) \boldsymbol{g}\left(s_t, a_t ; \boldsymbol{\theta}_{\text {now }}\right) \triangleq Q_\pi\left(s_t, a_t\right) \cdot \nabla_{\boldsymbol{\theta}} \ln \pi\left(a_t \mid s_t ; \boldsymbol{\theta}_{\text {now }}\right) g(st,at;θnow )Qπ(st,at)θlnπ(atst;θnow ) 中的 Q π ( s t , a t ) Q_\pi\left(s_t, a_t\right) Qπ(st,at) 替换成 u t u_t ut, 那么 g ( s t , a t ; θ now  ) \boldsymbol{g}\left(s_t, a_t ; \boldsymbol{\theta}_{\text {now }}\right) g(st,at;θnow ) 就被近似成为
g ( s t , a t ; θ now  ) ≈ u t ⋅ ∇ θ ln ⁡ π ( a t ∣ s t ; θ now  ) . \boldsymbol{g}\left(s_t, a_t ; \boldsymbol{\theta}_{\text {now }}\right) \approx u_t \cdot \nabla_{\boldsymbol{\theta}} \ln \pi\left(a_t \mid s_t ; \boldsymbol{\theta}_{\text {now }}\right) . g(st,at;θnow )utθlnπ(atst;θnow ).
经过上述两次近似, 策略梯度被近似成为下面的随机梯度
∇ θ J ( θ now  ) ≈ ∑ t = 1 n γ t − 1 ⋅ u t ⋅ ∇ θ ln ⁡ π ( a t ∣ s t ; θ now  ) . \nabla_{\boldsymbol{\theta}} J\left(\boldsymbol{\theta}_{\text {now }}\right) \approx \sum_{t=1}^n \gamma^{t-1} \cdot u_t \cdot \nabla_{\boldsymbol{\theta}} \ln \pi\left(a_t \mid s_t ; \boldsymbol{\theta}_{\text {now }}\right) . θJ(θnow )t=1nγt1utθlnπ(atst;θnow ).

这样就得到了 REINFORCE 算法的随机梯度上升公式:
θ new  ← θ now  + β ⋅ ∑ t = 1 n γ t − 1 ⋅ u t ⋅ ∇ θ ln ⁡ π ( a t ∣ s t ; θ now  ) \boldsymbol{\theta}_{\text {new }} \leftarrow \boldsymbol{\theta}_{\text {now }}+\beta \cdot \sum_{t=1}^n \gamma^{t-1} \cdot u_t \cdot \nabla_{\boldsymbol{\theta}} \ln \pi\left(a_t \mid s_t ; \boldsymbol{\theta}_{\text {now }}\right) θnew θnow +βt=1nγt1utθlnπ(atst;θnow )

三.Actor-Critic

策略梯度定理推导出梯度更新的方向
g ( s , a ; θ ) ≜ Q π ( s , a ) ⋅ ∇ θ ln ⁡ π ( a ∣ s ; θ ) \boldsymbol{g}(s, a ; \boldsymbol{\theta}) \triangleq Q_\pi(s, a) \cdot \nabla_{\boldsymbol{\theta}} \ln \pi(a \mid s ; \boldsymbol{\theta}) g(s,a;θ)Qπ(s,a)θlnπ(as;θ)
但是其中的动作价值函数 Q π Q_\pi Qπ 是未知的, 导致无法直接计算 g ( s , a ; θ ) \boldsymbol{g}(s, a ; \boldsymbol{\theta}) g(s,a;θ) 。上一节的 REINFORCE 用实际观测的回报近似 Q π Q_\pi Qπ, 本节的 actor-critic 方法用神经网络近似 Q π Q_\pi Qπ

Actor-critic 方法用一个神经网络近似动作价值函数 Q π ( s , a ) Q_π(s,a) Qπ(s,a),这个神经网络叫做“价值网络”,记为 q ( s , a ; w ) q(s,a;\boldsymbol w) q(s,a;w),其中的 w \boldsymbol w w 表示神经网络中可训练的参数。价值网络的输入是状态 s s s,输出是每个动作的价值。动作空间A中有多少种动作,那么价值网络的输出就是多少维的向量,向量每个元素对应一个动作。

Actor-critic 翻译成 “演员一评委”方法。策略网络 π ( a ∣ s ; θ ) \pi(a \mid s ; \boldsymbol{\theta}) π(as;θ) 相当于演员, 它基于状态 s s s做出动作 a a a 。价值网络 q ( s , a ; w ) q(s, a ; \boldsymbol{w}) q(s,a;w) 相当于评委, 它给演员的表现打分, 评价在状态 s s s 的情况下做出动作 a a a 的好坏程度。

screenshot-1710742631764.png

训练策略网络 (演员) : 策略网络 (演员) 想要改进自己的演技, 但是演员自己不知道什么样的表演才算更好, 所以需要价值网络(评委)的帮助。在演员做出动作 a a a 之后,评委会打一个分数 q ^ ≜ q ( s , a ; w ) \widehat{q} \triangleq q(s, a ; \boldsymbol{w}) q q(s,a;w), 并把分数反馈给演员, 帮助演员做出改进。演员利用当前状态 s s s, 自己的动作 a a a, 以及评委的打分 q ^ \hat{q} q^, 计算近似策略梯度, 然后更新自己的参数 θ \boldsymbol{\theta} θ (相当于改变自己的技术)。通过这种方式, 演员的表现越来越受评委的好评, 于是演员的获得的评分 q ^ \widehat{q} q 越来越高。

训练策略网络的基本想法是用策略梯度 ∇ θ J ( θ ) \nabla_{\boldsymbol{\theta}} J(\boldsymbol{\theta}) θJ(θ) 的近似来更新参数 θ \boldsymbol{\theta} θ 。之前我们推导过策略梯度的无偏估计:
g ( s , a ; θ ) ≜ Q π ( s , a ) ⋅ ∇ θ ln ⁡ π ( a ∣ s ; θ ) . \boldsymbol{g}(s, a ; \boldsymbol{\theta}) \triangleq Q_\pi(s, a) \cdot \nabla_{\boldsymbol{\theta}} \ln \pi(a \mid s ; \boldsymbol{\theta}) . g(s,a;θ)Qπ(s,a)θlnπ(as;θ).

价值网络 q ( s , a ; w ) q(s, a ; \boldsymbol{w}) q(s,a;w) 是对动作价值函数 Q π ( s , a ) Q_\pi(s, a) Qπ(s,a) 的近似, 所以把上面公式中的 Q π Q_\pi Qπ 替换成价值网络, 得到近似策略梯度:
g ^ ( s , a ; θ ) ≜ q ( s , a ; w ) ⏟ 评委的打分  ⋅ ∇ θ ln ⁡ π ( a ∣ s ; θ ) . \widehat{\boldsymbol{g}}(s, a ; \boldsymbol{\theta}) \triangleq \underbrace{q(s, a ; \boldsymbol{w})}_{\text {评委的打分 }} \cdot \nabla_{\boldsymbol{\theta}} \ln \pi(a \mid s ; \boldsymbol{\theta}) . g (s,a;θ)评委的打分  q(s,a;w)θlnπ(as;θ).

最后做梯度上升更新策略网络的参数:
θ ← θ + β ⋅ g ^ ( s , a ; θ ) \boldsymbol{\theta} \leftarrow \boldsymbol{\theta}+\beta \cdot \widehat{\boldsymbol{g}}(s, a ; \boldsymbol{\theta}) θθ+βg (s,a;θ)
用上述方式更新参数之后,会让评委打出的分数越来越高,而评委评分的均值为
v ( s ; θ ) = E A ∼ π ( ⋅ ∣ s ; θ ) [ q ( s , A ; w ) ] v(s ; \boldsymbol{\theta})=\mathbb{E}_{A \sim \pi(\cdot \mid s ; \boldsymbol{\theta})}[q(s, A ; \boldsymbol{w})] v(s;θ)=EAπ(s;θ)[q(s,A;w)]
而梯度上升的方向
E A ∼ π ( ⋅ ∣ s ; θ ) [ q ( s , A ; w ) ⋅ ∇ θ ln ⁡ π ( A ∣ s ; θ ) ] = ∑ A q ( s , a ; w ) ⋅ ∇ θ π ( a ∣ s ; θ ) = ∇ θ [ ∑ A q ( s , a ; w ) ⋅ π ( a ∣ s ; θ ) ] = ∇ θ E A ∼ π ( ⋅ ∣ s ; θ ) [ q ( s , A ; w ) ] = ∇ θ v ( s ; θ ) \begin{aligned} \Bbb E_{A\sim \pi(\cdot \mid s; \boldsymbol{\theta})}[q(s, A ; \boldsymbol{w}) \cdot \nabla_{\boldsymbol{\theta}} \ln \pi(A \mid s ; \boldsymbol{\theta}) ]&=\sum_{A}q(s,a;\boldsymbol w)\cdot \nabla_{\boldsymbol \theta}\pi(a\mid s;\boldsymbol \theta)\\ &=\nabla_{\boldsymbol \theta}[\sum_{A}q(s,a;\boldsymbol w)\cdot \pi(a\mid s;\boldsymbol \theta)]\\ &=\nabla_{\boldsymbol \theta}\mathbb{E}_{A \sim \pi(\cdot \mid s ; \boldsymbol{\theta})}[q(s, A ; \boldsymbol{w})]\\ &=\nabla_{\boldsymbol \theta}v(s ; \boldsymbol{\theta}) \end{aligned} EAπ(s;θ)[q(s,A;w)θlnπ(As;θ)]=Aq(s,a;w)θπ(as;θ)=θ[Aq(s,a;w)π(as;θ)]=θEAπ(s;θ)[q(s,A;w)]=θv(s;θ)
因此,用梯度上升更新 θ \boldsymbol \theta θ,会让 v ( s ; θ ) v(s;\boldsymbol \theta) v(s;θ)变大,也就是让评委打分的均值更高。

换句话说,即使评委的水平与真实水平相差甚远,在训练的过程中评委的评分依旧会上升。通过以上分析,我们不难发现上述训练策略网络(演员)的 方法不是真正让演员表现更好,只是让演员更迎合评委的喜好而已。因此,评委的水平也很重要,只有当评委的打分 q q q真正反映出动作价值 Q π Q_{\pi} Qπ,演员的水平才能真正提高。我们使用 S A R A S SARAS SARAS算法对价值网络进行更新。

下面概括 actor-critic 训练流程。设当前策略网络参数是 θ now  \boldsymbol{\theta}_{\text {now }} θnow , 价值网络参数是 w now  \boldsymbol{w}_{\text {now }} wnow  。执行下面的步骤, 将参数更新成 θ new  \theta_{\text {new }} θnew  w new  \boldsymbol{w}_{\text {new }} wnew  :

  1. 观测到当前状态 s t s_t st, 根据策略网络做决策: a t ∼ π ( ⋅ ∣ s t ; θ now  ) a_t \sim \pi\left(\cdot \mid s_t ; \boldsymbol{\theta}_{\text {now }}\right) atπ(st;θnow ), 并让智能体执行动作 a t a_t at
  2. 从环境中观测到奖励 r t r_t rt 和新的状态 s t + 1 s_{t+1} st+1
  3. 根据策略网络做决策: a ~ t + 1 ∼ π ( ⋅ ∣ s t + 1 ; θ now  ) \tilde{a}_{t+1} \sim \pi\left(\cdot \mid s_{t+1} ; \boldsymbol{\theta}_{\text {now }}\right) a~t+1π(st+1;θnow ), 但不让智能体执行动作 a ~ t + 1 \tilde{a}_{t+1} a~t+1
  4. 让价值网络打分:
    q ^ t = q ( s t , a t ; w now  )  和  q ^ t + 1 = q ( s t + 1 , a ~ t + 1 ; w now  ) \widehat{q}_t=q\left(s_t, a_t ; \boldsymbol{w}_{\text {now }}\right) \quad \text { 和 } \quad \widehat{q}_{t+1}=q\left(s_{t+1}, \tilde{a}_{t+1} ; \boldsymbol{w}_{\text {now }}\right) q t=q(st,at;wnow )  q t+1=q(st+1,a~t+1;wnow )
  5. 计算 TD 目标和 TD 误差:
    y ^ t = r t + γ ⋅ q ^ t + 1  和  δ t = q ^ t − y ^ t . \widehat{y}_t=r_t+\gamma \cdot \widehat{q}_{t+1} \quad \text { 和 } \quad \delta_t=\widehat{q}_t-\widehat{y}_t . y t=rt+γq t+1  δt=q ty t.
  6. 更新价值网络:
    w new  ← w now  − α ⋅ δ t ⋅ ∇ w q ( s t , a t ; w now  ) . \boldsymbol{w}_{\text {new }} \leftarrow \boldsymbol{w}_{\text {now }}-\alpha \cdot \delta_t \cdot \nabla_{\boldsymbol{w}} q\left(s_t, a_t ; \boldsymbol{w}_{\text {now }}\right) . wnew wnow αδtwq(st,at;wnow ).
  7. 更新策略网络:

θ new  ← θ now  + β ⋅ q ^ t ⋅ ∇ θ ln ⁡ π ( a t ∣ s t ; θ now  ) . \boldsymbol{\theta}_{\text {new }} \leftarrow \boldsymbol{\theta}_{\text {now }}+\beta \cdot \widehat{q}_t \cdot \nabla_{\boldsymbol{\theta}} \ln \pi\left(a_t \mid s_t ; \boldsymbol{\theta}_{\text {now }}\right) . θnew θnow +βq tθlnπ(atst;θnow ).

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值