前言

本节内容只是强化学习的一些入门(皮毛,Scratching the surface)先是从例子讲起,然后还是以红白机上的小蜜蜂为例,讲解了当下AL比较流行的Policy-based,并进行了的机器学习三板斧分析。
公式输入请参考:在线Latex公式

Overview概述

David Silver(大卫·希尔弗曼,阿法狗的作者,貌似b站有他专门讲强化学习的视频)给出的说法:
Deep Reinforcement Learning: AI=RL+DL

小栗子

红字State是Agent观察到的environment的结果,一般都是partial的。Action会和环境有一些互动,造成一些影响。
李宏毅学习笔记23.Deep Reinforcement Learning
李宏毅学习笔记23.Deep Reinforcement Learning
可以看到Agent(机器)学习的目标是学习采取什么样的Action使得Reward最大化。

play Go

这里agent观察的是棋盘,采取的Action是落子(这里落的三之三,围棋不会,听老师说的瞎写),environment是对手
李宏毅学习笔记23.Deep Reinforcement Learning
李宏毅学习笔记23.Deep Reinforcement Learning
这里的Reward就是输赢,当然大多数时候还未分胜负。这里也是RL比较困难的地方,大多数的时候action是没有reward,这个时候也无法去判断这个action是否正确,如何在少数reward的情况下如何去发觉正确的action。

Supervised v.s. Reinforcement

李宏毅学习笔记23.Deep Reinforcement Learning
Alpha Go is supervised learning + reinforcement learning.
先supervised learning学得不错之后才reinforcement learning(这个阶段是train两个模型对下).
聊天机器人:
李宏毅学习笔记23.Deep Reinforcement Learning
这里在训练过程让人参与也不太现实,也是根据play Go的训练方式,让两个模型自己对话。
李宏毅学习笔记23.Deep Reinforcement Learning
但是对话不像围棋,围棋的输赢是可以用程序来判断的,但是上面机器的对话如何判断好坏?这个还未解决,目前文献Deep Reinforcement Learning for Dialogue Generation 给出的解决方法是用基于规则的判断。如下:
李宏毅学习笔记23.Deep Reinforcement Learning
老师也给出自己思路:(整个思路有点像迁移学习中的Domain-adversarial training)用一个模型X去学习人类之间的正常对话,用强化学习模型Y去学习对话,并且使得对话的结果(向量化)要可以骗过模型X。
这个还能用于人机交互:
李宏毅学习笔记23.Deep Reinforcement Learning

另外一个栗子:玩游戏(Warning of Game)

Widely studies:
Gym: https://gym.openai.com/
Universe: https://openai.com/blog/universe/
李宏毅学习笔记23.Deep Reinforcement Learning
这个玩游戏不是内建程序读取数据然后玩游戏,做判断,而是直接根据屏幕的输出来玩,貌似还有很多三维游戏,不知道现在有没有类似的网游外挂。
下面是一个具体的例子,这个游戏玩过红白机的都知道,小蜜蜂。。。老师还贴心的给出了玩法介绍。
李宏毅学习笔记23.Deep Reinforcement Learning
接下来看机器怎么通过观察屏幕来这个游戏,一开始看到屏幕是s1s_1,实际上是一个matrix,还是三维的,因为是rgb的,然后agent有三个选择(左、右、开火),这里是往右移动,没有得到reward r1r_1(左上角的分数),采取了action之后,影响了环境(当然环境的变化和action不一定有关系,这里敌方也会随机左右移动,或者进攻),得到s2s_2,agent决定开火,干掉敌方,得到5的reward r2r_2,然后这个循环不断进行下去。
李宏毅学习笔记23.Deep Reinforcement Learning
进行到某一循环,绿色飞机可能被击中,game over,这个过程称为一个episode。机器就是不断的去玩这个游戏,目标是在一个episode里面最大化reward(干掉最多的外星人)。
李宏毅学习笔记23.Deep Reinforcement Learning

难点小结

Reward delay
In space invader, only “fire” obtains reward. Although the moving before “fire” is important
只有开火会有reward,学出来的模型就只会开火,不移动是会game over的,但移动是不会得到reward。
In Go playing, it may be better to sacrifice immediate reward to gain more long-term reward
围棋里面也有类似情况:牺牲小子赢大局
Agent’s actions affect the subsequent data it receives
E.g. Exploration
探索environment在RL里面也是非常重要的事情,就是学游戏怎么玩。

本节要点

