首先放视频链接李宏毅老师深度强化学习课程

Actor-Critic算法简介

这是一种policy based和value based方法的结合。首先复习一下加了discount和baseline的policy gradient算法:
Rˉθ1Nn=1Nt=1Tn(t=tTnγttrtnb)logpθ(atnstn) \nabla \bar{R}_{\theta} \approx \frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}}\left(\sum_{t^{\prime}=t}^{T_{n}} \gamma^{t^{\prime}-t} r_{t^{\prime}}^{n}-b\right) \nabla \log p_{\theta}\left(a_{t}^{n} | s_{t}^{n}\right)
这里有一个问题,括号里的累计收益GtnG^n_t可能是一个很不稳定的随机变量,即state ss采取action aa后轨迹可能有很大不同。而我们sample的轨迹又不能是太多,可能就会相差很多。所以我们希望用期望值代替sample的值。这时候就需要引入value based方法。发现这个期望值刚好是QQ值,即
E[Gtn]=Qπθ(stn,atn) E\left[G_{t}^{n}\right]=Q^{\pi_{\theta}}\left(s_{t}^{n}, a_{t}^{n}\right)
这时候baseline可以用state value functionVπθ(stn)V^{\pi_{\theta}}\left(s_{t}^{n}\right),这样括号里就变成Qπ(stn,atn)Vπ(stn)Q^{\pi}\left(s_{t}^{n}, a_{t}^{n}\right)-V^{\pi}\left(s_{t}^{n}\right),看起来需要用两个网络来分别计算,现在考虑到:
Qπ(stn,atn)=E[rtn+Vπ(st+1n)] Q^{\pi}\left(s_{t}^{n}, a_{t}^{n}\right)=E\left[r_{t}^{n}+V^{\pi}\left(s_{t+1}^{n}\right)\right]
我们为了简单,把期望去掉,得到Qπ(stn,atn)=rtn+Vπ(st+1n)Q^{\pi}\left(s_{t}^{n}, a_{t}^{n}\right)=r_{t}^{n}+V^{\pi}\left(s_{t+1}^{n}\right),这样原式就可以换成rtn+Vπ(st+1n)Vπ(stn)r_{t}^{n}+V^{\pi}\left(s_{t+1}^{n}\right)-V^{\pi}\left(s_{t}^{n}\right),这便是优势函数版的actor-critic,即Advantage Actor-Critic。
训练的过程是交互——更新V网络——更新policy——再互动

Some tips

  1. 两个网络的前半部分可以共享
  2. 输出larger entropy,即更不确定的action,更鼓励探索。

A3C

关键在于加了多个worker,具体的过程如下

  1. 子worker复制全局的parameters
  2. 交互采样
  3. 计算梯度
  4. 更新全局parameters

Pathwise Derivative Policy Gradient

一种特别的AC算法,这个算法在于critic部分不但能告诉好与不好,还能指出要采用哪一个action。也可以理解为利用actor解决最大化Q的这个optimization problem。

【深度强化学习 三】Actor-Critic及衍生算法简介(李宏毅老师学习视频笔记)
直观理解就是利用π\pi输出一个action aa,放入Q网络后,能后使Q值尽可能的大。
【深度强化学习 三】Actor-Critic及衍生算法简介(李宏毅老师学习视频笔记)

感觉最关键一点就是利用π(si)\pi(s_i)产生aa,同时以最大化Q(si,π(si))Q\left(s_{i}, \pi\left(s_{i}\right)\right)π\pi的优化目标。

相关文章: