深度强化学习之价值学习-王树森课程笔记

学习资料
深度强化学习课程-王树森

目录

  • 一、 Value-based learning
  • 二、 Deep Q-Network (DQN)
    • 1. 原理
    • 2. DQN结构(以超级玛丽为例)
    • 3. 用DQN操作Agent打游戏
  • 三、 Temporal Difference Learning(TD算法)
    • 1. 原始算法(类似BP)
    • 2. TD算法
    • 3. 用TD算法学习DQN
      • 3.1 应用条件
      • 3.2 更新模型参数

基本思想】学习一个函数来近似 Q ∗ Q^* Q函数

一、 Value-based learning

价值学习:学习最优价值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a),用 Q ∗ Q^* Q控制agent做动作:

  • 每观测到一个状态 s t s_t st,把 s t s_t st作为 Q ∗ Q^* Q函数的输入,用 Q ∗ Q^* Q函数对每一个动作做评价,得到每一个动作的Q值;
  • 选择让 Q ∗ Q^* Q函数最大化的动作 a a a作为下一个动作 a t a_t at a t = a r g m a x a Q ∗ ( s t , a ) a_t=argmax_aQ^*(s_t,a) at=argmaxaQ(st,a)

二、 Deep Q-Network (DQN)

1. 原理

本质:用一个神经网络Q(s, a; w)近似Q*(s, a)

  • 神经网络的参数:w
  • 神经网络的输入:状态s
  • 神经网络的输出:很多数值,这些数值是对所有可能的动作的打分,每一个动作对应一个分数

通过奖励来学习神经网络,神经网络给动作的打分就会逐渐改进,打分越来越准

奖励是强化学习中的监督信号,DQN靠奖励来训练。

2. DQN结构(以超级玛丽为例)

深度强化学习之价值学习-王树森课程笔记_第1张图片

  1. 把屏幕画面(当前状态 s t s_t st)作为输入;
  2. 用一个卷积层把图片变为特征向量;
  3. 用几个全连接层把特征映射到一个输出向量,该输出的向量就是对动作的打分,向量的每一个元素对应一个动作的打分。

3. 用DQN操作Agent打游戏

深度强化学习之价值学习-王树森课程笔记_第2张图片

  1. 当前观测到状态 s t s_t st
  2. DQN将 s t s_t st作为输入,给所有动作打分,选出分数最高的动作作为 a t a_t at,agent执行动作 a t a_t at
  3. 环境改变状态:用状态转移函数随机抽取新的状态 s t + 1 ∼ p ( ⋅ ∣ s t , a t ) s_{t+1}\sim p(\cdot | s_t,a_t) st+1p(st,at),并给出奖励 r t r_t rt
  4. 重复循环1~3直至游戏结束。

三、 Temporal Difference Learning(TD算法)

Temporal Difference Learning:用于训练DQN

以开车从NYC到Atlanta为例

1. 原始算法(类似BP)

  • 预测模型 Q ( w ) Q(w) Q(w)预测路程时长,参数为 w w w
  • 预测值 q = Q ( w ) q=Q(w) q=Q(w),出发前预测得到 q = 1000 q=1000 q=1000 min
  • 到达目的地得到真实值(target) y = 860 y=860 y=860 min
  • 损失函数Loss: L = 1 2 ( q − y ) 2 L=\frac{1}{2}(q-y)^2 L=21(qy)2
  • Gradient: ∂ 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)
  • Gradient descent: 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(用梯度下降更新模型参数 w w w,减小Loss,用 w t + 1 w_{t+1} wt+1进行预测,预测值会更接近真实值)
    • α \alpha α :学习率(步长)

算法缺点:必须完成整个旅途才能对模型进行更新

2. TD算法

  • 出发前模型预测 NYC→Atlanta:1000min (estimate)

  • 真实观测 NYC→DC:300min (actual)

  • 模型更新预测 DC→Atlanta:600min (estimate)

  • TD target:y=300+600=900min(包含事实成分,比最初的估计1000min更可靠)

    算法优点

    1. TD target比最初的估计更准确,且越接近终点(Atlanta)越准;
    2. 不用跑完整个路程去得到真实的时间开销(在此案例中,到达DC后算出y=900就可以更新模型了)
  • Loss: L = 1 2 ( Q ( w ) − y ) 2 = 1 2 ( 1000 − 900 ) 2 L=\frac{1}{2}(Q(w)-y)^2 =\frac{1}{2}(1000-900)^2 L=21(Q(w)y)2=21(1000900)2

  • TD error: δ = Q ( w ) − y = 1000 − 900 = 100 \delta = Q(w)-y=1000-900=100 δ=Q(w)y=1000900=100

    • 另一角度:
      • 模型预测:NYC→Atlanta:1000min;DC→Atlanta:600min;NYC→DC:400min
      • TD error: δ = 400 − 300 = 100 \delta =400-300=100 δ=400300=100
  • Gradient: ∂ L ∂ w = ( Q ( w ) − y ) ⋅ ∂ Q ( w ) ∂ w \frac{\partial L}{\partial w}=(Q(w)-y)\cdot \frac{\partial Q(w)}{\partial w} wL=(Q(w)y)wQ(w)

  • Gradient descent: 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

