强化学习算法(一)A3C

姓名:张轩

学号:20011214440

【嵌牛导读】最近在学习和研究中主要在学习强化学习,在强化学习中的一种有效利用计算资源,并且能提升训练效用的算法, Asynchronous Advantage Actor-Critic, 简称 A3C。下面我将对这个算法进行介绍。

【嵌牛鼻子】强化学习,A3C  

【嵌牛正文】

       最近在学习和研究中主要在学习强化学习,在强化学习中的一种有效利用计算资源,并且能提升训练效用的算法, Asynchronous Advantage Actor-Critic, 简称 A3C。下面我将对这个算法进行介绍。

平行宇宙


       我们先说说没什么关系的,大家知道平行宇宙这回事。想像现在有三个平行宇宙,那么就意味着这3个平行宇宙上存在3个你, 而你可能在电脑前呆了很久, 对, 说的就是你! 然后你会被我催促起来做运动~ 接着你和二号你还有三号你,就无奈地在做着不同的运动。不过这3个你 都开始活动胫骨啦。假设3个你都能互相通信, 告诉对方, “我这个动作可以有效缓解我的颈椎病”, “我做那个动作后, 腰就不痛了 “, “我活动了手臂, 肩膀就不痛了”。这样你是不是就同时学到了对身体好的三招。这样是不是感觉特别有效率。让你看看更有效率的,就像小学初中的时候英语老师要求抄写单词或者语文老师要求抄写生字、生词一样。我们很多人会把多根笔绑到一起同时抄写一样,效率很高。如果把这种方法用到强化学习,将会事半功倍。

平行训练


       这就是传说中的A3C. A3C其实只是这种平行方式的一种而已, 它采用的是我们之前提到的 Actor-Critic 的形式. 为了训练一对 Actor 和 Critic, 我们将它复制多份红色的, 然后同时放在不同的平行宇宙当中, 让他们各自玩各的. 然后每个红色副本都悄悄告诉黑色的 Actor-Critic 自己在那边的世界玩得怎么样, 有哪些经验值得分享. 然后还能从黑色的 Actor-Critic 这边再次获取综合考量所有副本经验后的通关秘籍. 这样一来一回, 形成了一种有效率的强化学习方式.

多核训练


       我们知道目前的计算机多半是有双核, 4核, 甚至 6核, 8核. 一般的学习方法, 我们只能让机器人在一个核上面玩耍. 但是如果使用 A3C 的方法, 我们可以给他们安排去不同的核, 并行运算. 实验结果就是, 这样的计算方式往往比传统的方式快上好多倍. 那我们也多用用这样的红利吧.

       说了这么多背景知识帮助大家理解A3C,下面将用专业的语言来解释A3C

1.A3C的引入

  在A3C之前有Actor-Critic算法,但是其实很难收敛,无论怎么调参,最后的CartPole都很难稳定在200分,这是Actor-Critic算法的问题。但是我们还是有办法去有优化这个难以收敛的问题的。

  还有一种算法叫DQN算法,为了方便收敛使用了经验回放的技巧。那么我们的Actor-Critic是不是也可以使用经验回放的技巧呢?当然可以!不过A3C更进一步,还克服了一些经验回放的问题。经验回放有什么问题呢? 回放池经验数据相关性太强,用于训练的时候效果很可能不佳。举个例子,我们学习下棋,总是和同一个人下,期望能提高棋艺。这当然没有问题,但是到一定程度就再难提高了,此时最好的方法是另寻高手切磋。

  A3C的思路也是如此,它利用多线程的方法,同时在多个线程里面分别和环境进行交互学习,每个线程都把学习的成果汇总起来,整理保存在一个公共的地方。并且,定期从公共的地方把大家的齐心学习的成果拿回来,指导自己和环境后面的学习交互。

通过这种方法,A3C避免了经验回放相关性过强的问题,同时做到了异步并发的学习模型。

2. A3C的算法优化

  现在我们来看看相比Actor-Critic,A3C到底做了哪些具体的优化。

相比Actor-Critic,A3C的优化主要有3点,分别是异步训练框架,网络结构优化,Critic评估点的优化。其中异步训练框架是最大的优化。

