学习资料
深度强化学习课程-王树森
目录
- 一、 Value-based learning
- 二、 Deep Q-Network (DQN)
-
- 1. 原理
- 2. DQN结构(以超级玛丽为例)
- 3. 用DQN操作Agent打游戏
- 三、 Temporal Difference Learning(TD算法)
-
- 1. 原始算法(类似BP)
- 2. TD算法
- 3. 用TD算法学习DQN
-
【基本思想】学习一个函数来近似 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结构(以超级玛丽为例)
- 把屏幕画面(当前状态 s t s_t st)作为输入;
- 用一个卷积层把图片变为特征向量;
- 用几个全连接层把特征映射到一个输出向量,该输出的向量就是对动作的打分,向量的每一个元素对应一个动作的打分。
3. 用DQN操作Agent打游戏
- 当前观测到状态 s t s_t st;
- DQN将 s t s_t st作为输入,给所有动作打分,选出分数最高的动作作为 a t a_t at,agent执行动作 a t a_t at;
- 环境改变状态:用状态转移函数随机抽取新的状态 s t + 1 ∼ p ( ⋅ ∣ s t , a t ) s_{t+1}\sim p(\cdot | s_t,a_t) st+1∼p(⋅∣st,at),并给出奖励 r t r_t rt;
- 重复循环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(q−y)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} ∂w∂L=∂w∂q⋅∂q∂L=(q−y)⋅∂w∂Q(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−α⋅∂w∂L∣w=wt(用梯度下降更新模型参数 w w w,减小Loss,用 w t + 1 w_{t+1} wt+1进行预测,预测值会更接近真实值)
算法缺点:必须完成整个旅途才能对模型进行更新
2. TD算法
-
出发前模型预测 NYC→Atlanta:1000min (estimate)
-
真实观测 NYC→DC:300min (actual)
-
模型更新预测 DC→Atlanta:600min (estimate)
-
TD target:y=300+600=900min(包含事实成分,比最初的估计1000min更可靠)
【算法优点】
- TD target比最初的估计更准确,且越接近终点(Atlanta)越准;
- 不用跑完整个路程去得到真实的时间开销(在此案例中,到达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(1000−900)2
-
TD error: δ = Q ( w ) − y = 1000 − 900 = 100 \delta = Q(w)-y=1000-900=100 δ=Q(w)−y=1000−900=100
- 另一角度:
- 模型预测:NYC→Atlanta:1000min;DC→Atlanta:600min;NYC→DC:400min
- TD error: δ = 400 − 300 = 100 \delta =400-300=100 δ=400−300=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} ∂w∂L=(Q(w)−y)⋅∂w∂Q(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−α⋅∂w∂L∣w=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 estimate≈actual+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}} TNYC→ATL≈TNYC→DC+TDC→ATL
在深度强化学习中: 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 更新模型参数
- t t t时刻模型做出预测: Q ( s t , a t ; w t ) Q(s_t,a_t;w_t) Q(st,at;wt)
- 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)
- 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
- 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−α⋅∂w∂Lt∣w=wt