看漫画学强化学习

作者:  石塔西

爱好机器学习算法,以及军事和历史

知乎ID:https://www.zhihu.com/people/si-ta-xi

前言

之前通过线上课程学习David Silver的《强化学习》,留下深刻印象的是其中一堆堆的公式。公式虽然严谨,但是对于我来说,遇到实际问题时,我需要在脑海中浮现出一幅图或一条曲线,帮我快速定位问题。正所谓“一图胜千言”嘛。

最近终于找到了这样一幅图。国外有大神用漫画的形式讲解了强化学习中经典的Advantage-Actor-Critic(A2C)算法。尽管标题中只提及了A2C,实际上是将整个RL的算法思想凝结在区区几幅漫画中。

我很佩服漫画的作者,能够从复杂的公式中提炼出算法的精髓,然后用通俗易懂、深入浅出的方式展示出来。能够将厚书读薄,才能显现出一个人的功力。

有这样NB的神作,不敢独吞,调节一下顺序,补充一些背景知识,加上我自己的批注,分享出来,以飨读者。 原漫画的地址见:Intuitive RL: Intro to Advantage-Actor-Critic (A2C)

基本概念

强化学习中最基础的四个概念:Agent, State, Action, Reward

Agent:不用多说,就是你的程序,在这里就是这只狐狸。

Action: agent需要做的动作。在漫画中,就是狐狸在岔路口时,需要决定走其中的哪一条路。

State: 就是agent在决策时所能够掌握的所有信息。对于这只狐狸来说,既包括了决策当时的所见所闻,也包括了它一路走来的记忆。

Reward:选择不同的路,可能遇到鸟蛋(正向收益),也有可能遇到豺狼(负向收益)。

为什么Actor? 为什么Critic?

正如我之前所说的,Actor-Critic是一个混合算法,结合了Policy Gradient(Actor)与Value Function Approximation (Critic)两大类算法的优点。原漫画没有交待,一个agent为什么需要actor与critic两种决策机制。所以,在让狐狸继续探险之前,有必要先简单介绍一下Policy Gradient (策略梯度,简称PG)算法,后面的内容才好理解。

Policy Gradient看起来很高大上,但是如果类比有监督学习中的多分类算法,就很好理解了。两类算法的类比(简化版本)如下表所示,可见两者很相似

还是以狐狸在三岔路口的选择为例

比如考虑每步决策的直接收益的时间衰减,就是REINFORCE算法。

如果用V(S),即“状态值”state-value,来表示PG前的系数,并用一个模型来专门学习它,则这个拟合真实(不是最优)V(s)的模型就叫做Critic,而整个算法就是Actor-Critic算法。

因为篇幅所限,简单介绍一下V(s)与Q(s,a)。它们是Value Function Approximation算法中两个重要概念,著名的Deep Q-Network中的Q就来源于Q(s,a)。V(s)表示从状态s走下去能够得到的平均收益。它类似于咱们常说的“势”,如果一个人处于“优势”,无论他接下去怎么走(无论接下去执行怎样的action),哪怕走一两个昏招,也有可能获胜。具体精确的理解,还请感兴趣的同学移步David Silver的课吧。

重新回顾一下算法的脉络,所谓Actor-Critic算法

Actor负责学习在给定state下给各候选action打分。在action空间离散的情况下,就类似于多分类学习。

因为与多分类监督学习不同,每步决策时,不存在唯一正确的action,所以PG前面应该乘以一个系数,即likelihood ratio。如果用V(S),即state-value,来表示PG前的乘子,并用一个模型来专门学习它,则这个拟合V(s)的模型就叫做Critic,类似一个回归模型 。

如果用Critic预测值与真实值之间的误差,作为likelihood ratio,则PG前的乘子就有一个专门的名称,Advantage。这时的算法,就叫做Advantage-Actor-Critic,即A2C。

如果在学习过程中,引入异步、分布式学习,此时的算法叫做Asynchronous-Advantage-Actor-Critic,即著名的A3C。

狐狸的探险

上一节已经说明了狐狸(Agent)为什么需要actor-critic两个决策系统。则狐狸的决策系统可以由下图表示

state是狐狸做决策时所拥有的一切信息,包括它的所见所闻,还有它的记忆。

critic负责学习到准确的V(s),负责评估当前状态的“态势”,类似一个回归任务。

actor负责学习某状态下各候选action的概率,类似一个多分类任务。

在第一个路口

狐狸的critic觉得当前态势不错,预计从此走下去,今天能得20分,即V(s)=20

