第二十七课.深度强化学习(二)

概述

以超级玛丽为例:多捕捉金币,避开敌人,向前走,直到通关。我们要做的是写一个算法控制agent。我们可以有下面的方式:

第一种做法是学习policy函数 π ( a ∣ s ) \pi(a|s) π(as),这属于强化学习中的策略学习(Policy-Based Learning),当我们获得策略后,进行以下操作:

  • 观测当前状态 s t s_{t} st
  • 随机抽样: a t ∼ π ( ⋅ ∣ s t ) a_{t}\sim\pi(\cdot|s_{t}) atπ(st)

另一种做法是学习最优动作-价值函数(optimal action-value function) Q ∗ ( s , a ) Q^{*}(s,a) Q(s,a),这属于强化学习中的价值学习(Value-Based Learning),当我们获得价值函数后,进行以下操作:

  • 观测当前状态 s t s_{t} st
  • 选择 Q ∗ ( s , a ) Q^{*}(s,a) Q(s,a)最大化对应的动作: a t = a r g m a x a Q ∗ ( s t , a ) a_{t}=argmax_{a}Q^{*}(s_{t},a) at=argmaxaQ(st,a)

关于第二种做法,进行下面的补充:对于 t t t时刻,我们可以使用不同的policy,这就导致我们可以计算出不同的回报期望 Q π ( s t , a ) Q_{\pi}(s_{t},a) Qπ(st,a),但我们选择 t t t时刻回报期望最大的policy,得到该时刻下,对于不同policy,选择动作 a a a的最大回报 Q ∗ ( s t , a ) Q^{*}(s_{t},a) Q(st,a),我们统计所有 a a a对应的 Q ∗ ( s t , a ) Q^{*}(s_{t},a) Q(st,a),取回报最大的那个action作为最优动作 a t a_{t} at

本篇将以深度学习的方式,获取策略函数,或者获取最优动作-价值函数,故称为深度强化学习。

价值学习

Deep Q Network

如果我们知道最优动作-价值函数 Q ∗ ( s , a ) Q^{*}(s,a) Q(s,a),我们可以获得最优动作: a ∗ = a r g m a x a Q ∗ ( s , a ) a^{*}=argmax_{a}Q^{*}(s,a) a=argmaxaQ(s,a)但问题是我们不知道这个函数,所以提出DQN(Deep Q Network),使用神经网络 Q ( s , a ; w ) Q(s,a;w) Q(s,a;w)去近似函数 Q ∗ ( s , a ) Q^{*}(s,a) Q(s,a),其中 w w w是神经网络的参数。

解释:价值学习的想法就是学习一个函数近似 Q ∗ ( s , a ) Q^{*}(s,a) Q(s,a),理论上,我们不能找到一个函数可以像 Q ∗ ( s , a ) Q^{*}(s,a) Q(s,a)一样准确预测未来的回报,但以超级玛丽为例,如果我们进行游戏成千上万次,当我们面对某个状态,执行某个动作时,将会有一定把握判断未来的回报是怎样的。因此,我们可以相信,我们能够使用某个函数去近似这个"预言家"的功能。

不同的问题,DQN结构是不一样的,我们以超级玛丽这个问题为例,我们可以用卷积网络和全连接网络构造DQN:
fig1
我们只需从网络输出的结果中索引最优动作即可: a t = a r g m a x a c t i o n [ Q ( s t , l e f t ; w t ) , Q ( s t , r i g h t ; w t ) , Q ( s t , u p ; w t ) ] a_{t}=argmax_{action}[Q(s_{t},left;w_{t}),Q(s_{t},right;w_{t}),Q(s_{t},up;w_{t})] at=argmaxaction[Q(st,left;wt),Q(st,right;wt),Q(st,up;wt)]将DQN用于进行游戏时,可以得到以下轨迹:
fig2
t t t时刻开始说明:根据状态 s t s_{t} st,输入DQN,对所有动作进行打分,选择得分最高的动作成为 a t a_{t} at,当agent执行 a t a_{t} at后,环境更新状态,用状态转移函数 p p p随机采样一个状态作为 s t + 1 s_{t+1} st+1,环境还会返回奖励 r t r_{t} rt,奖励是强化学习中的监督信号,DQN依据奖励进行训练。

