目录

1. 引言

2. 数学推导

2. 算法步骤


1. 引言

我们现在来学习一下强化学习中一种常用的算法:Sarsa算法。它常用于学习动作价值网络 Q_{\pi} ,它是通过Q表的形式进行决策,在 Q 表中挑选值较大的动作值施加在环境中来换取奖惩,也就是根据计算出来的Q值来作为选取动作的依据

2. 数学推导

我们知道动作价值函数 Q_{\pi}就是return对于随机变量state和action的期望值,即:

Q_\pi(s_t|a_t)=E[U_t|S_t=s_t,A_t=a_t]

我们之前推导过一个return的递推式:

U_t=R_t+\sum_{i=1}^{\infty}\gamma^i R_{t+i}=R_t+\gamma U_{t+1}

将其代入得到

Q_\pi(s_t|a_t)=E[U_t|S_t=s_t,A_t=a_t]=E[R_t+\gamma U_{t+1}|S_t=s_t,A_t=a_t]=E[R_t|S_t=s_t,A_t=a_t]+\gamma E[U_{t+1}|S_t=s_t,A_t=a_t]

我们知道 Q_{\pi}(S_{t+1},A_{t+1})就是U_{t+1}的期望,于是我们得到 Q_{\pi}(s_t,a_t)=E[R_t+\gamma Q_{\pi}(S_{t+1},A_{t+1})]

等式右端含有随机变量 R_t,S_{t+1},A_{t+1} ,我们使用 r_t 来近似R_t,用 Q_{\pi}(s_{t+1},a_{t+1}) 来近似,于是我们有Q_{\pi}(s_t,a_t)\approx E[r_t+\gamma Q_{\pi}(s_{t+1},a_{t+1})],又由于等式右端整体是一个期望不好计算,于是我们使用蒙特卡罗方法近似这个期望 ,我们将r_t+\gamma Q_{\pi}(s_{t+1},a_{t+1}) 看成TD target,这里的 Q_{\pi}(s_{t+1},a_{t+1}) 我们可以用查询Q表(状态动作价值表)得到接下来要想办法让Q_{\pi}(s_t,a_t)接近这个TD target。

Q表:

基本算法思路如下:

  1. 观测到一个state transition:(s_t,a_t,r_t,s_{t+1})
  2. 根据policy函数 \pi(\cdot|s_{t+1}) 抽取 a_{t+1} 
  3. 计算TD target y_t=r_t+\gamma Q_{\pi}(s_{t+1},a_{t+1})
  4. 计算TD error \delta_t=Q_{\pi}(s_t,a_t)-y_t
  5. 更新Q_{\pi}(s_{t},a_{t})\leftarrow Q_{\pi}(s_{t},a_{t})-\alpha\delta_t

其中第一步的transition序列加上s_{t+1}组成的五元组(s_t,a_t,r_t,s_{t+1},a_{t+1})就是Sarsa的名称的由来。 

2. 算法步骤

具体怎么实现呢?当然还是用神经网络啦:

  1. 用神经网络 q(s,a;w) 来近似Q_\pi(s,a)
  2. 计算TD target: y_t=r_t+\gamma q_(s_{t+1},a_{t+1};w)
  3. 计算TD error: \delta_t=q(s,a;w)-y_t
  4. 损失函数loss:\frac{\delta_t^2}{2}
  5. 梯度下降: w\leftarrow w-\alpha\delta_t\frac{\partial \,q(s,a;w)}{\partial \,w}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