李宏毅学习笔记23.Deep Reinforcement Learning
RL分有两大流派,value-based是之前的的,policy-based是当前的,两个方法的思路见蓝字,老师给出当前RL的最强模型,A3C(Asynchronous Advantage Actor-Critic ):
Volodymyr Mnih, Adrià Puigdomènech Badia, Mehdi Mirza, Alex Graves, Timothy P. Lillicrap, Tim Harley, David Silver, Koray Kavukcuoglu, “Asynchronous Methods for Deep Reinforcement Learning”, ICML, 2016
还提到了强化学习的Bible。

Policy-based Approach: Learning an Actor

Actor实际上就是function,用ππ来表示,它的输入是机器看到的observation,输出是机器要采取的Action,我们要通过reward来找出最佳的ππ
李宏毅学习笔记23.Deep Reinforcement Learning
PS:在有些文献上Actor又叫Policy。回到机器学习的三板斧:
李宏毅学习笔记23.Deep Reinforcement Learning
下面就是套用这个三板斧的步骤展开来讲。

步骤一:Neural Network as Actor

李宏毅学习笔记23.Deep Reinforcement Learning
传统的做法是把action保存到table中,然后看到某个environment就采取某个action,但是这样的做法这里并不适用,因为这里输入是pixel,NN的好处就是它会举一反三,场景没有看过也能搞定,也就是比较generalization

步骤二:Goodness of Actor

这里看下之前的做法:
李宏毅学习笔记23.Deep Reinforcement Learning
在RL中,和上面是比较类似的:
李宏毅学习笔记23.Deep Reinforcement Learning
其中πθ(s)\pi_\theta(s)是actor函数,θ\theta是参数,然后用这个函数去玩这个游戏,玩完之后得到的Total reward(这个episode的reward的总和)为:
Rθ=t=1TrtR_\theta=\sum_{t=1}^Tr_t
这个RθR_\theta就是要最小化的目标对象,而不是其中某一个action获得的reward。
但是就算是同一个actor,RθR_\theta也是不一样的,这里有两个原因(Randomness in the actor and the game):

  • actor遇到相同场景采取的动作是Stochastic的
  • 游戏本身也有很多随机性
    也就是说RθR_\theta是一个随机数。我们就用RθR_\theta的期望值(玩游戏很多次的均值)Rθ\overline{R}_\theta,我们希望Rθ\overline{R}_\theta越大越好。Rθ\overline{R}_\theta evaluates the goodness of an actor πθ(s)\pi_\theta(s)
    期望值Rθ\overline{R}_\theta如何计算?
    我们用τ\tau(念:涛)来代表一个episode所包含的东西,它是一个sequence:
    τ={s1,a1,r1,s2,a2,r2,...,sT,aT,rT}\tau=\{s_1,a_1,r_1,s_2,a_2,r_2,...,s_T,a_T,r_T\}
    Total reward:
    R(τ)=n=1NrnR(\tau)=\sum_{n=1}^Nr_n
    如果用一个actor去玩这个游戏,那么每一个τ\tau都有一个出现的几率(If you use an actor to play the game, each ???? has a probability to be sampled ),也就是说τ\tau代表从游戏开始到结束的过程,这个过程有很多很多种,当你选择了某个actor,那么有些τ\tau(游戏的过程)容易出现,例如很笨的τ\tau容易game over。这些游戏过程出现几率我们可以用P(τθ)P(\tau|\theta)表示,则有:
    (1)Rθ=τR(τ)P(τθ)\overline R_\theta=\sum_{\tau}R(\tau)P(\tau|\theta) \tag{1}
    就是对τ\tau出现的几率与τ\tau对应的reward的乘积进行求和。但是要穷举所有的τ\tau是不可能的,只能用πθ\pi_\theta玩N次游戏,得到{τ1,τ2,...,τN}\{\tau^1,\tau^2,...,\tau^N\}(相当于N笔training data,或者说相当于sampling τ\tau from P(τθ)P(\tau|\theta) NN times),则公式(1)变为:
    Rθ=τR(τ)P(τθ)1Nn=1NR(τn)\overline R_\theta=\sum_{\tau}R(\tau)P(\tau|\theta)≈\frac {1}{N}\sum_{n=1}^NR(\tau^n)
    上式中τ\sum_{\tau} P(τθ)P(\tau|\theta)1Nn=1N\frac {1}{N}\sum_{n=1}^N是约等于的关系。

步骤三:Pick the best function