DQN的训练:TD算法(Temporal Difference Learning)

DQN通过TD算法训练,TD算法是Temporal Difference Learning的简称。TD算法较难理解,所以先以例子说明;

假设我现在驾车从纽约前往亚特兰大,同时有一个函数 Q Q Q,参数是 w w w,它可以估计出行的时间开销,比如要1000分钟才能到达亚特兰大。

1000分钟是模型的初始解,但如果很多人都来使用模型,就可以把模型更新到能准确做出预测。那应该如何更新?

首先,我们使用初始模型进行预测: q = Q ( w ) q=Q(w) q=Q(w),得到 q = 1000 q=1000 q=1000

然后我驾车到达亚特兰大,发现实际使用860分钟,我们把真实时间开销记为: y = 860 y=860 y=860
fig3

自然地,估计与真实有差别,就产生损失: L = 1 2 ( q − y ) 2 L=\frac{1}{2}(q-y)^{2} L=21(qy)2

由此可以计算损失关于参数的梯度: ∂ L ∂ w = ∂ q ∂ w ⋅ ∂ L ∂ q = ( q − y ) ⋅ ∂ Q ( w ) ∂ w \frac{\partial L}{\partial w}=\frac{\partial q}{\partial w}\cdot\frac{\partial L}{\partial q}=(q-y)\cdot\frac{\partial Q(w)}{\partial w} wL=wqqL=(qy)wQ(w)我们根据梯度更新参数(梯度下降): w t + 1 = w t − α ⋅ ∂ L ∂ w ∣ w = w t w_{t+1}=w_{t}-\alpha\cdot\frac{\partial L}{\partial w}|_{w=w_{t}} wt+1=wtαwLw=wt这种更新方式对于DQN训练是不利的,因为我们必须进行完全路程(进行整个游戏)才能更新参数,我们想要的是只进行部分就能更新,比如我们不到亚特兰大,我们到中间的华盛顿DC就停下,再也不去亚特兰大。面对这种情况又该如何处理?
fig4
我们现在能够得到的信息有:

  • 模型估计纽约到亚特兰大花费1000分钟;
  • 纽约到DC实际花费300分钟;
  • 模型估计DC到亚特兰大花费600分钟;

因此,我可以更新纽约到亚特兰大的估计为300+600=900分钟。在TD算法中,新的估计900被称为TD target,TD target虽然也是估计,但它比最初的估计1000更加可靠,因为其中有一定的实际成分。现在我们把TD target赋值到 y y y,所以得到损失(也称为TD error): L = 1 2 ( q − y ) 2 L=\frac{1}{2}(q-y)^{2} L=21(qy)2,后续则计算梯度再更新参数。

把TD算法用于DQN的学习是一样的道理,我们不需要进行完整个游戏,也可以更新参数。

在前面驾车的例子中,我们有以下关系: T N Y C → A T L ≈ T N Y C → D C + T D C → A T L T_{NYC\rightarrow ATL}\approx T_{NYC\rightarrow DC}+T_{DC\rightarrow ATL} TNYCATLTNYCDC+TDCATL其中, T N Y C → A T L T_{NYC\rightarrow ATL} TNYCATL T D C → A T L T_{DC\rightarrow ATL} TDCATL都是模型的估计值, T N Y C → D C T_{NYC\rightarrow DC} TNYCDC是实际值。

