强化学习task5

第十章 Sparse Reward

稀疏奖励:以机械臂举例,抓到螺丝才得到奖励1,但可能长时间甚至永远都是0。
通过三个方向解决sparse reward问题:

Reward Shaping(奖励塑造)

Reward shaping 指环境有一个固定的 reward,它是真正的 reward,但是为了让 agent 学出来的结果是我们要的样子,刻意地设计了 reward 来引导我们的 agent。
具体实施方式:

Curiosity

curiosity driven reward
在这里插入图片描述
ICM(intrinsic curiosity module)取决于 s 1 , a 1 , s 2 s_1,a_1,s_2 s1,a1,s2
total reward中包含 r i 、 r i j r_i、r^{j}_i ririj,通过这种方式代表curiosity。
在这里插入图片描述
ICM计算原始设计如图所示,根据 a t , s t a_t,s_t at,st的输入,使用network计算得到一个 s ^ t + 1 \hat{s}_{t+1} s^t+1,如果其跟 s t + 1 s_{t+1} st+1的真实情况越different,reward越大。通过这种方式增加对未知环境的探索能力。
其中,network是提前训练的,通过给定 a t , s t , s t + 1 a_t,s_t,s_{t+1} at,st,st+1在整体网络训练时要将其fix。
在这里插入图片描述
光有好奇不够,还需要让网络意识到什么事情是真正重要的,这里引入了feature ext模块,通过这个module把无关的东西过滤。
过滤的具体方法,使用network2,输出 ϕ ( s t ) , ϕ ( s t + 1 ) \phi(s_t),\phi(s_{t+1}) ϕ(st),ϕ(st+1),预测
s ^ t + 1 \hat{s}_{t+1} s^t+1,并计算 s ^ t \hat{s}_{t} s^t s t {s}_{t} st之间的差距,考虑变化与动作是否真正有关系。

Curriculum Learning

第二个方向是 curriculum learning(课程式学习)
可以理解为,让模型先从容易的样本开始学习,并逐渐进阶到复杂的样本和知识。

Reverse Curriculum Generation

在这里插入图片描述
在这里插入图片描述

Hierarchical RL(分层强化学习)

分层强化学习是说,我们有好几个 agent。然后,有一些 agent 负责比较 high level 的东西,它负责订目标,然后它订完目标以后,再分配给其他的 agent,去把它执行完成。
在这里插入图片描述

第十章习题

Keywords

reward shaping: 在我们的agent与environment进行交互时,我们人为的设计一些reward,从而“指挥”agent,告诉其采取哪一个action是最优的,而这个reward并不是environment对应的reward,这样可以提高我们estimate Q-function时的准确性。
ICM(intrinsic curiosity module): 其代表着curiosity driven这个技术中的增加新的reward function以后的reward function。
curriculum learning: 一种广义的用在RL的训练agent的方法,其在input训练数据的时候,采取由易到难的顺序进行input,也就是认为设计它的学习过程,这个方法在ML和DL中都会普遍使用。
reverse curriculum learning: 相较于上面的curriculum learning,其为更general的方法。其从最终最理想的state(我们称之为gold state)开始,依次去寻找距离gold state最近的state作为想让agent达到的阶段性的“理想”的state,当然我们应该在此过程中有意的去掉一些极端的case(太简单、太难的case)。综上,reverse curriculum learning 是从 gold state 去反推,就是说你原来的目标是长这个样子,我们从我们的目标去反推,所以这个叫做 reverse curriculum learning。
hierarchical (分层) reinforcement learning: 将一个大型的task,横向或者纵向的拆解成多个 agent去执行。其中,有一些agent 负责比较high level 的东西,负责订目标,然后它订完目标以后,再分配给其他的 agent把它执行完成。(看教程的 hierarchical reinforcement learning部分的示例就会比较明了)

Questions

ICM是什么?我们应该如何设计这个ICM?

第十一章 模仿学习