我们首先来看这个异步训练框架,如下图所示:

  图中上面的Global Network就是上一节说的共享的公共部分,主要是一个公共的神经网络模型,这个神经网络包括Actor网络和Critic网络两部分的功能。下面有n个worker线程,每个线程里有和公共的神经网络一样的网络结构,每个线程会独立的和环境进行交互得到经验数据,这些线程之间互不干扰,独立运行。

       每个线程和环境交互到一定量的数据后,就计算在自己线程里的神经网络损失函数的梯度,但是这些梯度却并不更新自己线程里的神经网络,而是去更新公共的神经网络。也就是n个线程会独立的使用累积的梯度分别更新公共部分的神经网络模型参数。每隔一段时间,线程会将自己的神经网络的参数更新为公共神经网络的参数,进而指导后面的环境交互。

       可见,公共部分的网络模型就是我们要学习的模型,而线程里的网络模型主要是用于和环境交互使用的,这些线程里的模型可以帮助线程更好的和环境交互,拿到高质量的数据帮助模型更快收敛。

       现在我们来看看第二个优化,网络结构的优化。之前在强化学习(十四) Actor-Critic中,我们使用了两个不同的网络Actor和Critic。在A3C这里,我们把两个网络放到了一起,即输入状态S,可以输出状态价值V,和对应的策略π, 当然,我们仍然可以把Actor和Critic看做独立的两块,分别处理,如下图所示:

  第三个优化点是Critic评估点的优化,在强化学习(十四) Actor-Critic第2节中,我们讨论了不同的Critic评估点的选择,其中d部分讲到了使用优势函数A来做Critic评估点,优势函数A在时刻t不考虑参数的默认表达式为:A(S,A,t)=Q(S,A)−V(S)

Q(S,A)的值一般可以通过单步采样近似估计,即:Q(S,A)=R+γV(S′)

  这样优势函数去掉动作可以表达为:A(S,t)=R+γV(S′)−V(S)

  其中V(S)的值需要通过Critic网络来学习得到。

       在A3C中,采样更进一步,使用了N步采样,以加速收敛。这样A3C中使用的优势函数表达为: A(S,t)=Rt++γRt+1+...γn−1Rt+n−1+γnV(S′)−V(S)

  对于Actor和Critic的损失函数部分,和Actor-Critic基本相同。有一个小的优化点就是在Actor-Critic策略函数的损失函数中,加入了策略π的熵项,系数为c, 即策略参数的梯度更新和Actor-Critic相比变成了这样:θ=θ+α∇θlogπθ(st,at)A(S,t)+c∇θH(π(St,θ))

  以上就是A3C和Actor-Critic相比有优化的部分。下面我们来总结下A3C的算法流程。

3. A3C算法流程

  这里我们对A3C算法流程做一个总结,由于A3C是异步多线程的,我们这里给出任意一个线程的算法流程。

  输入:公共部分的A3C神经网络结构,对应参数位θ,w,本线程的A3C神经网络结构,对应参数θ′,w′, 全局共享的迭代轮数T,全局最大迭代次数Tmax, 线程内单次迭代时间序列最大长度Tlocal,状态特征维度n, 动作集A, 步长α,β,熵系数c, 衰减因子γ

  输入:公共部分的A3C神经网络参数θ,w

  1.更新时间序列t=1

  2.重置Actor和Critic的梯度更新量:dθ←0,dw←0

  3.从公共部分的A3C神经网络同步参数到本线程的神经网络:θ′=θ,w′=w

  4. t_{start} =t,初始化状态s_{t}

  5.基于策略π(a_{t}|s_{t};θ)选择出动作a_{t}

  6.执行动作a_{t}得到奖励r_{t}和新状态s_{t+1}

  7.t←t+1,T←T+1

  8.如果是s_{t}终止状态,或t−tstart==tlocal,则进入步骤9,否则回到步骤5

       9.计算最后一个时间序列位置s_{t}Q(s,t)

        10. fori∈(t−1,t−2,...tstart):

          1)计算每个时刻的:Q(s,t):Q(s,i)=r_{i}+γQ(s,i+1)

        2)累计Actor的本地梯度更新:

        3)累计Critic的本地梯度更新:

       11.更新全局神经网络的模型参数:θ=θ−αdθ,w=w−βdw

       12.如果T>Tmax,则算法结束,输出公共部分的A3C神经网络参数θ,w,否则进入步骤3


       以上就是A3C算法单个线程的算法流程。

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