系列论文阅读——Policy Gradient Algorithms and so on(2)

发个库存,嘻嘻,这篇主要讲AC类算法

演员-评论家算法(Actor-Critic)

上文公式中我们采用的累计回报和(G_t=\sum^{T-t}_{k=0}R_{t+k+1}),虽然它是期望收益的无偏估计,但由于只使用了一个样本,存在方差非常大的问题,在这里我们用Q^\pi(s,a)代替原来公式中的累计回报:
Qπ(s,a)=E_{\pi_\theta}[\sum_{t=0}^{T}r_t| s_0=s,a_0=a]\\ \begin{aligned} \nabla_\theta J(\theta) &=E_{s\sim \rho_\pi,a \sim \pi_\theta}\left[\sum^T_{t=0}\nabla_{\theta} log \ \pi_{\theta}(a_{t}|s_{t})Q_\pi(s_{t},a_{t})\right] \\ &\approx \frac{1}{N}\sum_{n=0}^N\left[\sum^T_{t=0}\nabla_{\theta} log \ \pi_{\theta}(a_{i,t}|s_{i,t})Q_\pi(s_{i,t},a_{i,t})\right]\\ \end{aligned}
若同时加入值函数作为baseline:
V_\pi(s)=E_{\pi_\theta}\left[\sum_{t=0}^Tr_t|s_0=s\right]
此时,梯度函数可以转为:
\begin{aligned} \nabla_\theta J(\theta) &\approx \frac{1}{N}\sum^N_{i=0}\sum^T_{t=1}\bigtriangledown_\theta\log\pi_\theta(a_{i,t}|s_{i,t})\left[Q(s_{i,t},a_{i,t})-V(s_i)\right] \\ &= \frac{1}{N}\sum^N_{i=0}\sum^T_{t=1}\bigtriangledown_\theta\log\pi_\theta(a_{i,t}|s_{i,t})A(s_{i,t},a_{i,t}) \end{aligned}

A (s_t,a_t)为优势函数,表明了在s_t下,采取某个a_t能比该策略下的平均期望收益优劣多少,这就是A2C 和A3C的灵魂公式了。

如果用采样代替期望,那么Q,A都可以被近似为和V相关的函数:
\begin{aligned} Q_\pi(s_t,a_t) &= r(s_t,a_t) + E_{s_{t+1}\sim p(s_{t+1}|s_t,a_t)}\left[V_\pi(S_{t+1})\right] \\ &\approx r(s_t,a_t) + V_\pi(S_{t+1}) \end{aligned}

A_\pi(s_t,a_t) \approx r(s_t,a_t) + \gamma V_\pi(s_{t+1}) - V_\pi(S_t)

我们可以使用蒙特卡洛、TD等方法通过神经网络拟合V。这种方法被称为表演家-评论家算法,很直白的解释就是,表演家(\pi_\theta)做出动作,而评论家(V_w)对动作进行打分,表演家根据分数进行提升。

下面给出一种在线AC算法过程:
 1.随机化策略函数和价值函数的参数\theta,w
 2.循环:
  a.使用当前策略\pi_\theta产生一条完整的迹:\tau=(s_0,a_0,s_1,a_1,s_2,a_2,s_3......s_T)
  b.对于每个时间步骤t=T,......2,1: # 从后往前计算G_t的效率更高
   i.评论家网络根据根据s_t和输出V(s_t),V(s_{t+1})
   ii.计算TD误差:\delta=G_t-V(s_t)
   iii.使用mse作为损失函数更新批评家网络参数:w←w+α_wδt∇_wV_w(s)
   iv.评估优势函数:A_w(s_t,a_t)=r_{t+1} + \gamma V_w(s_{t+1}) - V_w(s_t)
   v.更新表演家网络参数:\theta \leftarrow \theta + \alpha_\theta ∇_\theta \log \pi(s_t,a_t)A_w(s_t,a_t)

值得一提的是,AC算法中的critic并非只有上文优势函数一种,还可以是:

基于状态函数V_w(a,s)更新参数的:
\theta \leftarrow \theta + \alpha_\theta ∇_\theta \log \pi(s_t,a_t)V_w(s_t)
基于状态-动作函数Q_w(a,s)更新参数的:
\theta \leftarrow \theta + \alpha_\theta ∇_\theta \log \pi(s_t,a_t)Q_w(s_t,a_t)
基于TD error\delta更新参数的:
\delta(t) = r_{t+1} + \gamma V_w(s_{t+1}) - V_w(s_t) \\ or \\ \delta(t) = r_{t+1} + \gamma Q_w(s_{t+1},a_{t+1}) - Q_w(s_t,a_t)

\theta \leftarrow \theta + \alpha_\theta ∇_\theta \log \pi(s_t,a_t)\delta(t)

表演家和评论家的两个网络可以共享参数也可以不共享,不共享的好处是相对简单稳定,缺点是表演家和评论家没有建立起共享的特征,参数量和计算量也巨大,但如果使用同一个网络,两个输出,因为V,\pi会往不同方向推动共享参数,所以会带来网络不稳定的问题。

A3C 和 A2C

如上文单纯的只用一个样本去估计梯度更新值函数,存在方差大的问题,也导致了训练难以收敛。想要扩大batch size,除了多采样几次,降低更新策略频率,一个更有效的方法就是并行——开多个线程一起去和环境交互获取样本。

A3C算法就是异步优势演员-评论家方法的缩写,它的三个关键思想是:(1)交互得到固定长度的一段经验,并用它去估计累计回报和优势函数(2)策略函数和价值函数共享网络结构(3)异步更新。

而A2C去掉了异步(更新)。两个算法都使用多个agent同时与多个环境交互产生批量样本用来更新参数。不同的地方在于A2C有一个同步点(如下图左),多个agent与环境交互得到的样本,并用样本数据计算梯度,等到同步的时间点,多个智能体的梯度累加起来一起更新参数,因此,不同的agent上的参数始终是一致的,且batch size = agent数量 * 每个agent采的batch size;而A3C去掉了同步的点,每个agnet独立的与环境交互一定的时间步骤,并得到累计梯度,异步的push和pull master(保存了全局参数)的参数,因此同一时刻,不同的agent可能使用不同版本的参数。它的batch size就是每个agent的batch size。

openai提到(OpenAI Baselines: ACKTR & A2C),一方面尚未看到任何证据证明异步更新引入的噪声能够提供任何性能收益,另一方面,A2C 相对于A3C的优势在于它能够更有效的利用GPU,能够适应更大的批量大小,且在效果上,A2C也比A3C更好。

A2C 和A3C对比

下面给出A3C的算法过程
A3C.png

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335