文章目录
前言
本节内容只是强化学习的一些入门(皮毛,Scratching the surface)先是从例子讲起,然后还是以红白机上的小蜜蜂为例,讲解了当下AL比较流行的Policy-based,并进行了的机器学习三板斧分析。
公式输入请参考:在线Latex公式
Overview概述
David Silver(大卫·希尔弗曼,阿法狗的作者,貌似b站有他专门讲强化学习的视频)给出的说法:
Deep Reinforcement Learning: AI=RL+DL
小栗子
红字State是Agent观察到的environment的结果,一般都是partial的。Action会和环境有一些互动,造成一些影响。然后会得到一些Reward(有好的,也有坏的。)
可以看到Agent(机器)学习的目标是学习采取什么样的Action使得Reward最大化。
play Go
这里agent观察的是棋盘,采取的Action是落子的位置(这里落的三之三,围棋不会,听老师说的瞎写),environment是对手
这里的Reward就是输赢,当然大多数时候还未分胜负。这里也是RL比较困难的地方,大多数的时候action是没有reward(reward是sparse的),这个时候也无法去判断这个action是否正确,如何在少数reward的情况下如何去发觉正确的action。
Agent learns to take actions to maximize expected reward.
Supervised v.s. Reinforcement
supervised learning训练出来的agent只能说会下围棋,但是下得不够好。意思就是只学会了围棋的基本规则。
Alpha Go is supervised learning + reinforcement learning.
先supervised learning学得不错之后才reinforcement learning(这个阶段是train两个模型对下).
Learning a chat-bot
·Sequence-to-sequence learning
聊天机器人:
这里在训练过程让人参与也不太现实,也是根据play Go的训练方式,让两个模型自己对话。然后将对话的结果与真人对话的结果进行比对,越接近越好,这个东西称为:Behavior Cloning。
Behavior Cloning的过程中,机器并不知道老师教的东西那些是重点,那些是不重要的,老师还放了一个谢耳朵和hover学中文的视频(自己百度),耳朵在学发音的过程中把手势也学了,机器也一样,它不会知道在学习语言的过程中语音是重点,手势是可以不用学的。
所以后面就有一节是讲Inverse Reinforce Learning
但是对话不像围棋,围棋的输赢是可以用程序来判断的,但是上面机器的对话如何判断好坏?这个还未解决,目前文献Deep Reinforcement Learning for Dialogue Generation 给出的解决方法是用基于规则的判断。如下:
老师也给出自己思路:(整个思路有点像迁移学习中的Domain-adversarial training)用一个模型X去学习人类之间的正常对话,用强化学习模型Y去学习对话,并且使得对话的结果(向量化)要可以骗过模型X。
这个还能用于人机交互:
More applications
Flying Helicopter
· https://www.youtube.com/watch?v=0lL04JJjocc
Driving
· https://www.youtube.com/watch?v=0xolLdx3L5Q
Google Cuts Its Giant Electricity Bill With DeepMind-Powered Al(AI省电)
· http://www. bloomberg. com/news/articles/2016-07-19/google-cuts-its-giant-electricity-bill-with-deepmind-powered-ai
Text generation
· Hongyu Guo,“Generating Text with Deep Reinforcement Learning”, NIPS,2015
· Marc’ Aurelio Ranzato, Sumit Chopra, Michael Auli, Wojciech Zaremba,“Sequence Level Training with Recurrent Neural Networks”, ICLR,2016
在翻译上,翻译的结果其实没有固定的正确答案,因此用RL比普通的监督学习应该结果要好。
另外一个栗子:玩游戏(Warning of Game)
Widely studies:
Gym: https://gym.openai.com/
Universe: https://openai.com/blog/universe/
这个玩游戏不是内建程序读取数据然后玩游戏,做判断,而是直接根据屏幕的输出来玩,貌似还有很多三维游戏,不知道现在有没有类似的网游外挂。
下面是一个具体的例子,这个游戏玩过红白机的都知道,小蜜蜂。。。老师还贴心的给出了玩法介绍。
接下来看机器怎么通过观察屏幕来这个游戏,一开始看到屏幕是
s
1
s_1
s1,实际上是一个vector,也可以说是三维的tensor,因为是rgb的,然后agent有三个选择(左、右、开火),这里是往右移动,没有得到reward
r
1
r_1
r1(左上角的分数),采取了action之后,影响了环境(当然环境的变化和action不一定有关系,这里敌方也会随机左右移动,或者进攻),得到
s
2
s_2
s2,agent决定开火,干掉敌方,得到5的reward
r
2
r_2
r2,然后这个循环不断进行下去。
进行到某一循环,绿色飞机可能被击中,game over,这个过程称为一个episode。机器就是不断的去玩这个游戏,目标是在一个episode里面最大化reward(干掉最多的外星人)。
难点小结
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里面也是非常重要的事情,就是学游戏怎么玩。
本节要点
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。
老师还提了一下Alpha Go:policy-based + value-based +model-based,用了多种模型混合,model-based的方法这里没有讲,这个方法主要用在棋类游戏,预测未来的棋局之类的,棋局走下一步的结果种类是有限。
· Textbook: Reinforcement Learning: An Introduction
· http://incompleteideas.net/book/the-book.html
· Lectures of David Silver(2015)
· http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Teaching.html(10 lectures,1:30 each)
· http://videolectures. net/rldm2015_silver_reinforcemer t_learning/(Deep Reinforcement Learning)
· Lectures of John Schulman(open ai,讲的是policy-based的方法)
· https://youtu. be/aUrX-rP_ss4
Policy-based Approach: Learning an Actor
Actor实际上就是function,用
π
\pi
π来表示,它的输入是机器看到的observation,输出是机器要采取的Action,我们要通过reward来找出最佳的
π
\pi
π:
PS:在有些文献上Actor又叫Policy。回到机器学习的三板斧:
下面就是套用这个三板斧的步骤展开来讲。
如果我们采用NN来作为function,那就是deep RL。
步骤一:Neural Network as Actor
上图中的输入是一个图片,就是一个vector,既然是图片NN里面应该包含有convolution来处理图片。
这里的输出带有Stochastic(随机)的几率。(当然,也可以任性的定义取最大几率的动作来执行)
传统的做法是把action保存到looup table中,然后看到某个environment就采取某个action,但是这样的做法这里并不适用,因为这里输入是pixel,NN的好处就是它会举一反三,场景没有看过也能搞定,也就是比较generalization
步骤二:Goodness of Actor(决定function的好坏)
这里看下之前的做法:
找到一个参数,目标是最小化损失函数。
在RL中,和上面是比较类似的:
其中
π
θ
(
s
)
\pi_\theta(s)
πθ(s)是actor函数,
θ
\theta
θ是参数,然后用这个函数去玩这个游戏,玩完之后得到的Total reward(这个episode的reward的总和)为:
R
θ
=
∑
t
=
1
T
r
t
R_\theta=\sum_{t=1}^Tr_t
Rθ=t=1∑Trt
这个
R
θ
R_\theta
Rθ就是要最大化的目标对象,而不是其中某一个action获得的reward。
但是就算是同一个actor,
R
θ
R_\theta
Rθ也是不一样的,这里有两个原因(Randomness in the actor and the game):
- actor遇到相同场景采取的动作是Stochastic的
- 游戏本身也有很多随机性
也就是说 R θ R_\theta Rθ是一个随机数。我们就用 R θ R_\theta Rθ的期望值(玩游戏很多次的均值) R ‾ θ \overline{R}_\theta Rθ,我们希望 R ‾ θ \overline{R}_\theta Rθ越大越好。 R ‾ θ \overline{R}_\theta Rθ evaluates the goodness of an actor π θ ( s ) \pi_\theta(s) πθ(s)
期望值 R ‾ θ \overline{R}_\theta Rθ如何计算?
我们用 τ \tau τ(念:涛)来代表一个episode所包含的东西,它是一个sequence:
τ = { s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , . . . , s T , a T , r T } \tau=\{s_1,a_1,r_1,s_2,a_2,r_2,...,s_T,a_T,r_T\} τ={s1,a1,r1,s2,a2,r2,...,sT,aT,rT}
Total reward:
R ( τ ) = ∑ n = 1 N r n R(\tau)=\sum_{n=1}^Nr_n R(τ)=n=1∑Nrn
如果用一个actor去玩这个游戏,那么每一个 τ \tau τ都有一个出现的几率(If you use an actor to play the game, each τ \tau τ has a probability to be sampled ),也就是说 τ \tau τ代表从游戏开始到结束的过程,这个过程有很多很多种,当你选择了某个actor,那么有些 τ \tau τ(游戏的过程)容易出现,例如很笨的actor会导致 τ \tau τ容易game over。这些游戏过程出现几率我们可以用 P ( τ ∣ θ ) P(\tau|\theta) P(τ∣θ)表示,则有:
R ‾ θ = ∑ τ R ( τ ) P ( τ ∣ θ ) (1) \overline R_\theta=\sum_{\tau}R(\tau)P(\tau|\theta) \tag{1} Rθ=τ∑R(τ)P(τ∣θ)(1)
就是对 τ \tau τ出现的几率与 τ \tau τ对应的reward的乘积进行求和。但是要穷举所有的 τ \tau τ是不可能的(游戏的情况复杂,过程自然就会有无穷多种),只能用 π θ \pi_\theta πθ玩N次游戏,得到 { τ 1 , τ 2 , . . . , τ N } \{\tau^1,\tau^2,...,\tau^N\} {τ1,τ2,...,τN}(相当于N笔training data,或者说相当于sampling τ \tau τ from P ( τ ∣ θ ) P(\tau|\theta) P(τ∣θ) N N N times),则公式(1)变为:
R ‾ θ = ∑ τ R ( τ ) P ( τ ∣ θ ) ≈ 1 N ∑ n = 1 N R ( τ n ) (2) \overline R_\theta=\sum_{\tau}R(\tau)P(\tau|\theta)≈\frac {1}{N}\sum_{n=1}^NR(\tau^n)\tag{2} Rθ=τ∑R(τ)P(τ∣θ)≈N1n=1∑NR(τn)(2)
上式中 ∑ τ \sum_{\tau} ∑τ P ( τ ∣ θ ) P(\tau|\theta) P(τ∣θ)与 1 N ∑ n = 1 N \cfrac {1}{N}\sum_{n=1}^N N1∑n=1N是约等于的关系。这里应该是用到期望的概念,当采样的次数N足够大的时候,那么样本的均值就会约等于均值。
步骤三:Pick the best function
使用的方法是GA(Gradient Ascent,这里是要求最大值),先来看问题的描述:
θ
∗
=
a
r
g
m
a
x
θ
R
‾
θ
=
a
r
g
m
a
x
θ
∑
τ
R
(
τ
)
P
(
τ
∣
θ
)
\theta^*=arg\underset{\theta}{max} \overline R_\theta=arg\underset{\theta}{max}\sum_{\tau}R(\tau)P(\tau|\theta)
θ∗=argθmaxRθ=argθmaxτ∑R(τ)P(τ∣θ)
就是要找到参数
θ
∗
\theta^*
θ∗使得
R
‾
θ
\overline R_\theta
Rθ最大化。
其中:
下面具体计算
要求
▽
R
‾
θ
\triangledown\overline R_\theta
▽Rθ,也就是
R
‾
θ
\overline R_\theta
Rθ对
θ
\theta
θ的偏导,由于公式:
R
‾
θ
=
∑
τ
R
(
τ
)
P
(
τ
∣
θ
)
(3)
\overline R_\theta=\sum_{\tau}R(\tau)P(\tau|\theta) \tag{3}
Rθ=τ∑R(τ)P(τ∣θ)(3)
中只有
P
(
τ
∣
θ
)
P(\tau|\theta)
P(τ∣θ)是与
θ
\theta
θ有关,因此:
▽
R
‾
θ
=
∑
τ
R
(
τ
)
▽
P
(
τ
∣
θ
)
\triangledown\overline R_\theta=\sum_{\tau}R(\tau)\triangledown P(\tau|\theta)
▽Rθ=τ∑R(τ)▽P(τ∣θ)
R
(
τ
)
R(\tau)
R(τ)可以是不可微的,也可以是blackbox(黑盒子),继续变化:
▽
R
‾
θ
=
∑
τ
R
(
τ
)
▽
P
(
τ
∣
θ
)
=
∑
τ
R
(
τ
)
P
(
τ
∣
θ
)
▽
P
(
τ
∣
θ
)
P
(
τ
∣
θ
)
(4)
\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{4}
▽Rθ=τ∑R(τ)▽P(τ∣θ)=τ∑R(τ)P(τ∣θ)P(τ∣θ)▽P(τ∣θ)(4)
由于:
d
l
o
g
(
f
(
x
)
)
d
x
=
1
f
(
x
)
d
f
(
x
)
d
x
\cfrac{dlog\left (f(x)\right )}{dx}=\cfrac{1}{f(x)}\cfrac{df(x)}{dx}
dxdlog(f(x))=f(x)1dxdf(x),公式(4)变为:
∑
τ
R
(
τ
)
P
(
τ
∣
θ
)
▽
l
o
g
P
(
τ
∣
θ
)
(5)
\sum_{\tau}R(\tau)P(\tau|\theta)\triangledown logP(\tau|\theta)\tag{5}
τ∑R(τ)P(τ∣θ)▽logP(τ∣θ)(5)
由上面的公式(2)可知,
∑
τ
P
(
τ
∣
θ
)
\sum_{\tau}P(\tau|\theta)
∑τP(τ∣θ)与
1
N
∑
n
=
1
N
\cfrac {1}{N}\sum_{n=1}^N
N1∑n=1N是约等于的关系,因此有:
(
3
)
≈
1
N
R
(
τ
n
)
▽
l
o
g
P
(
τ
n
∣
θ
)
(3)≈\frac{1}{N}R(\tau^n)\triangledown logP(\tau^n|\theta)
(3)≈N1R(τn)▽logP(τn∣θ)
下面计算
▽
l
o
g
P
(
τ
∣
θ
)
\triangledown logP(\tau|\theta)
▽logP(τ∣θ)
τ
=
{
s
1
,
a
1
,
r
1
,
s
2
,
a
2
,
r
2
,
.
.
.
,
s
T
,
a
T
,
r
T
}
\tau=\{s_1,a_1,r_1,s_2,a_2,r_2,...,s_T,a_T,r_T\}
τ={s1,a1,r1,s2,a2,r2,...,sT,aT,rT}
P
(
τ
∣
θ
)
=
p
(
s
1
)
p
(
a
1
∣
s
1
,
θ
)
p
(
r
1
,
s
2
∣
s
1
,
a
1
)
p
(
a
2
∣
s
2
,
θ
)
p
(
r
2
,
s
3
∣
s
2
,
a
2
)
⋯
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(τ∣θ)=p(s1)p(a1∣s1,θ)p(r1,s2∣s1,a1)p(a2∣s2,θ)p(r2,s3∣s2,a2)⋯
p
(
s
1
)
p(s_1)
p(s1)是游戏的初始画面出现的概率,
p
(
a
1
∣
s
1
,
θ
)
p(a_1|s_1,\theta)
p(a1∣s1,θ)是给定
θ
\theta
θ机器在
s
1
s_1
s1环境下做出
a
1
a_1
a1动作的几率,
p
(
r
1
,
s
2
∣
s
1
,
a
1
)
p(r_1,s_2 |s_1,a_1 )
p(r1,s2∣s1,a1)是游戏根据
s
1
,
a
1
s_1,a_1
s1,a1得到的reward
r
1
r_1
r1和环境
s
2
s_2
s2的概率,以此类推,得到:
其中只有划红线的这项和actor
π
θ
\pi_\theta
πθ有关,取log,把相乘变相加:
l
o
g
P
(
τ
∣
θ
)
=
l
o
g
p
(
s
1
)
+
∑
t
=
1
T
l
o
g
p
(
a
t
∣
s
t
,
θ
)
+
l
o
g
p
(
r
t
,
s
t
+
1
∣
s
t
,
a
t
)
logP(\tau|\theta)=logp(s_1)+\sum_{t=1}^Tlogp(a_t|s_t,\theta)+logp(r_t,s_{t+1}|s_t,a_t)
logP(τ∣θ)=logp(s1)+t=1∑Tlogp(at∣st,θ)+logp(rt,st+1∣st,at)
然后对θ求偏导,把与θ无关的项忽略(左右两项)
▽
l
o
g
P
(
τ
∣
θ
)
=
∑
t
=
1
T
▽
l
o
g
p
(
a
t
∣
s
t
,
θ
)
\triangledown logP(\tau|\theta)=\sum_{t=1}^T\triangledown logp(a_t|s_t,\theta)
▽logP(τ∣θ)=t=1∑T▽logp(at∣st,θ)
带入之前的式子:
如果某一次玩游戏的过程
τ
n
\tau^n
τn中,遇到环境
s
t
n
s_t^n
stn,就会采取动作
a
t
n
a_t^n
atn,如果这些个动作的reward是正的,则要调整参数θ要使得采取这个动作的几率最大化,反之亦然。
这里橙色块的意思前面有解释,要考虑整体的reward(
R
(
τ
n
)
R(\tau^n)
R(τn)),不能考虑单个动作的reward(
r
t
n
r_t^n
rtn)。
再来看为什么要用log。log这项可以看成下图蓝色部分:
意思就是一个action出现几率高,虽然它的reward要小,调大它的几率还是可以最大化cost 函数。除以
p
(
a
t
n
∣
s
t
n
,
θ
)
p(a_t^n|s_t^n,\theta)
p(atn∣stn,θ)相当于归一化,使得模型能够处理这些几率高的action(不然会偏向调整那些reward搞的action)。
这里有一个小问题,
R
(
τ
n
)
R(\tau^n)
R(τn)永远是正的,例如玩游戏的时候都是得分,不会有负分。
理想状态下,每个action都会sampling到,然后被gradient更新(都是正分,所以GA后是变大,不知道为什么b这里看起来变小了)
但是实际上我们做的是sampling,有可能有action没有被sampling到,那么这个action的几率就会减少:
所以我们希望
R
(
τ
n
)
R(\tau^n)
R(τn)有正有负,然后就是加一个bias(自己设计)
The critic
critic并不能决定采用什么action,它只能评估actor (
π
\pi
π)的好坏(听起来好像GAN里面的discriminator)
A critic does not determine the action.
Given an actor, it evaluates the how good the actor is.
State Value-base Approach: learning an critics
critics 有很多种方法,先来看一种:
state value-base function:
V
π
(
s
)
V^{\pi}(s)
Vπ(s),其作用是:
给定一个actor (
π
\pi
π),在观察到一个state(
s
s
s)之后,计算出期望获得的总的Reward是多少(注意,这里是总的Reward)。
critic是和actor有关的,观察到相同的state,如果actor不一样,那么结果也不同。
如何估计函数V
基于蒙特卡洛Monte-Carlo (MC) 方法:
The critic观察
π
\pi
π玩游戏
在观察到某个state:
s
a
s_a
sa之后,在这个episode结束后得到总的Reward为:
G
a
G_a
Ga。那么就可以看做一个回归问题,输入
s
a
s_a
sa,输出
V
π
(
s
a
)
V^{\pi}(s_a)
Vπ(sa)越接近
G
a
G_a
Ga越好。
在观察到某个state:
s
b
s_b
sb之后,在这个episode结束后得到总的Reward为:
G
b
G_b
Gb。同理,输入
s
b
s_b
sb,输出
V
π
(
s
b
)
V^{\pi}(s_b)
Vπ(sb)越接近
G
b
G_b
Gb越好。
第二个方法是Temporal-difference(TD) approach
The critic观察
π
\pi
π玩游戏,可以看到如下序列:
.
.
.
s
t
,
a
t
,
r
t
,
s
t
+
1
.
.
.
...s_t,a_t,r_t,s_{t+1}...
...st,at,rt,st+1...
由上面的单个state可知(这里和上面方法不一样的地方在于不用玩到最后,看总的reward):
V
π
(
s
t
)
=
V
π
(
s
t
+
1
)
+
r
t
V^{\pi}(s_t)=V^{\pi}(s_{t+1})+r_t
Vπ(st)=Vπ(st+1)+rt
训练的过程如下图:
分别把
s
t
s_t
st和
s
t
+
1
s_{t+1}
st+1丢到函数
V
π
V^{\pi}
Vπ中去得到
V
π
(
s
t
)
V^{\pi}(s_t)
Vπ(st)和
V
π
(
s
t
+
1
)
V^{\pi}(s_{t+1})
Vπ(st+1),希望这两个东西的差和
r
t
r_t
rt越接近越好。
V
π
(
s
t
)
V^{\pi}(s_t)
Vπ(st)和
V
π
(
s
t
+
1
)
V^{\pi}(s_{t+1})
Vπ(st+1)我们是不知道具体是多少的,我们只知道总的期望Reward。
这个方法的好处就是在游戏还没有结束的时候就可以开始更新参数了,当有些游戏很长的时候比较有用。
两个方法的比较(略)MC VS TD
The next most obvious advantage of TD methods over Monte Carlo methods is that they are naturally implemented in an on-line, fully incremental fashion. With Monte Carlo methods one must wait until the end of an episode, because only then is the return known, whereas with TD methods one need wait only one time step.
Surprisingly often this turns out to be a critical consideration Other applications are continuing tasks and have no episodes at all.
State-Action Value base Approach
刚才那种critic不能决定Action,这种可以,称为:State-Action Value base function:
Q
π
(
s
,
a
)
Q^\pi(s,a)
Qπ(s,a)
其作用是:
给定一个actor (
π
\pi
π),在观察到一个state(
s
s
s)之后并采取一个Action,计算出期望获得的总的Reward是多少(注意,这里是和之前的方法不一样的地方在于采取了Action)。
结构如下图:
输入是两个,输出是评价。这个结构可以进行改进,当action的选项不多,就可以改成下面这种结构:
比上面那种方便些了,结果是一样的。
Q learning
用Q function找出比较好的actor,过程如下:
假如我们现在已经训练好了一个Q function。
1、输入一个
π
\pi
π,并观察它与环境的互动
2、用Q计算出
π
\pi
π采取各种action的得分
3、找到一个比
π
\pi
π更好的
π
′
\pi'
π′替换
π
\pi
π,使得
π
′
\pi'
π′的得分比
π
\pi
π的高。把
π
′
\pi'
π′重复到1.
上面提到的
π
′
\pi'
π′比
π
\pi
π更好是啥意思?
对于所有的state
s
s
s有:
V
π
′
(
s
)
≥
V
π
(
s
)
V^{\pi'}(s)\geq V^{\pi}(s)
Vπ′(s)≥Vπ(s)
比较好的
π
′
\pi'
π′根据这个公式计算:
π
′
(
s
)
=
a
r
g
m
a
x
a
Q
π
(
s
,
a
)
{\pi'}(s)=arg\underset{a}{max}Q^\pi(s,a)
π′(s)=argamaxQπ(s,a)
上式中
π
′
\pi'
π′ does not have extra parameters. It depends on
Q
Q
Q
而且这个
Q
Q
Q貌似不适合用在取值连续的action上
公式证明过程上图,老师也没解释
然后是Q的调参技巧,老师推荐搜索一篇叫做Rainbow的论文,里面介绍了其中不同调参技巧,且用了七种不同颜色来做图。。。。居然还有这样的操作,在国内那论文名字不得要叫《Calabash Brothers》。。。
这里又省略了一段内容。。。
下面讲另外一种RL的模式:
Actor-critic
估计时间不够,都没怎么详细讲,只能大概记一下。
Actor-critic是一个流派,其精神是:Actor是根据环境的reward来学习,但是环境的随机性太大,因此Actor跟critic学。这个流派有很多种方法, Advantage Actor-Critic是一种。
此处省略很多字。。。
然后直接跳到:
Asynchronous Advantage Actor-Critic (A3C)
ref: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
Advantage Actor-Critic
有点影分身的意思。。。
假设有一个全局NN,包含了之前的Advantage Actor-Critic的各个部件,然后进行分身得到n个一模一样的网络,然后对这n个网络进行分别的训练,每个分身得到参数的更新
Δ
θ
\Delta\theta
Δθ后,回传给全局网络。
和影分身修炼一样,每个分身领悟到的经验在分身消失后会积累给真身。
这个方法当然也有缺点,不然个个都这么玩了,就是需要有支持影分身的大量查克拉,不然你只能分两个身就没什么很好的效果。A3C也是需要n个机器来进行学习才可以。
具体推导和公式表达都省略。
Pathwise Derivative Policy Gradient
之前在讲Critic的时候挖了一个坑,说当Action是连续值的时候是没有办法求解Q function的,现在来填。
就是在之前的Q function网络前面接一个网络actor
π
\pi
π,这个网络输入一个场景,输出一个action,目标是使得这个action让Q function网络的输出值最大化。具体的更新和计算也省略了,只是提了一下,这里的actor
π
\pi
π和Q function网络类似GAN里面的Generator和Discriminator。
Inverse Reinforcement Learning (IRL)
也叫:inverse optimal control, inverse optimal planning
结构上不包含Reward函数,只有专家的
τ
^
\widehat \tau
τ
:
Motivation
某些任务中Reward函数不好定义,例如,赛车中,碰到人,碰到墙各扣多少分?都不好定义。另外手工定义的Reward会导致未知错误。
之前的RL大体是根据Environment和Reward Function通过RL来找出最好的Actor
IRL反过来,用expert和Environment通过IRL来找出Reward Function,具体做法大概如下:
原则:expert总是最好的。
步骤:
初始化一个actor
循环
—用actor与Environment互动n次,得到n个记录
定义一个Reward Function,规则是expert的Reward要比初始actor要好。
初始actor根据上面的Reward Function进行学习,目标是Reward Function结果越大越好
若干次后初始actor按当前规则就很接近expert了,这个时候又去改规则,通过这个规则得到结果是expert的Reward要比初始actor要好。。。。
结束循环
IRL和GAN的对比,很像