狐狸的actor给三条路A/B/C都打了分

狐狸按照A=0.8, B=C=0.1的概率掷了色子,从而决定走道路A(没有简单地选择概率最大的道路,是为了有更多机会explore)

沿A路走,采到一枚蘑菇,得1分

把自己对state value的估计值,采取的动作,得到的收益都记录下来

在接下来的两个路口,也重复以上过程:

狐狸的反思:更新Critic

毕竟这只狐狸还太年轻,critic对当前状态的估计可能存在误差,actor对岔道的打分也未必准确,因此当有了三次经历后,狐狸停下来做一次反思,更新一下自己的critic和actor。狐狸决定先更新自己的critic。

之前说过了,critic更像是一个“回归”任务,目标是使critic预测出的state value与真实state value越接近越好。以上三次经历的state value的预测值,狐狸已经记在自己的小本上了,那么问题来了,那三个state的真实state value是多少?

在如何获取真实state value的问题上,又分成了两个流派:Monte Carlo(MC)法与Temporal-Difference(TD)法。

MC法,简单来说,就是将一次实验进行到底,实验结束时的V(s)自然为0,然后根据Bellman方程回推实验中每个中间步骤的V(s),如下图所示(图中简化了Bellman方程,忽略了时间衰减)。MC法的缺点,一是更新慢,必须等一次实验结束,才能对critic/actor进行更新;二是因为V(s)是状态s之后能够获得的平均收益,实验越长,在每个步骤之后采取不同action导致的分叉越多,但是MC法仅仅依靠上一次实验所覆盖的单一路径就进行更新,显然导致high variance。

need-to-insert-img

另一种方法,TD法,就是依靠现有的不准确的critic进行bootstrapping,逐步迭代,获得精确的critic

如上图中狐狸的记事本所示,对于以上三步,狐狸既有了自己对当时state value的预测值,也有了那三个state value的“真实值”,上面的红字就是二者的差,可以用类似“回归”的方法最小化求解。

狐狸的反思:更新Actor

以上结论显然是不合适的,下次不选桥,难道要选狼与陷阱?!哪里出错了?

换个思路,

当初在岔路口时,狐狸对当时state value的预测是-100,

选择了破桥之后,根据critic bootstrapping推导回去,发现之前在岔路口时的状态还不至于那么差,“真实state value”=-20。

回头来看,选择“破桥”还改善了当时的处境,有80分的提升。

因此,之后在相同状态下(看见前路有狼、陷阱和破桥)选择“破桥”的概率,不仅不应该降低,反而还要提高,以鼓励这种明智的选择,显然更合情合理。

这里,某个状态s下的state value的“真实值”与预测值之间的差异,就叫做Advantage,拿advantage作为Policy Gradient之前的乘子,整个算法就叫做Advantage-Actor-Critic (A2C)。

Advantage

注意state value的“真实值”与预测值之间的差异在Actor与Critic上发挥的不同作用

在Actor中,这个差值就叫做Advantage,用来指导Actor应该鼓励还是抑制已经采取的动作。动作带来的Advantage越大,惊喜越大,下次在相同状态下选择这个动作的概率就应该越大,即得到鼓励。反之亦然。

在Critic中,这个差值就叫做Error,是要优化降低的目标,以使Agent对状态值的估计越来越准确。间接使Actor选择动作时也越来越准确。

其他

A2C的主要思路就这样介绍完毕了。在原漫画中,还简单介绍了A3C、Entropy Loss的思想,就属于旁枝末节,请各位看官们移步原漫画。其实A3C的思路也很简单(实现就是另一回事了),无非是让好几只狐狸并发地做实验,期间它们共享经验教训,以加速学习。

小结

本篇算是一个半原创吧,在翻译的同时,也增加了我对Actor-Critic的理解。

对于初学RL的同学,希望本文能够帮你们破除RL的神秘感,理清各算法发展的脉络,以后在David Silver课上看到那些公式时,能够有“似曾相识”的感觉。

对于掌握了RL基本算法的同学,也希望你们能够像我一样,当遇到实际问题时,先想到漫画中的小狐狸,定位问题,再去有的放矢地去翻书找公式。

很佩服原漫画的作者,能将复杂的公式、原理用如此通俗易懂、深入浅出的方式讲明白。再次向原作者致敬,Excellent Job !!!

作者其它好文推荐:

用NumPy手工打造Wide&Deep

作者:天善智能

链接://www.greatytc.com/p/ec7994cf3d29

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

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

推荐阅读更多精彩内容