8.Imitation Learning模仿学习(李宏毅)

1.简介

模仿学习有人又称为学徒制学习,示范学习,但又有人觉得只有逆向强化学习才能称为学徒制学习。示范学习就是人类示范给机器,让机器去模仿学习。

不同于加强学习,在模仿学习中,机器可以与环境互动,但并不会得到Reward,因此模仿学习并非受到Reward影响,主要还是受到专家展示启发。

使用模仿学习的主要几点原因:

  • Reward不好定义
  • 如果手工制作的奖励可能会造成无法控制的行为,考试要100分是目标,那机器可能学到的是作弊就能100分。

模仿学习三种方法:

  • 行为克隆Behavior Cloning
  • 逆向强化学习Inverse Reinforcement Learning
  • 生成对抗网络Generative Adversarial network

2.行为克隆Behavior Cloning

在这里插入图片描述
直观来看,就是要机器复制专家(Expert)的行为,以自驾车为例,我们要搜集很多人类驾驶的行为,可以从行车记录器取得资料。训练资料集的标记自然就是observation所对应的当下行为,上图为例,人类在看到那种observation的情况下会向前,机器就是学着向前就可以,因此模型Actor( nn)的输入就是observation,输出就是采取的行为action。这,就是supervised learning。
但是也会出现下面的问题1
在这里插入图片描述
Behavior Cloning会遇到一个问题,就是Expert的samples有限,这会造成遇到非训练资料中状况的时候机器的表现不佳。
举例来说,Expert示范转弯是右转,但是当初始位置是在过弯一半的地方时,如果碰到一辆车,机器就会不知道该怎么做。
一种做法就是给更多资料,给Expert一些平常不会遇到的observation(states),问他该如何处理,这种作法称为数据集汇总(Dataset Aggregation)。
在这里插入图片描述
Dataset Aggregation具体范例说明:
假设现在有一个actor- π 1 \pi_1 π1,并且用它与环境(environment)互动,如上图所标示,目前 π 1 \pi_1 π1在这个环境中预计走绿色的路线,而车上有一位expert会同时标记这种情况下他会怎么做。
但是要注意到的是,expert是告诉机器,下一次遇到这种状况的时候要怎么走,因此,利用新标记的资料再训练得到actor- π 2 \pi_2 π2
这种作法在自驾车上也许不佳,但其它状况下或许可行。
问题2
Actor在不考虑overfitting情况下完全复制Expert是可以的,但是比较担心的是Actor的capacity是有限的,有限的情况下对Actor应该学Expert的哪一部份所造成的后面结果是影响很大的。
如果有看影片的话,影片中谢尔顿在学中文,他不只说,还学了手势,但如果他只学到手势,而忘了怎么说,那就差异很大了。
这一点在Behavior Cloning中并没有考虑到,解决这问题的一个方法就是给予不同的错误不同的权重,但这部份如果用Supervisor Learning来train Behavior Cloning的话比较难以定义。
问题3
在Behavior Cloning中,你的训练与测试资料的分布有可能是不一致的,举例来说,在Behavior Cloning内,Supervisor learning很简单的就是输入 o o o,输出 a a a,但你会看到怎么样的Observation是取决于Actor本身的参数,而actor在学习expert不完全情况下,就会造成两个Observation的distribution不同。
或许两个distribution相近,但Observation差异很大,又或许两个distribution差异甚大,但Observation又相似,这很难判定,也因此另一种方式就出现了,即IRL,Inverse Reinforcement Learning。

3.逆向强化学习Inverse Reinforcement Learning

3.1初步理解