对应到DQN,我们可以有如下关系: Q ( s t , a t ; w ) ≈ r t + γ Q ( s t + 1 , a t + 1 ; w ) Q(s_{t},a_{t};w)\approx r_{t}+\gamma Q(s_{t+1},a_{t+1};w) Q(st,at;w)rt+γQ(st+1,at+1;w)注意到折扣率 γ \gamma γ曾出现在折扣回报中,折扣回报可表示为:
fig5
所以有: U t = R t + γ U t + 1 U_{t}=R_{t}+\gamma U_{t+1} Ut=Rt+γUt+1注意一个规范:大写字母代表随机变量,小写字母则代表随机变量的观测值。

DQN的输出 Q ( s t , a t ; w ) Q(s_{t},a_{t};w) Q(st,at;w) U t U_{t} Ut的期望 E [ U t ] E[U_{t}] E[Ut]的估计值, Q ( s t + 1 , a t + 1 ; w ) Q(s_{t+1},a_{t+1};w) Q(st+1,at+1;w) U t + 1 U_{t+1} Ut+1的期望 E [ U t + 1 ] E[U_{t+1}] E[Ut+1]的估计值,所以有: Q ( s t , a t ; w ) ≈ E [ R t + γ Q ( s t + 1 , a t + 1 ; w ) ] = r t + γ Q ( s t + 1 , a t + 1 ; w ) Q(s_{t},a_{t};w)\approx E[R_{t}+\gamma Q(s_{t+1},a_{t+1};w)]=r_{t}+\gamma Q(s_{t+1},a_{t+1};w) Q(st,at;w)E[Rt+γQ(st+1,at+1;w)]=rt+γQ(st+1,at+1;w)
下面我们开始训练DQN,以 t t t时刻为例:

  • 首先,我们用网络预测回报 Q ( s t , a t ; w t ) Q(s_{t},a_{t};w_{t}) Q(st,at;wt),选择最优动作 a t a_{t} at
  • 然后执行动作 a t a_{t} at,获得奖励观测值 r t r_{t} rt,环境也更新状态为 s t + 1 s_{t+1} st+1,此时再次调用网络可以得到TD target: y t = r t + γ Q ( s t + 1 , a t + 1 ; w t ) = r t + γ ⋅ m a x a { Q ( s t + 1 , a ; w t ) } y_{t}=r_{t}+\gamma Q(s_{t+1},a_{t+1};w_{t})=r_{t}+\gamma\cdot max_{a}\left\{Q(s_{t+1},a;w_{t})\right\} yt=rt+γQ(st+1,at+1;wt)=rt+γmaxa{Q(st+1,a;wt)}
  • 然后我们计算损失TD error: L t = 1 2 [ Q ( s t , a t ; w t ) − y t ] 2 L_{t}=\frac{1}{2}[Q(s_{t},a_{t};w_{t})-y_{t}]^{2} Lt=21[Q(st,at;wt)yt]2
  • 我们计算梯度并更新参数: w t + 1 = w t − α ⋅ ∂ L t ∂ w ∣ w = w t w_{t+1}=w_{t}-\alpha\cdot\frac{\partial L_{t}}{\partial w}|_{w=w_{t}} wt+1=wtαwLtw=wt

策略学习

Policy Network

在深度强化学习中,对于策略学习,我们使用神经网络去近似策略函数,在前面的内容中,我们知道,策略函数通常记为 π ( a ∣ s ) \pi(a|s) π(as),它是一个概率密度函数PDF。

策略函数输入当前状态 s s s,再输出各个动作的存在概率: π ( l e f t ∣ s ) = 0.2 \pi(left|s)=0.2 π(lefts)=0.2 π ( r i g h t ∣ s ) = 0.1 \pi(right|s)=0.1 π(rights)=0.1 π ( u p ∣ s ) = 0.7 \pi(up|s)=0.7 π(ups)=0.7agent将会根据这个概率分布进行随机抽样,从中采样出一个动作 a a a去执行。