模仿学习 (Imitation Learning) 不是强化学习,而是强化学习的一种替代品。模仿学习与强化学习有相同的目的:两者的目的都是学习策略网络,从而控制智能体。模仿学习与强化学习有不同的原理:模仿学习向人类专家学习,目标是让策略网络做出的决策 与人类专家相同;而强化学习利用环境反馈的奖励改进策略,目标是让累计奖励(即回报)最大化。
具体体现在,当连奖励都没有的时候,需要模仿专家的示范,进行学习。
举例来说,在自动驾驶汽车里面,虽然你没有办法给出自动驾驶汽车的奖励,但你可以收集很多人类开车的纪录。在聊天机器人里面,你可能没有办法定义什么叫做好的对话,什么叫做不好的对话。但是收集很多人的对话当作范例,这一件事情也是可行的。
这里介绍三种方法,第一个叫做行为克隆(behavior cloning,BC),第二个叫做逆强化学习(inverse reinforcement learning,IRL),第三个叫生成判别模仿学习(GAIL)。

Behavior Cloning(行为克隆)

行为克隆跟监督学习是一样的。
人在状态 s 1 s_1 s1会采取动作 a 1 a_1 a1,人在状态 s 2 s_2 s2会采取动作 a 2 a_2 a2。人在状态, s 3 s_3 s3会采取动作 a 3 a_3 a3。接下来,你就学习一个网络。这个网络就是agent演员,它输入 s i s_i si的时候,你就希望它的输出 是 a i a_i ai,就这样结束了。
但这样的行为克隆的观测非常有限,当遇到专家中未出现的数据时,就无法处理这种情况。
这里引入了数据集聚合(dataset aggregation,DAgger)
原有的教程我确实没看懂,又收集了一些资料。
论文在这里
在这里插入图片描述
人为地打标记的成本也太高,如何自动地代替人完成这个工作呢?
在不引入extra传感器的前提下,就是一个典型的POMDP问题,我们可以利用历史轨迹信息来解决:

  • 将现在的observation与之前的一些历史obs连接(concat)在一起,经过CNN提取特征
  • 用RNN记录历史信息

逆强化学习

逆向强化学习 (逆强化学习缩写 IRL)非常有名,但是在今天已 经不常用了。下一节介绍的GAIL更简单,效果更好。本节只简单介绍IRL的主要思想, 而不深入讲解其数学原理。
IRL 的基本设定
第一, IRL 假设智能体可以与环境交互1,环境会根据智能体的动作更新状态,但是不会给出奖励。智能体与环境交互的轨迹是这样的:
s 1 , a 1 , s 2 , a 2 , s 3 , a 3 , ⋯   , s n , a n s_{1}, a_{1}, \quad s_{2}, a_{2}, \quad s_{3}, a_{3}, \quad \cdots, \quad s_{n}, a_{n} s1,a1,s2,a2,s3,a3,,sn,an
把奖励看作 ( s t , a t ) (s_t,a_t) (st,at)的函数,记作 R ∗ ( s t , a t ) R^*(s_t,a_t) R(st,at).
第二, IRL 假设我们可以把人类专家的策略 π ( a ∣ s ) π(a|s) π(as) 作为一个黑箱调用。黑箱指是我们不知道策略的解析表达式,但是可以使用黑箱策略控制智能体与环境交互,生成 轨迹。 IRL 假设人类学习策略 π π π的方式与强化学习相同,都是最大化回报(即累计奖励)的期望,即
π ⋆ = max ⁡ π E S t , A t , ⋯   , S n , A n [ ∑ k = t n γ k − t ⋅ R ⋆ ( S k , A k ) ] \pi^{\star}=\max _{\pi} \mathbb{E}_{S_{t}, A_{t}, \cdots, S_{n}, A_{n}}\left[\sum_{k=t}^{n} \gamma^{k-t} \cdot R^{\star}\left(S_{k}, A_{k}\right)\right] π=πmaxESt,At,,Sn,An[k=tnγktR(Sk,Ak)]
IRL 的基本思想
在这里插入图片描述

  • 从黑箱策略反推奖励
  • 用奖励函数训练策略网络
  • 更新奖励函数

生成判别模仿学习 (Gail)

生成判别模仿学习 (Generative Adversarial Imitation Learning,缩写 GAIL) 需要让智能体与环境交互, 但是无法从环境获得奖励。 GAIL 还需要收集人类专家的决策记录(即很多条轨迹)。 GAIL 的目标是学习一个策略网络,使得判别器无法区分一条轨迹是策略网络的决策还是人类专家的决策。