在这里插入图片描述
Inverse Reinforcement Learning(IRL)又称『Inverse Optimal Control』或『Inverse Optimal Planning』,但都是相同的。
名称上直观来看,就是将Reinforcement Learning(RL)反过来。注意: s表示状态,a, π \pi π表示动作,r表示回馈, τ \tau τ表示序列

  • RL原始作法:
    有一个Agent会与Environment互动,通过互动会得到Reward- R ( τ ) R(\tau) R(τ), τ \tau τ是环境给的,不是我们所定义的。而 P ( s ′ ∣ s , a ) P(s^{'}|s,a) P(ss,a)也是由Environment所提供,在某一个state决定那一个action之后会得到的下一个state。再利用Policy- π ^ \hat{\pi} π^最佳化得到的Reward。

  • IRL的话则反过来:
    我们有一个Policy- π ^ \hat{\pi} π^(课程中提到的Policy即Actor ),也许是一个很会玩游戏的人,但实际上我们并不知道Policy的参数是长什么样子,我们唯一知道的是state与action的对应关系,即 τ ^ \hat{\tau} τ^

τ ^ \hat{\tau} τ^可以看的出来人类专家在看到什么样的state会有什么样的action,我们希望这用些资料来反推Reward,这个行为就是Inverse Reinforcement Learning。 Environment Dynamics依然是一个input,它会知道Expert在什么state会有怎么样的action,但不同的是它并不知道采取的action会有多少的Reward。

要注意,它是反推,而不是模仿,根据IRL找出一个Reward- R ( τ ) R(\tau) R(τ)之后,再利用它来找出Policy- π ∗ \pi^{*} π。一个简单的Reward function就可能可以导致actor有非常复杂的行为,因此,Model Reward function或许会比Model actor还要容易。

IRL就是先推出Reward function,再根据这个Reward function来推出Policy。

3.2算法步骤

在这里插入图片描述
原始RL的作法:
在这里插入图片描述
在这里插入图片描述
我们没有Reward function,手上有的就是 τ ^ \hat{\tau} τ^和拿 τ ^ \hat{\tau} τ^玩游戏的trajectories (历程),大致流程说明如下:

1.手上拥有 R ( τ ) R(\tau) R(τ)或者是 r ( s , a ) r (s,a) r(s,a)
2.给定一个 τ ^ \hat{\tau} τ^,里面有玩N次游戏的记录
3.假设手上的 τ ^ \hat{\tau} τ^是可以得到最大化Reward的Policy
4.寻找一个Reward function满足上面的假设即 R ˉ π ^ \bar{R}_{\hat{\pi}} Rˉπ^> R ˉ π \bar{R}_{\pi} Rˉπ.

3.21IRL与结构学习的关系

在这里插入图片描述

  • IRL在某种意涵来说跟Structured Learning相似,以IRL来说,我们要找一个Reward function,其条件为 R ˉ π ^ \bar{R}_{\hat{\pi}} Rˉπ^> R ˉ π \bar{R}_{\pi} Rˉπ.找到Reward function之后再找出Policy让Reward最大。

  • 在Structured Learning中,我们要找一个evaluation function- F ( x , y ) F(x,y) F(x,y),input为 x , y x,y x,y的pair,其 F ( x , y ^ ) F(x,\hat{y}) F(x,y^)是大过所有x,y组成的pair。测试的时候再给定所有的 x x x ,看哪一组y可以让F最大化。
    ** 结构感知机**
    在这里插入图片描述
    下面将解如何求 R ˉ π ^ \bar{R}_{\hat{\pi}} Rˉπ^> R ˉ π \bar{R}_{\pi} Rˉπ
    在这里插入图片描述
    Structured Perceptron中我们假设 F ( x , y ) F(x,y) F(x,y)是linear函数为 w ⋅ ϕ ( x , y ) w\cdot\phi(x,y) wϕ(x,y),如果在IRL中也可以用相同的定义 R ˉ π = w ⋅ ϕ ( π ) \bar{R}_{\pi}=w\cdot\phi(\pi) Rˉπ=wϕ(π),那就可以用解Structured Perceptron的方式来解IRL。
    解法如下:
    1.我们有一个 τ \tau τ,记录历程(state与action的对应关系)。
    2. R ˉ π \bar{R}_{\pi} Rˉπ我为N个trajectories的平均,即 1 N ∑ n = 1 N R ( τ ) \frac{1}{N}\sum_{n=1}^{N}R(\tau) N1n=1NR(τ)
    3.每一个trajectory的Reward为每一个time step的reward总合,因此 R ( τ n ) R(\tau^{n}) R(τn)可以写为 ∑ t = 1 T r t \sum_{t=1}^{T}r_t t=1Trt

    • 每一个trajectory的长度可能不一样。
    • IRL中, r t r_t rt我们并不知道,这是由模型参数所决定,被找出来的。

    4.为了让IRL与Structured Perceptron有关联,我们定义 r t = w ⋅ f ( s t , a t ) r_t=w\cdot f(s_t,a_t) rt=wf(st,at)

    • r t r_t rt参数vector-在与feature vector的内积。
    • 参数vector-在是我们要解的。
    • feature vector f ( s t , a t ) f(s_t,a_t) f(st,at)是从state与action中抽出vector
    • 部份paper并未将一种 a t a_t at放在feature vector内,认为只有state与reward有关,与action无关,这由个人定义即可。

5.将 r t r_t rt带入,得到 w ⋅ ∑ n = 1 N ∑ t = 1 T f ( s t , a t ) w\cdot \sum_{n=1}^{N}\sum_{t=1}^{T} f(s_t,a_t) wn=1Nt=1Tf(st,at)

  • 参数 w w w-在在所有的时间点都是一致的,因此放在最外面。
  • 对所有的trajectory的每一个时间点都抽出一个feature vector,接着平均它们得到一个feature vector再跟参数 w w w-在做内积就可以得到我们预期的Reward- R ˉ π \bar{R}_{\pi} Rˉπ

6.feature vector取决于actor,不同的actor得到的feature vector就不一样,因此对所有的trajectory的每一个时间点抽出一个feature vector做平均就可以视为对你现在的actor抽一个feature,为 ϕ ( π ) \phi(\pi) ϕ(π),因此整个数学式可以调整为 w ⋅ ϕ ( π ) w\cdot\phi(\pi) wϕ(π)
7.接下来就是解argmax的问题​​,IRL中就是找一个 π \pi π让Reward最大,解法就是利用RL,这意味着每一次迭代你都要做一次RL,因此运算量是非常大的。

3.3IRL框架

在这里插入图片描述
实际做法如下:
1.初始化一个随机Reward function
2.依据Reward function找出一个actor- π \pi π

  • 因为是随机生成,因此很笨
  • 以RL求解,因此计算量甚大

3.以actor- π \pi π。与Environment互动ñ次,得到trajectory– τ 1 , ⋅ , ⋅ , ⋅ , τ N \tau_1,\cdot,\cdot,\cdot,\tau_N τ1,,,,τN

4.专家– π ^ \hat{\pi} π^,也与Environment互动N次,得到trajectory- τ ^ 1 , ⋅ , ⋅ , ⋅ , τ ^ N \hat{\tau}_1,\cdot,\cdot,\cdot,\hat{\tau}_N τ^1,,,,τ^N

  • 如果是自驾车,就是记录人类驾驶在不同情况下有的不同反应
  • 如果是机械手臂的话,那就是记录人抓着手臂去做某一件事情

5.更新Reward-function,我们希望Expert所期望的Reward是大过现在的actor所期望的Reward,即 R ˉ π ^ \bar{R}_{\hat{\pi}} Rˉπ^> R ˉ π \bar{R}_{\pi} Rˉπ.

  • R ˉ π = w ⋅ ϕ ( π ) \bar{R}_{\pi}=w\cdot\phi(\pi) Rˉπ=wϕ(π) R ˉ π ^ = w ⋅ ϕ ( π ^ ) \bar{R}_{\hat{\pi}}=w\cdot\phi(\hat{\pi}) Rˉπ^=wϕ(π^)
  • 根据 π \pi π,把所有trajectory内的state与action成对的取出并计算平均,就可以得到 ϕ ( π ) \phi(\pi) ϕ(π),再乘上Weight- w w w
  • r t = w ⋅ f ( s t , a t ) r_t=w \cdot f(s_t,a_t) rt=wf(st,at)
  • 更新的方式与Structure Perceptron一样,原始的在加上正确的feature-ϕ (p^)并减掉错误的 ϕ ( π ) \phi(\pi) ϕ(π)

这边并非只能带入Structured Perceptron的概念,如果想要也可以利用Structured SVM。

4.GAN for Imitation Learning

在这里插入图片描述
GAN也可以结合Imitation Learning,本质上GAN就是要找一个Generator,这个Generator产生的分布与实际资料的分布愈接近愈好。
现在假设我们有一个Expert Polyci- π ^ \hat\pi π^,它与环境互动的时候会产生一堆trajectory- τ ^ \hat{\tau} τ^,它也是一个分布。
现在要做的是,训练一个actor- π \pi π,来与环境互动,也会得到trajectory- τ \tau τ,我们希望actor所output- τ \tau τ的分布与 τ ^ \hat{\tau} τ^的分布愈接近愈好。 τ \tau τ可以形成分布的原因在于environment是有随机性的,举例来说,游戏中相同的画面你相同的动作,下一步敌人的反应是可能不一样的。又或者actor本身也可能拥有随机性。
在这里插入图片描述
实作说明如下:
1.有一个Expert- π ^ \hat\pi π^

  • 以GAN的角度来看,就当它是实际资料,好比我们用GAN生成影像的时候所拥有的REAL DATA。
  • 真实数据: τ ^ \hat\tau τ^

2.有一个Actor- π \pi π

  • 随机初始,与环境互动得到一堆 τ \tau τ
  • 以GAN的角度来看,就是一开始很鸟的Generator,不同的是并非生成很多影像资料,而是用生成器生成 τ \tau τ

3.有一个Discriminator-D: 以trajectory判断是Expert或是Machine所出的资料(判别器)
4.以GAN的方式训练更新Discriminator: WGANs也可以
5.更新Actor的参数:即更新Generator的参数来骗过Discriminator
在这里插入图片描述
trajectory- τ \tau τ是sequence,里面记录着每一个state对应的action,然后利用RNN来读取之后output得分即可。但实际上可能因为 τ \tau τ的数目较少,因此如果直接将每一个 τ \tau τ都视为一个资料的话会容易造成overfitting,常见作法如下:
1.将 D ( τ ) D(\tau) D(τ)拆解为很多d的合,即 D ( τ ) = 1 T ∑ t = 1 T d ( s t , a t ) D(\tau)=\frac{1}{T}\sum_{t=1}^{T} d(s_t,a_t) D(τ)=T1t=1Td(st,at)

  • 每一个d也都是一个funtion,input即为一个state与action,而非整个trajectory,仅为trajectory的一个时间点。
  • 它判断在时间点 t t t所看到的 s t s_t st所做的 a t a_t at所得到的值有多像或多不像Expert的行为.

2.有一个Local Discriminator局部判别函数-d

  • 它只判断整个trajectory的某一个时间点
  • 把整个trajectory的state、action加总起来,就可以得到 D ( τ ) D(\tau) D(τ)

3.判断 d ( s t , a t ) d(s_t,a_t) d(st,at)是否为expert所做,是的话就拉高它的机率,如果是actor的话就降低它的机率。
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值