我们使用神经网络去近似函数 π ( a ∣ s ) \pi(a|s) π(as),因此提出策略网络 Policy Network π ( a ∣ s ; θ ) \pi(a|s;\theta) π(as;θ),其中, θ \theta θ是网络的参数。

以超级玛丽游戏为例,我们可以使用以下网络:
fig6
使用softmax函数的意义在于将全连接网络的得分转为概率分布。

接下来再次回顾一下折扣回报: U t = R t + γ R t + 1 + γ 2 R t + 2 + ⋅ ⋅ ⋅ U_{t}=R_{t}+\gamma R_{t+1}+\gamma^{2}R_{t+2}+\cdot\cdot\cdot Ut=Rt+γRt+1+γ2Rt+2+其中, U t U_{t} Ut的随机性来自状态的随机变量 S t + 1 , S t + 2 , . . . S_{t+1},S_{t+2},... St+1,St+2,...和动作的随机变量 A t , A t + 1 , . . . A_{t},A_{t+1},... At,At+1,...,但在计算期望时,由于我们对后续不确定性的随机变量进行积分或求和,最终使得期望与初始观测值 s t s_{t} st a t a_{t} at,以及策略函数 π ( a ∣ s ) \pi(a|s) π(as),状态转移函数 p ( s ′ ∣ s , a ) p(s'|s,a) p(ss,a)有关。由于状态转移函数是环境决定的,故提出动作-价值函数action-value function并记作: Q π ( s t , a t ) = E [ U t ∣ S t = s t , A t = a t ] Q_{\pi}(s_{t},a_{t})=E[U_{t}|S_{t}=s_{t},A_{t}=a_{t}] Qπ(st,at)=E[UtSt=st,At=at]该函数的意义在于:给定当前状态 s t s_{t} st和策略函数 π \pi π,通过计算 Q π Q_{\pi} Qπ,我们可以得到agent执行 a t a_{t} at后的 U t U_{t} Ut的期望,从而可判断哪个动作可以获得更多回报。

状态-价值函数即state-value function,它是action-value function关于动作的期望: V π ( s t ) = E A [ Q π ( s t , A ) ] V_{\pi}(s_{t})=E_{A}[Q_{\pi}(s_{t},A)] Vπ(st)=EA[Qπ(st,A)]其中, A A A是动作的随机变量, A ∼ π ( ⋅ ∣ s t ) A\sim\pi(\cdot|s_{t}) Aπ(st)

状态-价值函数的意义在于: V π V_{\pi} Vπ可以反映当前状态的局势好坏,假设我们根据policy函数下围棋, V π V_{\pi} Vπ可以通过当前的棋盘状态告诉我们是快要胜利,还是快要失败。

如果动作是离散的,我们可以将state-value function表达为: V π ( s t ) = E A [ Q π ( s t , A ) ] = ∑ a π ( a ∣ s t ) Q π ( s t , a ) V_{\pi}(s_{t})=E_{A}[Q_{\pi}(s_{t},A)]=\sum_{a}\pi(a|s_{t})Q_{\pi}(s_{t},a) Vπ(st)=EA[Qπ(st,A)]=aπ(ast)Qπ(st,a)如果动作是连续的,比如自动驾驶的方向盘角度(-90度到+90度之间的连续值),我们可以将state-value function表达为: V π ( s t ) = E A [ Q π ( s t , A ) ] = ∫ − 90 + 90 π ( a ∣ s t ) Q π ( s t , a ) d a V_{\pi}(s_{t})=E_{A}[Q_{\pi}(s_{t},A)]=\int_{-90}^{+90}\pi(a|s_{t})Q_{\pi}(s_{t},a)da Vπ(st)=EA[Qπ(st,A)]=90+90π(ast)Qπ(st,a)da

策略网络训练:Policy Gradient算法

根据前面提到的状态-价值函数,并且我们用神经网络近似策略函数,所以可以得到状态-价值函数的表达: V ( s ; θ ) = ∑ a π ( a ∣ s ; θ ) ⋅ Q π ( s , a ) V(s;\theta)=\sum_{a}\pi(a|s;\theta)\cdot Q_{\pi}(s,a) V(s;θ)=aπ(as;θ)Qπ(s,a)策略学习的目标就是使得状态-价值尽量大,所以可以学习参数 θ \theta θ最大化 V ( S ; θ ) V(S;\theta) V(S;θ)的期望 J ( θ ) J(\theta) J(θ) J ( θ ) = E S [ V ( S ; θ ) ] J(\theta)=E_{S}[V(S;\theta)] J(θ)=ES[V(S;θ)]策略网络越好,那么 J ( θ ) J(\theta) J(θ)将会越大。

假设当前观测到状态 s s s,由于要最大化 J ( θ ) J(\theta) J(θ),所以我们用梯度上升更新参数: θ = θ + β ⋅ ∂ V ( s ; θ ) ∂ θ \theta=\theta+\beta\cdot\frac{\partial V(s;\theta)}{\partial\theta} θ=θ+βθV(s;θ)其中, β \beta β是学习率,该更新过程中的梯度是随机梯度(被称为策略梯度),真正的梯度应该是目标函数 J ( θ ) J(\theta) J(θ)关于参数的梯度,随机性来源于 s s s

通过计算推导,下面是策略梯度的两种表达形式: ∂ V ( s ; θ ) ∂ θ = ∑ a ∂ π ( a ∣ s ; θ ) ∂ θ ⋅ Q π ( s , a ) \frac{\partial V(s;\theta)}{\partial\theta}=\sum_{a}\frac{\partial\pi(a|s;\theta)}{\partial\theta}\cdot Q_{\pi}(s,a) θV(s;θ)=aθπ(as;θ)Qπ(s,a) ∂ V ( s ; θ ) ∂ θ = E A ∼ π ( ⋅ ∣ s ; θ ) [ ∂ l o g π ( A ∣ s ; θ ) ∂ θ ⋅ Q π ( s , A ) ] \frac{\partial V(s;\theta)}{\partial\theta}=E_{A\sim\pi(\cdot|s;\theta)}[\frac{\partial log\pi(A|s;\theta)}{\partial\theta}\cdot Q_{\pi}(s,A)] θV(s;θ)=EAπ(s;θ)[θlogπ(As;θ)Qπ(s,A)]理论上两种形式等价,第一种形式适合计算离散型动作,第二种形式适合计算连续型动作或者离散型动作。一般采用第二种形式。

在实际的梯度计算中,我们用蒙特卡洛随机抽样近似策略梯度:

  • 从策略函数分布(神经网络输出)中随机抽样一个动作 a ^ \widehat{a} a a ^ ∼ π ( ⋅ ∣ s ; θ ) \widehat{a}\sim\pi(\cdot|s;\theta) a π(s;θ)
  • 计算: g ( a ^ , θ ) = ∂ l o g π ( a ^ ∣ s ; θ ) ∂ θ ⋅ Q π ( s , a ^ ) g(\widehat{a},\theta)=\frac{\partial log\pi(\widehat{a}|s;\theta)}{\partial\theta}\cdot Q_{\pi}(s,\widehat{a}) g(a ,θ)=θlogπ(a s;θ)Qπ(s,a )至此,我们用 g ( a ^ , θ ) g(\widehat{a},\theta) g(a ,θ)近似策略梯度 ∂ V ( s ; θ ) ∂ θ \frac{\partial V(s;\theta)}{\partial\theta} θV(s;θ)

蒙特卡洛就是从一个分布中抽一个或多个随机样本,通过随机样本近似期望


现在总结一下策略梯度更新策略网络的过程:

  • 1.观测到状态 s t s_{t} st
  • 2.从策略网络的输出分布中随机抽样一个动作 a t a_{t} at a t ∼ π ( ⋅ ∣ s t ; θ t ) a_{t}\sim\pi(\cdot|s_{t};\theta_{t}) atπ(st;θt)
  • 3.计算: q t = Q π ( s t , a t ) q_{t}=Q_{\pi}(s_{t},a_{t}) qt=Qπ(st,at)
  • 4.计算: g ( a t , θ t ) = q t ∂ l o g π ( a t ∣ s t ; θ ) ∂ θ ∣ θ = θ t g(a_{t},\theta_{t})=q_{t}\frac{\partial log\pi(a_{t}|s_{t};\theta)}{\partial\theta}|_{\theta=\theta_{t}} g(at,θt)=qtθlogπ(atst;θ)θ=θt
  • 5.梯度上升更新参数: θ t + 1 = θ t + β ⋅ g ( a t , θ t ) \theta_{t+1}=\theta_{t}+\beta\cdot g(a_{t},\theta_{t}) θt+1=θt+βg(at,θt)

注意到一个问题,第3步,我们还不知道 Q π Q_{\pi} Qπ,所以不能计算 q t q_{t} qt,关于 q t q_{t} qt的计算,有两个方法:

第一种方法叫做Reinforce:

  • 先用策略网络去进行游戏,从开始一直到结束,记录轨迹: s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , . . . , s T , a T , r T s_{1},a_{1},r_{1},s_{2},a_{2},r_{2},...,s_{T},a_{T},r_{T} s1,a1,r1,s2,a2,r2,...,sT,aT,rT
  • 根据轨迹计算折扣回报,对于任意的 t t t都计算: u t = ∑ k = t T γ k − t r k u_{t}=\sum_{k=t}^{T}\gamma^{k-t}r_{k} ut=k=tTγktrk
  • 直接用 u t u_{t} ut近似 q t q_{t} qt q t = u t q_{t}=u_{t} qt=ut

对于这种方法,要求进行完整个游戏才能更新策略网络。

为了解决这个问题,可以采用第二种方法:新增神经网络近似 Q π Q_{\pi} Qπ函数,这使得模型具有两个神经网络,一个用于近似 Q π Q_{\pi} Qπ,一个用于近似 π \pi π,这就是Actor-Critic Methods。

Actor-Critic Methods

两个网络结合

在Actor-Critic Methods中,Actor用于谋划动作,Critic用于评价动作。该方法是策略学习和价值学习的结合。

在状态-价值函数中: V π ( s ) = ∑ a π ( a ∣ s ) ⋅ Q π ( s , a ) V_{\pi}(s)=\sum_{a}\pi(a|s)\cdot Q_{\pi}(s,a) Vπ(s)=aπ(as)Qπ(s,a)我们直接用策略网络 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(as;θ)近似策略函数,用价值网络 q ( s , a ; w ) q(s,a;w) q(s,a;w)近似动作-价值函数 Q π ( s , a ) Q_{\pi}(s,a) Qπ(s,a),其中, θ , w \theta,w θ,w均是可学习参数。

以超级玛丽为例,策略网络(Actor)为:
fig7
价值网络(Critic)为:
fig8
策略网络输入状态,输出动作的概率分布(向量)。

价值网络输入状态和动作的编码(离散型动作可以用One-hot向量编码),输出动作-价值得分(标量),即 Q π ( s , a ) Q_{\pi}(s,a) Qπ(s,a)

训练Actor与Critic

同时学习两个网络,让执行动作的策略越来越合理,对动作的评价也越来越准确。

我们现在可以得到状态-价值的表达: V ( s ; θ , w ) = ∑ a π ( a ∣ s ; θ ) ⋅ q ( s , a ; w ) V(s;\theta,w)=\sum_{a}\pi(a|s;\theta)\cdot q(s,a;w) V(s;θ,w)=aπ(as;θ)q(s,a;w)我们需要更新策略网络 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(as;θ)以使得 V ( s ; θ , w ) V(s;\theta,w) V(s;θ,w)更大。有趣的一点是,策略网络的目标实际是让agent的动作选择更优良,所以策略网络的监督信号来自价值网络;

我们也要更新价值网络 q ( s , a ; w ) q(s,a;w) q(s,a;w)以使得对价值的估计更精准。价值网络的目标是对动作做出更准确的评价,所以监督信号来自环境返回给agent的奖励。

更新参数的过程如下:

  • 1.观测到状态 s t s_{t} st
  • 2.通过策略网络的概率分布进行随机抽样: a t ∼ π ( ⋅ ∣ s t ; θ t ) a_{t}\sim\pi(\cdot|s_{t};\theta_{t}) atπ(st;θt)
  • 3.agent执行动作 a t a_{t} at,环境更新状态 s t + 1 s_{t+1} st+1,并返回奖励 r t r_{t} rt
  • 4.用TD算法更新价值网络 q ( s , a ; w ) q(s,a;w) q(s,a;w)的参数 w w w
  • 5.用policy gradient更新策略网络 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(as;θ)的参数 θ \theta θ

对于第4步,详细过程为(训练Critic):

  • 随机抽样动作: a t + 1 ∼ π ( ⋅ ∣ s t + 1 ; θ t ) a_{t+1}\sim\pi(\cdot|s_{t+1};\theta_{t}) at+1π(st+1;θt)
  • 计算 q ( s t , a t ; w t ) q(s_{t},a_{t};w_{t}) q(st,at;wt) q ( s t + 1 , a t + 1 ; w t ) q(s_{t+1},a_{t+1};w_{t}) q(st+1,at+1;wt)
  • 计算TD target: y t = r t + γ ⋅ q ( s t + 1 , a t + 1 ; w t ) y_{t}=r_{t}+\gamma\cdot q(s_{t+1},a_{t+1};w_{t}) yt=rt+γq(st+1,at+1;wt)
  • 计算损失: L ( w ) = 1 2 [ q ( s t , a t ; w t ) − y t ] 2 L(w)=\frac{1}{2}[q(s_{t},a_{t};w_{t})-y_{t}]^{2} L(w)=21[q(st,at;wt)yt]2
  • 梯度下降更新参数: w t + 1 = w t − α ⋅ ∂ L ( w ) ∂ w ∣ w = w t w_{t+1}=w_{t}-\alpha\cdot\frac{\partial L(w)}{\partial w}|_{w=w_{t}} wt+1=wtαwL(w)w=wt

对于第5步,详细过程为(训练Actor):

  • 使用第2步来自随机抽样的动作 a t a_{t} at
  • 计算policy gradient的近似值: g ( a , θ t ) = ∂ l o g π ( a t ∣ s t ; θ ) ∂ θ ⋅ q ( s t , a t ; w t ) ∣ θ = θ t g(a,\theta_{t})=\frac{\partial log\pi(a_{t}|s_{t};\theta)}{\partial\theta}\cdot q(s_{t},a_{t};w_{t})|_{\theta=\theta_{t}} g(a,θt)=θlogπ(atst;θ)q(st,at;wt)θ=θt实验发现,如果用以下式子代替 q ( s t , a t ; w t ) q(s_{t},a_{t};w_{t}) q(st,at;wt),最终的效果会更好,该式子为: q ( s t , a t ; w t ) − ( r t + γ q ( s t + 1 , a t + 1 ; w t ) ) q(s_{t},a_{t};w_{t})-(r_{t}+\gamma q(s_{t+1},a_{t+1};w_{t})) q(st,at;wt)(rt+γq(st+1,at+1;wt))
  • 梯度上升更新参数: θ t + 1 = θ t + β ⋅ g ( a , θ t ) \theta_{t+1}=\theta_{t}+\beta\cdot g(a,\theta_{t}) θt+1=θt+βg(a,θt)

当训练结束后,将不再使用到价值网络,我们仅根据策略网络选择动作即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值