生成判别网络 (GAN)

在这里插入图片描述
生成器 (Generator) 和判别器 (Discriminator) 各是一个神经网络。生成器负责生成假的样本,而判别器负责判定一个样本是真是假。

训练生成器

生成器与判别器相连,固定住判别器的参数,只更新生成器参数 θ \theta θ,使得生成的图片 x = G ( s ; θ ) x = G(s;\theta) x=G(s;θ)在判别器中更像真的。对于任意随机生成的向量s,应该改变 θ \theta θ,使得判别器的输出 p ^ = D ( x ; ϕ ) \hat{p}=D(x;\phi) p^=D(x;ϕ)尽量接近1。举例,用交叉熵作为损失函数:
E ( s ; θ ) = ln ⁡ [ 1 − D ( x ; ϕ ) ⏟ 越大越好  ] ;  s.t.  x = G ( s ; θ ) .  E(s ; \boldsymbol{\theta})=\ln [1-\underbrace{D(x ; \boldsymbol{\phi})}_{\text {越大越好 }}] ; \quad \text { s.t. } x=G(s ; \boldsymbol{\theta}) \text {. } E(s;θ)=ln[1越大越好  D(x;ϕ)]; s.t. x=G(s;θ)
(关于交叉熵,可以看这里)
判别器的输出介于0到1之间,越接近1,损失函数 E ( s ; θ ) = ln ⁡ [ 1 − p ^ ] E(s;\theta)=\ln [1-\hat{p}] E(s;θ)=ln[1p^]越小。即我们希望期望越小越好,这里采用梯度下降更新 θ \theta θ
θ ← θ − β ⋅ ∇ θ E ( s ; θ ) \boldsymbol{\theta} \leftarrow \boldsymbol{\theta}-\beta \cdot \nabla_{\boldsymbol{\theta}} E(s ; \boldsymbol{\theta}) θθβθE(s;θ)
β \beta β是学习率,需要手动调整。

训练判别器

在这里插入图片描述
判别器的本质是个二分类器,它的输出值 p ^ = D ( x ; ϕ ) \hat{p}=D(x;\phi) p^=D(x;ϕ)表示对真伪的预测。从真实输出抽 x r e a l x^{real} xreal,随机产生一个 x f a k e x^{fake} xfake
F ( x real  , x fake  ; ϕ ) = ln ⁡ [ 1 − D ( x real  ; ϕ ) ⏟ 越大越好  ] + ln ⁡ D ( x fake  ; ϕ ) ⏟ 越小越好  .  F\left(x^{\text {real }}, x^{\text {fake }} ; \phi\right)=\ln [1-\underbrace{D\left(x^{\text {real }} ; \phi\right)}_{\text {越大越好 }}]+\ln \underbrace{D\left(x^{\text {fake }} ; \phi\right)}_{\text {越小越好 }} \text {. } F(xreal ,xfake ;ϕ)=ln[1越大越好  D(xreal ;ϕ)]+ln越小越好  D(xfake ;ϕ)

训练流程

在这里插入图片描述

GAIL 的生成器和判别器

训练数据

GAIL 的训练数据是被模仿的对象(比如人类专家)操作智能体得到的轨迹,记作
τ = [ s 1 , a 1 , s 2 , a 2 , ⋯   , s m , a m ] \tau=\left[s_{1}, a_{1}, s_{2}, a_{2}, \cdots, s_{m}, a_{m}\right] τ=[s1,a1,s2,a2,,sm,am]

训练数据

GAIL 的生成器是策略网络 π ( a ∣ s ; θ ) π(a|s; θ) π(as;θ),策略网络的输入是状态 s,输出是一个向量:
f = π ( ⋅ ∣ s ; θ ) f = \pi(· |s;\boldsymbol\theta) f=π(s;θ)
在这里插入图片描述

判别器

GAIL 的判别器记作 D ( s , a ; ϕ ) D(s, a; \phi) D(s,a;ϕ),输出是一个向量
p ^ = D ( s ; ⋅ ∣ ϕ ) \hat{p} = D(s;· |\phi) p^=D(s;⋅ϕ)
在这里插入图片描述

GAIL 的训练

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值