基于价值的强化学习

基于价值的强化学习,说白了,就是智能体采取了一个动作,这个动作的好坏用一个评价标准来评价它—Q动作值函数。
在后续的动作中,可以通过Q的计算了解到采取什么动作最好,从而达到指导智能体行动的目的。
强化学习中使用 折扣回报来定义采取动作后得到的回报。

1. 折扣回报

定义: U t = R t + γ R t + 1 + γ 2 R t + 2 + γ 3 R t + 3 + … U_t = R_t + \gamma R_{t+1} + \gamma ^2 R_{t+2} + \gamma ^3 R_{t+3} + … Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+

该回报表示在t时刻得到的即时奖励和 t+1, t+2 …后得到的折扣奖励。

该折扣回报就是用来评价采取一个行动是好坏的标准,回报越高,说明采取的行动越好。

特性: U t U_t Ut回报是不确定的,因为它取决于状态动作

  1. P [ A = a ∣ S = s ] = π ( a ∣ s ) P [ A = a | S = s ] = \pi (a | s) P[A=aS=s]=π(as)策略函数
  2. P [ S ′ = s ′ ∣ S = s , A = a ] = p ( s ′ ∣ s , a ) P[S' = s' | S = s, A = a] = p(s' | s, a) P[S=sS=s,A=a]=p(ss,a) 状态转移概率

上述的策略和状态转移都是概率性的,所以折扣回报也是概率性的

2. action-value function 动作-值函数 Q ( s , a ) Q(s, a) Q(s,a)

可以反映在状态s下做动作a的好坏,其实也就是 U t U_t Ut的期望:

  • 动作值函数
    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下,采取动作a的期望回报

  • 最优动作值函数 Q ∗ Q^* Q
    Q ∗ ( s t , a t ) = max ⁡ π Q π ( s t , a t ) Q^*(s_t, a_t) = \max_\pi Q_\pi (s_t, a_t) Q(st,at)=maxπQπ(st,at)

状态s下,最优动作a时的期望回报

3. DQN (Deep Q-Network)

其实就是用一个神经网络近似Q函数

  • 求解 Q ∗ Q^* Q的用处:
    试想当你知道走那条路得到的回报高时,你还不知道怎么走吗?
    Q ∗ Q^* Q就是用于告诉智能体当前状态应当采取什么行动。
    a ∗ = a r g m a x a Q ∗ ( s , a ) a^* = argmax_aQ^*(s,a) a=argmaxaQ(s,a)

  • 如何找到 Q ∗ Q^* Q
    DQN: 使用神经网络 Q ( s , a ; w ) Q(s, a; \pmb{w}) Q(s,a;w)近似 Q ∗ ( s , a ) Q^*(s, a) Q(s,a)

w \pmb{w} w 代表神经网络参数

DQN的工作思路:
输入: 一帧图像
输出: 动作空间及概率

将图片经过卷积层提取特征向量, 再经过一层全连接映射到输出向量——就是对动作打分。在上图中就是对左右上三个动作打分。
请添加图片描述
将DQN应用到游戏中:

  1. 根据当前状态根据DQN选择最优动作;
  2. 动作产生后进入下一个状态,并返回回报;
  3. 重复1,2操作
    请添加图片描述

如何训练DQN: 最常用就是TD(Temporal Difference)算法

TD 时间差分算法

用来训练DQN神经网络

正常训练神经网路的方法:

  • 首先给网络输出一个预设值: q = Q ( w ) q = Q(\pmb{w}) q=Q(w)

q代表预设值

  • 完成一次试验得到一次观测值: 例如: y = 900 y = 900 y=900
  • 损失函数: L = 1 2 ( q − y ) 2 L = \frac{1}{2}(q-y)^2 L=21(qy)2 即预测值与观测值的方差

    这样我们用Loss损失函数对 w \pmb{w} w求偏导,即可更新 w \pmb{w} w

  • 梯度: δ L δ w = δ q δ w ⋅ δ L δ q = ( q − y ) . δ Q ( w ) δ w \frac{\delta L}{\delta w} = \frac{\delta q}{\delta w} \cdot \frac{\delta L}{\delta q} = (q - y) . \frac{\delta Q(w)}{\delta w} δwδL=δwδqδqδL=(qy).δwδQ(w)
  • 梯度下降更新 w \pmb{w} w: w t + 1 = w t − α ⋅ δ L δ w ∣ w = w t w_{t+1} = w_{t}-\alpha \cdot \frac{\delta L}{\delta w} | _{w=w_t} wt+1=wtαδwδLw=wt

而TD算法不用等一次试验跑完就可以更新模型了。
强化学习中有如下公式:
Q ( s t , a t ; w ) ≈ r t + γ ⋅ Q ( s t + 1 , a t + 1 ; w ) Q(s_t, a_t; \pmb{w}) \approx r_t + \gamma\cdot Q(s_{t+1}, a_{t+1}; \pmb{w}) Q(st,at;w)rt+γQ(st+1,at+1;w)

贝尔曼方程证明:
有: U t = R t + γ R t + 1 + γ 2 R t + 2 + γ 3 R t + 3 + γ 4 R t + 4 … U_t = R_t + \gamma R_{t+1} + \gamma ^2 R_{t+2} + \gamma ^3 R_{t+3} + \gamma^4 R_{t+4}… Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+γ4Rt+4
即: U t = R t + γ ⋅ ( R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 R t + 4 … ) U_t = R_t + \gamma\cdot( R_{t+1} + \gamma R_{t+2} + \gamma ^2 R_{t+3} + \gamma^3 R_{t+4}…) Ut=Rt+γ(Rt+1+γRt+2+γ2Rt+3+γ3Rt+4)
即: U t = R t + γ ⋅ U t + 1 U_t = R_t + \gamma \cdot U_{t+1} Ut=Rt+γUt+1
该状态动作奖励 = 即时奖励 + 未来折扣奖励

未来折扣奖励是预期的,但是本次的即时奖励是真实的
TD算法不用等到每一环的奖励都成为真实的再更新网络,
而是使用当下真实的奖励,和未来预期的奖励一起混合来
更新Q网络。即: r t r_t rt是真实的观测值,但 Q ( s t + 1 , a t + 1 ; w ) Q(s_{t+1}, a_{t+1}; \pmb{w}) Q(st+1,at+1;w)是理论预测的。

使用TD 算法训练神经网络

具体操作:
Q ( s t , a t ; w ) ≈ r t + γ ⋅ Q ( s t + 1 , a t + 1 ; w ) Q(s_t, a_t; \pmb{w}) \approx r_t + \gamma \cdot Q(s_{t+1}, a_{t+1}; \pmb{w}) Q(st,at;w)rt+γQ(st+1,at+1;w)
左边预测值 ≈ \approx 右边TD target
记右边项为: y t = r t + γ ⋅ Q ( s t + 1 , a t + 1 ; w ) y_t = r_t + \gamma \cdot Q(s_{t+1}, a_{t+1}; \pmb{w}) yt=rt+γQ(st+1,at+1;w)
= r t + γ ⋅ m a x a Q ( s t + 1 , A ; w ) =r_t + \gamma \cdot max_a Q(s_{t+1}, A; \pmb{w}) =rt+γmaxaQ(st+1,A;w)
Loss损失函数: L t = 1 2 [ Q ( s t , a t ; w ) − y t ] 2 L_t = \frac{1}{2}[Q(s_t,a_t;\pmb{w}) - y_t]^2 Lt=21[Q(st,at;w)yt]2
梯度下降: w t + 1 = w t − α ⋅ δ L t δ w ∣ w = w t w_{t+1} = w_{t}-\alpha \cdot \frac{\delta L_t}{\delta w} | _{w=w_t} wt+1=wtαδwδLtw=wt

总结

Q ∗ ( s t , a t ) = m a x π E [ U t ∣ S t = s t , A t = a t ] Q^*(s_t, a_t) = max_{\pi}E[U_t|S_t=s_t, A_t=a_t] Q(st,at)=maxπE[UtSt=st,At=at]
首先使用E求期望,忽略掉除S,A之外的其他因素的影响。
其次是用 m a x π max_\pi maxπ使用最优的策略 π \pi π从而忽略掉策略对Q的影响。
从而使用Q 只关注S,而驱动agent做动作A

TD algorithm:
伪代码:

  1. 观测当前状态 s_t 和 a_t
  2. 用DQN网络作一次预测: q t = Q ( s t , a t ; w t ) q_t = Q(s_t, a_t; \pmb{w_t}) qt=Q(st,at;wt)
  3. 用反向传播对DQN 求导,得到梯度 d t = δ Q ( s t , a t ; w ) δ w ∣ w = w t d_t= \frac{\delta Q(s_t, a_t; \pmb{w})}{\delta \pmb{w}} |_{\pmb{w=w_t}} dt=δwδQ(st,at;w)w=wt
  4. 环境本身会更新 S t + 1 S_{t+1} St+1 r t r_t rt
  5. 计算观测到的TD target: y t = r t + γ ⋅ m a x a Q ( s t + 1 , a ; w t ) y_t = r_t + \gamma \cdot max_aQ(s_{t+1}, a; \pmb{w_t}) yt=rt+γmaxaQ(st+1,a;wt)

r t r_t rt 是观测到的 γ ⋅ m a x a Q ( s t + 1 , a ; w t ) \gamma \cdot max_aQ(s_{t+1}, a; \pmb{w_t}) γmaxaQ(st+1,a;wt)是通过DQN再次预测的。

  1. 作一次梯度下降,更新w: w t + 1 = w t − α ⋅ ( q t − y t ) ⋅ d t \pmb{w_{t+1} }= \pmb{w_t} - \alpha \cdot (q_t - y_t)\cdot d_t wt+1=wtα(qtyt)dt
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值