算法目标】让TD error δ \delta δ 尽量接近于0

3. 用TD算法学习DQN

3.1 应用条件

等式左边有一项,右边有两项,右边两项中有一项是真实观测到的,即: e s t i m a t e ≈ a c t u a l + e s t i m a t e estimate\approx actual+estimate estimateactual+estimate

如上述案例中: T N Y C → A T L ≈ T N Y C → D C + T D C → A T L {\color{red}T_{NYC\rightarrow ATL}} \approx {\color{#0070c0}T_{NYC \rightarrow DC}}+{\color{red}T_{DC \rightarrow ATL}} TNYCATLTNYCDC+TDCATL

在深度强化学习中: Q ( s t , a t ; w ) ⏟ Prediction ≈ r t + γ ⋅ Q ( s t + 1 , a t + 1 ; w ) ⏟ TD target \underbrace{{\color{red}Q(s_t,a_t;w)}}_{\text{Prediction}} \approx \underbrace{{\color{#0070c0}r_t}+{\color{red}\gamma\cdot Q(s_{t+1},a_{t+1};w)}}_{\text{TD target}} Prediction Q(st,at;w)TD target rt+γQ(st+1,at+1;w)

  • 相邻两个折扣回报之间的关系: U t = R t + γ ⋅ U t + 1 U_t={\color{#0070c0}R_t}+\gamma\cdot U_{t+1} Ut=Rt+γUt+1
    U t = R t + γ R t + 1 + γ 2 R t + 2 + γ 3 R t + 3 + ⋯ = R t + γ ( R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯   ) \begin{aligned} U_t &= R_t+\gamma R_{t+1}+\gamma ^2R_{t+2}+\gamma ^3 R_{t+3}+\cdots\\ &= R_t+\gamma (R_{t+1}+\gamma R_{t+2}+\gamma ^2 R_{t+3}+\cdots )\end{aligned} Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+=Rt+γ(Rt+1+γRt+2+γ2Rt+3+)
  • t t t时刻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 ] \Bbb E[U_t] E[Ut]
  • t + 1 t+1 t+1时刻DQN输出的值 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 ] \Bbb E[U_{t+1}] E[Ut+1]
  • 所以, Q ( s t , a t ; w ) ⏟ ≈ E [ U t ] ≈ E [ R t + γ ⋅ Q ( s t + 1 , a t + 1 ; w ) ] ⏟ ≈ E [ U t + 1 ] \underbrace{Q(s_t,a_t;w)}_{\approx \Bbb E[U_t]} \approx \Bbb E[R_t+\gamma\cdot \underbrace{Q(s_{t+1},a_{t+1};w)]}_{\approx \Bbb E[U_{t+1}]} E[Ut] Q(st,at;w)E[Rt+γE[Ut+1] Q(st+1,at+1;w)]

3.2 更新模型参数

  1. t t t时刻模型做出预测: Q ( s t , a t ; w t ) Q(s_t,a_t;w_t) Q(st,at;wt)
  2. t + 1 t+1 t+1时刻,观测到真实的奖励 r t r_t rt,新状态 s t + 1 s_{t+1} st+1,用DQN算出下一个动作 a t + 1 a_{t+1} at+1,从而计算出TD target
    a. 计算 a t + 1 a_{t+1} at+1:DQN对每一个动作打分,分数最高的动作被选出来作为 a t + 1 a_{t+1} at+1
    b. TD target:
    y t = r t + γ ⋅ Q ( s t + 1 , a t + 1 ; w t ) = r t + γ ⋅ max ⁡ a Q ( s t + 1 , a ; w t ) \begin{aligned}y_t&=r_t+\gamma \cdot Q(s_{t+1},a_{t+1};w_t)\\ &= r_t+\gamma \cdot \max_{a}Q(s_{t+1},a;w_t)\end{aligned} yt=rt+γQ(st+1,at+1;wt)=rt+γamaxQ(st+1,a;wt)
  3. Loss: L t = 1 2 [ Q ( s t , a t ; w ) − y t ] 2 L_t=\frac{1}{2}[Q(s_t,a_t;w)-y_t]^2 Lt=21[Q(st,at;w)yt]2
  4. Gradient descent: 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

深度强化学习之价值学习-王树森课程笔记_第3张图片

你可能感兴趣的:(机器学习,神经网络,深度学习)