强化学习的数学基础4---Q-Learning进阶

笔记整理自李宏毅老师的公开课

Asynchronous Advantage Actor-Critic (A3C)

回顾Policy Gradient的梯度参数:
∇ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( ∑ t ′ = t T n r t ′ − t r t ′ n − b ) ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla \bar{R}_{\theta}\approx \frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}\left(\sum_{t^{'}=t}^{T_n}r^{t^{'}-t_{r^{n}_{t^{'}}}}-b\right)\nabla\log{p_{\theta}(a_{t}^{n}|s_{t}^{n})} RˉθN1n=1Nt=1Tnt=tTnrttrtnblogpθ(atnstn)

如果令 G t n = ∑ t ′ = t T n r t ′ − t r t ′ n G_{t}^{n}=\sum_{t^{'}=t}^{T_n}r^{t^{'}-t_{r^{n}_{t^{'}}}} Gtn=t=tTnrttrtn G t n G_t^{n} Gtn是Actor跟环境互动而来的,那么 G G G则会使不稳定的。因为数值本身具有随机性,而且环境也有随机性。不过,如果我们sample足够多的次数,那么均值会比较稳定。

其实,本质上来说,有下面的公式成立:
E [ G t n ] = Q π θ ( s t n , a t n ) E\left[G_{t}^{n}\right]=Q^{\pi_{\theta}}(s_t^{n},a_t^{n}) E[Gtn]=Qπθ(stn,atn)
那么问题转换成了求解 Q π θ ( s t n , a t n ) Q^{\pi_{\theta}}(s_t^{n},a_t^{n}) Qπθ(stn,atn);同时, b b b可以用 V π θ ( s t n ) V^{\pi_{\theta}}(s_t^{n}) Vπθ(stn)进行表示。但是,这样做的缺点在于,我们需要估计 Q π Q^\pi Qπ V π V^\pi Vπ这两个神经网络,这样的训练量大,而且结果不稳定。引入一个代换法则:
Q π ( s t n , a t n ) = E [ r t n + V π ( s t + 1 n ) ] Q^\pi\left(s_t^n,a_t^n\right)=E\left[r_t^n+V^\pi\left(s_{t+1}^n\right)\right] Qπ(stn,atn)=E[rtn+Vπ(st+1n)]
实际使用时,可以去掉期望值,原作者的Paper实验这样做的效果比较好。
Q π ( s t n , a t n ) = r t n + V π ( s t + 1 n ) Q^\pi\left(s_t^n,a_t^n\right)=r_t^n+V^\pi\left(s_{t+1}^n\right) Qπ(stn,atn)=rtn+Vπ(st+1n)
可以这么理解, Q ​ Q​ Q的意思是为了表示 s t ​ s_t​ st状态下,采取行动 a t ​ a_t​ at后会获得的所有的奖励总和,那么和自然,这个公式可以表示成当前这一步行动的奖励 r t ​ r_t​ rt累加上下一个状态的奖励 V ​ V​ V r ​ r​ r是个随机值,由环境等的因素共同决定,这也是这个模型的缺点,由随机值的影响。

那么,最终的梯度可以表示为:
∇ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( r t n + V π ( s t + 1 n ) − V π ( s t n ) ) ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla \bar{R}_{\theta}\approx \frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}\left(r_t^n+V^\pi(s^n_{t+1})-V^\pi(s^n_t)\right)\nabla\log{p_{\theta}(a_{t}^{n}|s_{t}^{n})} RˉθN1n=1Nt=1Tn(rtn+Vπ(st+1n)Vπ(stn))logpθ(atnstn)
训练时候的 Q Q Q V V V网络可以共享前面几层的参数,只是在最后输出的时候,变换到不同的网络层中。训练的时候,可以使用输出参数的交叉熵作为 π ( s ) \pi(s) π(s)的参数,那么交叉熵越大,说明越需要进行Exploration。

A3C是同时开多个环境进行产生数据,并不断更新。

Pathwise Derivative Policy Gradient

在之前的 Q π Q^\pi Qπ网络中,我们输入一个游戏状态 s s s和一个行动 a a a,时候会得到一个 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)作为输出。而该方法的特别之处在于,专门产生一个Actor π \pi π网络用于生成行动 a a a,这样,一个网络的输出就会作为另一个网络的输入。训练的时候,需要先训练 Q π Q^\pi Qπ网络,之后固定住该网络,再去训练 π \pi π网络。

那么,Actor网络的梯度是:
θ π ′ = θ π + η ∇ θ π Q π ( s , a ) \theta^{\pi^{'}}=\theta^\pi+\eta\nabla_{\theta^\pi}Q^\pi(s,a) θπ=θπ+ηθπQπ(s,a)

给出一般性的算法:

  • 初始化Q-function Q Q Q,target Q-function Q ^ = Q \hat{Q}=Q Q^=Q,actor π \pi π,target actor π ^ = π \hat{\pi}=\pi π^=π
  • 在每个episode中:
    • 对于每一步
      • 给定一个状态 s t s_t st,基于 π \pi π采取行动 a t a_t at,注意这里需要Exploration
      • 获得一个奖励 r t r_t rt,并到达一个新的状态 s t + 1 s_{t+1} st+1
      • ( s i , a i , r i , s i + 1 ) (s_i,a_i,r_i,s_{i+1}) (si,ai,ri,si+1)存储到buffer
      • buffer中随机获取一个批次的 ( s i , a i . r i , s i + 1 ) (s_i,a_i.r_i,s_{i+1}) (si,ai.ri,si+1)
      • 目标函数 y = r i + Q ^ ( s i + 1 , π ^ ( s i + 1 ) ) y=r_i+\hat{Q}(s_{i+1},\hat{\pi}(s_{i+1})) y=ri+Q^(si+1,π^(si+1))
      • 更新 Q Q Q的参数,使得 Q ( s i , a i ) Q(s_i,a_i) Q(si,ai)接近 y y y
      • 更新 π \pi π的参数去最大化 Q ( s i , π ( s i ) ) Q(s_i,\pi(s_i)) Q(si,π(si))
      • 每C步执行更新 Q ^ = Q \hat{Q}=Q Q^=Q π ^ = π \hat{\pi}=\pi π^=π
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值