使用的方法是GA,先来看问题的描述:
θ=argmaxθRθ\theta^*=arg\underset{\theta}{max} \overline R_\theta
就是要找到参数θ\theta^*使得Rθ\overline R_\theta最大化。
李宏毅学习笔记23.Deep Reinforcement Learning
其中:
李宏毅学习笔记23.Deep Reinforcement Learning
下面具体计算
要求Rθ\triangledown\overline R_\theta,也就是Rθ\overline R_\thetaθ\theta的偏导,由于公式:
(1)Rθ=τR(τ)P(τθ)\overline R_\theta=\sum_{\tau}R(\tau)P(\tau|\theta) \tag{1}
中只有P(τθ)P(\tau|\theta)是与θ\theta有关,因此:
Rθ=τR(τ)P(τθ)\triangledown\overline R_\theta=\sum_{\tau}R(\tau)\triangledown P(\tau|\theta)
R(τ)R(\tau)可以是不可微的,也可以是blackbox,继续变化:
(2)Rθ=τR(τ)P(τθ)=τR(τ)P(τθ)P(τθ)P(τθ)\triangledown\overline R_\theta=\sum_{\tau}R(\tau)\triangledown P(\tau|\theta) =\sum_{\tau}R(\tau)P(\tau|\theta)\frac{\triangledown P(\tau|\theta)}{P(\tau|\theta)}\tag{2}
由于:dlog(f(x))dx=1f(x)df(x)dx\frac{dlog\left (f(x)\right )}{dx}=\frac{1}{f(x)}\frac{df(x)}{dx},公式(2)变为:
(3)τR(τ)P(τθ)logP(τθ)\sum_{\tau}R(\tau)P(\tau|\theta)\triangledown logP(\tau|\theta)\tag{3}
和上面一样的,τ\sum_{\tau}P(τθ)P(\tau|\theta)1Nn=1N\frac {1}{N}\sum_{n=1}^N是约等于的关系,因此有:
(3)1NR(τn)logP(τnθ)(3)≈\frac{1}{N}R(\tau^n)\triangledown logP(\tau^n|\theta)
下面计算logP(τθ)\triangledown logP(\tau|\theta)
τ={s1,a1,r1,s2,a2,r2,...,sT,aT,rT}\tau=\{s_1,a_1,r_1,s_2,a_2,r_2,...,s_T,a_T,r_T\}
P(τθ)=p(s1)p(a1s1,θ)p(r1,s2s1,a1)p(a2s2,θ)p(r2,s3s2,a2)P(\tau|\theta)=p(s_1)p(a_1|s_1,\theta)p(r_1,s_2 |s_1,a_1 )p(a_2 |s_2,\theta)p(r_2,s_3 |s_2,a_2 )⋯
p(s1)p(s_1)是游戏的初始画面,p(a1s1,θ)p(a_1|s_1,\theta)是给定θ\theta机器在s1s_1环境下做出a1a_1动作的几率,p(r1,s2s1,a1)p(r_1,s_2 |s_1,a_1 )是游戏根据s1,a1s_1,a_1得到的reward r1r_1和环境s2s_2的概率,以此类推,得到:
李宏毅学习笔记23.Deep Reinforcement Learning
其中只有划红线的这项和actor πθ\pi_\theta有关,取log,把相乘变相加:
李宏毅学习笔记23.Deep Reinforcement Learning
然后对θ求偏导,把与θ无关的项忽略(左右两项)
李宏毅学习笔记23.Deep Reinforcement Learning
带入之前的式子:
李宏毅学习笔记23.Deep Reinforcement Learning
如果τn\tau^n遇到环境stns_t^n,就会采取动作atna_t^n,如果这些个动作的reward是正的,则要调整参数θ要使得采取这个动作的几率最大化,反之亦然。
李宏毅学习笔记23.Deep Reinforcement Learning
这里橙色块的意思前面有解释,要考虑整体的reward,不能考虑单个动作的reward。
再来看为什么要用log。log这项可以看成下图:
李宏毅学习笔记23.Deep Reinforcement Learning
李宏毅学习笔记23.Deep Reinforcement Learning
意思就是一个action出现几率高,虽然它的reward要小,调整它的几率还是可以最大化cost 函数。除以李宏毅学习笔记23.Deep Reinforcement Learning相当于归一化,使得模型能够处理这些几率高的action。
这里有一个小问题,R(τn)R(\tau^n)永远是正的,例如玩游戏的时候都是得分,不会有负分。
理想状态下,每个action都会sampling到,然后被gradient更新(都是正分,所以GA后是变大,不知道为什么b这里看起来变小了)
李宏毅学习笔记23.Deep Reinforcement Learning
但是实际上我们做的是sampling,有可能有action没有被sampling到,那么这个action的几率就会减少:
李宏毅学习笔记23.Deep Reinforcement Learning
所以我们希望R(τn)R(\tau^n)有正有负,然后就是加一个bias(自己设计)
李宏毅学习笔记23.Deep Reinforcement Learning

Value-base Approach: learning an critics

要下课了,这次讲不完:
李宏毅学习笔记23.Deep Reinforcement Learning

相关文章: