强化学习——价值学习

价值学习

首先引入折扣回报的概念, U t = R t + γ R t + 1 + γ 2 R t + 2 + . . . U_t=R_t+\gamma R_{t+1}+\gamma^2R_{t+2}+... Ut=Rt+γRt+1+γ2Rt+2+...,因此它依赖于action序列 A t , A t + 1 , A t + 2 , . . . A_t,A_{t+1},A_{t+2},... At,At+1,At+2,...以及状态序列 S t , S t + 1 , S t + 2 , . . . S_t,S_{t+1},S_{t+2},... St,St+1,St+2,...,而这两个都是随机变量满足

P [ A = a ∣ S = s ] = π ( a ∣ s ) , P [ S ′ = s ′ ∣ S = s , A = a ] = p ( s ′ ∣ s , a ) P[A=a|S=s]=\pi(a|s),P[S'=s'|S=s,A=a]=p(s'|s,a) P[A=aS=s]=π(as),P[S=sS=s,A=a]=p(ss,a)

其实际产生方式都是从分布中采样得到,所以折扣回报也是随机变量。

为了确定化折扣回报,引入其期望,动作价值函数:

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下做出动作 a t a_t at的回报(收益)。

Deep Q-Network(DQN)

不同的策略对应不同的动作价值函数,可以理解为策略的一种表现形式,最优者定义为 Q ∗ ( s , a ) Q^*(s,a) Q(s,a),据此最优的动作为

a ∗ = a r g m a x a Q ∗ ( s , a ) a^*=\mathop{argmax}\limits_{a}Q^*(s,a) a=aargmaxQ(s,a)

DQN的想法就是通过一个神经网络 Q ( s , a ; w ) Q(s,a;w) Q(s,a;w)去拟合这个最优的动作价值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)

训练方法:Temporal Difference (TD) learning

根据折扣回报的定义可以得到 U t = R t + γ U t + 1 U_t=R_t+\gamma U_{t+1} Ut=Rt+γUt+1

对上式两边求期望: E [ U t ] = E [ R t + γ U t + 1 ] E[U_t]=E[R_t+\gamma U_{t+1}] E[Ut]=E[Rt+γUt+1]

DQN的输出 Q ( s t , a t ; w ) Q(s_t,a_t;w) Q(st,at;w) Q ( s t + 1 , a t + 1 ; w ) Q(s_{t+1},a_{t+1};w) Q(st+1,at+1;w)是对 E [ U t ] E[U_t] E[Ut] E [ U t + 1 ] E[U_{t+1}] E[Ut+1]的估计,因此

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 \cdot Q(s_{t+1},a_{t+1};w) Q(st,at;w)rt+γQ(st+1,at+1;w)

其中约等于左边是预测,右边是TD对象,记为 y t y_t yt

t t t时刻做出预测 Q ( s t , a t ; w t ) Q(s_t,a_t;w_t) Q(st,at;wt),TD对象可以这样计算:

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 \cdot Q(s_{t+1},a_{t+1};w_t)=r_t+\gamma \cdot \mathop{max}\limits_{a}Q(s_{t+1},a;w_t) yt=rt+γQ(st+1,at+1;wt)=rt+γamaxQ(st+1,a;wt)

定义损失为 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

用梯度算法更新模型参数: 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

整个学习流程如下:

  1. 观测到状态 S t = s t S_t=s_t St=st以及行动 A t = a t A_t=a_t At=at
  2. 进行预测: q t = Q ( s t , a t ; w ) q_t=Q(s_t,a_t;w) qt=Q(st,at;w)
  3. 对价值网络求导: d t = ∂ Q ( s t , a t ; w ) ∂ w ∣ w = w t d_t=\frac{\partial Q(s_t,a_t;w)}{\partial w}|_{w=w_t} dt=wQ(st,at;w)w=wt
  4. 环境给出新状态 s t + 1 s_{t+1} st+1和奖励 r t r_t rt
  5. 计算TD对象: y t = r t + γ ⋅ m a x a Q ( s t + 1 , a ; w t ) y_t=r_t+\gamma \cdot \mathop{max}\limits_{a}Q(s_{t+1},a;w_t) yt=rt+γamaxQ(st+1,a;wt)
  6. 梯度下降: w t + 1 = w t − α ⋅ ( q t − y t ) ⋅ d t w_{t+1}=w_t-\alpha\cdot (q_t-y_t)\cdot d_t wt+1=wtα(qtyt)dt

思考与体会

强化学习和监督学习最大的区别是有没有显式的ground truth可以对训练进行监督。这里DL通过折扣回报关联了前后两个时刻,而且预测未来越短的时间动作序列具有越高的准确率,据此构造了一个隐式的ground truth,在TD算法中是TD对象,对模型参数进行更新。

reference
【王树森】深度强化学习(DRL):https://www.bilibili.com/video/BV12o4y197US

你可能感兴趣的:(机器学习,强化学习)