李宏毅《机器学习》2021版第30-34讲——强化学习RL

Reinforcement Learning (RL)

RL不知道最优输出是什么,但是机器知道输出什么是好什么是不好。

What is RL? (Three steps in ML)

RL是机器学习的一种,它也在找function。
RL里有Actor和Environment,Environment会有一个Observation作为Actor的输入,Actor会输出Action,采取Action以后会影响Environment产生新的Observation,这里Actor就是一个function,Environment会给Actor一个Reward评估是好是坏。
Function: Action=f(Observation)
这个Function的目标是maximize从Environment获得的total reward。

RL也是func

Example: Playing Video Game

Space invader

space invader

怎么用RL玩这个游戏?

游戏操控者是Actor,Action是三个:向左、向右或者开火。如果杀掉一个外星人Reward=5,左右移动不得分。学习目标是使游戏得分最大。


RL玩小游戏

下围棋的reward是如果赢了得到1分,如果输了得到-1分,到下棋结束的时候才能拿分。


RL用于alphago

RL也像ML有3步:Step1: Function with Unknown
Actor是Policy Network,输入是游戏画面,输出是每一个可以采取的行为的分数。其实是一个分类任务。这个Network架构可以自己设计,比如如果输入是画面,network可以是CNN。如果要同时考虑过去的画面,可以用RNN或者transformer。最后的结果是根据各个action的分数sample得到Scores of actions。这样子即使同样的画面也会输出不同的分数,还有一个理由等下再讲。

RL第一步

Step2: Define “Loss”
假设初始画面s1,action为a1,reward为r1,action以后出现新画面s2,如此往复。直到机器产生某一个行为满足结束条件以后游戏结束。这一整个过程叫episode,得到total reward。使total reward最大就是训练目标。负的total reward就是我们的loss。

RL第二步1

RL第二步2

Step3: Optimization
互动过程:
Env产生s1作为actor输入产生a1作为Env的输入…
互动产生的sequence s1、a1、s2、a2、s3… 又叫做Trajectory,根据互动过程可以得到Reward,可以把Reward想象成一个function,输入是s1、a1,r1作为输出。r1、r2….集合起来得到R。
找一个network的参数让R越大越好。这个network有一定随机性,因为a1是sample出来的,所以这个network有一个layer的输出是有随机性的。而且Env是一个黑盒子,Reward是一个规则。Env也有随机性。
跟GAN有异曲同工之妙,
一样的地方:actor就像generator,Env和Reward就像discriminater。
不一样的地方:discriminater是一个network,可以用gradient desenct的方法train,Env和Reward不是network,是两个黑盒子,没办法用gradient desent训练。

RL第三步

Policy Gradient

How to control your actor?

可以想象成一个分类任务,输出为a,真实值为a hat,可以计算a和a hat之间的cross-entropy,定义一个Loss,等于cross-entropy,定义一个θ使这个Loss最小。如果希望actor不要采取某action,可以把cross-enropy取负号作为L并minimize这个L。


control actor1

Loss等于想要的action的cross-enropy减去不想要的action的cross-enropy。


control actor2

训练的时候收集一堆资料,得到L,找一组θ使L最小。


control actor3

更进一步,action不只判断为好或不好两类,改成有程度差异,比如+1.5, -0.5, +0.5, -10…… 通过系数An控制action得分的程度。


control actor4

那怎么控制An?怎么产生s和a的pair?

怎么定义A?

Version0

r1设成A1,r2设成A2,这是一种短视的行为,因为action之间不是独立的,并且存在Reward delay。机器会认为只有开火这件事是被鼓励的。


version0-1
version0-2

Version 1

发生a1以后产生的所有r集合起来得到G1。
G1=r1+r2+r3+…+rn
G2=r2+r3+…+rn
G3=r3+…+rn
这些G就是cumulated reward。


version1

但是也有点问题,假设游戏很长,把rn归咎于a1的可能性较低。

Version 2

在r前面设置Discount factor γ,这是一个小于1的值,距离越远影响越小。


version2

G1还能再做标准化的动作吗?就有了version3

Version 3

设定一个baseline让G去减掉作为标准化。
那怎么设置b?


version3

Policy Gradient怎么操作?

1.初始化参数θ0
2.对于iteration 1到T:拿actor去跟Env互动,得到一大堆s,a的pair,计算A1,A2,…An,定义Loss,update模型。


policy1

收集资料这件事发生在iteration内部,所以每组资料只update参数一次。所以这样比较费时间,因为每次要重新收集资料。
收集资料—>更新参数—>重新收集资料—>更新参数


policy2

原因:θi-1收集的资料不适用于θi。收集资料的actor和被训练的actor最好是同一个。


policy3
policy4

On-policy v.s. Off-policy

如果收集资料的actor和被训练的actor是同一个,这种就叫On-policy。
如果我们要训练的actor来自其他actor跟Env互动的资料,就叫Off-policy。
Off-policy learning可以让θi想办法根据θi-1收集的资料进行学习。优势是可以节省时间。
[offpolicy]


offpolicy

有一种经典的Off-policy方法是Proximal Policy Optimization (PPO)。被训练的actor要意识到自己和跟环境互动的actor之间的差距。


PPO

Exploration

Actor有一些随机性,这个随机性非常重要,如果随机性不够会train不起来。
为了要随机性大一点,会可以加大cross-entropy,或者直接在参数上加noise。


exploration

PPO例子

DeepMind

deepmind

OpenAI

openAI

Actor-Critic

Critic

是用来评估actor的好坏。
Value function的输入是游戏的画面,观察的对象actor的参数是θ,输出是一个scalar,这个数值的含义是这一个actor θ,如果看到s,它得到的discounted cumulated reward。这个function Vθ(s)需要未卜先知,未玩先猜。输出的值取决于被评估的actor。


critic

Critic怎么训练出来?

方法1: Monte-Carlo (MC) based approach
Actor先跟Env互动很多次得到训练资料,拿这些资料来训练value function。

MC

方法2: Temporal-difference (TD) approach
不用玩完整个游戏,看到某一次的st, at, rt, st+1,就可以训练Vθ(s)。

TD

MC和TD算出来的很可能不一样。


MC v.s. TD

Version 3.5

b的一个合理的设法是设成Vθ(st)。


version3.5-1

At=Gt‘-Vθ(st)
St有随机性,会产生不同的G‘,这些可能的结果平均起来就是Vθ(st)。
Gt‘是指在st处执行at得到的结果.
At>0表示at is better than average。At<0表示worse that average。
但是还有一个问题,Gt‘只是一次sample的结果,有可能好有可能坏,那有没有可能拿平均减掉平均?


version3.5-2

这就是version 4.
At=rt+Vθ(st+1)-Vθ(st)


version4

这个方法就是大名鼎鼎的Advantage Actor-Critic。

Tip of Actor-Critic.

Actor是一个network,Critic也是一个network,他们的输入都是s,所以可以共用前面几个layer。


tip

RL有一种方法是直接用Critic就决定用什么action,其中最知名的算法是DQN。
[DQN]


DQN

Reward Shaping

Sparse Reward

有种情况Reward多数为0怎么办?
比如栓螺丝这种任务,只有栓进去才有reward。
有一种解法是想办法提供另外一种reward来指导agent。这就叫reward shaping。


sparse reward

Reward Shaping

VizDoom
Visual Doom AI Competition @ CIG 2016

reward shaping1

真正的reward:被敌人杀掉扣分,杀掉敌人加分
Reward shaping:扣血扣分,损失弹药扣分,捡到医药包或补给包加分,总是呆在原地扣分,如果动一下就给一点点分数,每次agent活着就要被扣一点点分(防止agent贴着边缘躲避敌人)。Reward shaping需要Domain knowledge,就是需要人类对游戏的理解。


reward shaping2

机器手臂把蓝色板子插到棍子上面。
Reward shaping: 让板子靠近棍子,

Reward Shaping-Curiosity

Reward Shaping有一种知名的做法是给机器加curiosity。
比如有一个例子机器玩玛丽欧游戏,只叫机器尽量碰到新东西就可以让游戏通关。


curiosity1

接下来让机器玩VizDoom,这时候机器遇到杂讯也会当成新的东西,所以需要注意要有意义的新。
下面的论文里有讲要怎么处理无意义的新这件事。


curiosity2

No Reward: Learning From Demonstration

有时候会连reward也没有。
真实环境很难定义reward。而且光定reward有时候机器可能会有一些神逻辑导致意想不到的行为。
比如威尔史密斯的机械公敌里,机器人要遵守三条规则:

  1. 不伤害人类,使人类不受伤害;
  2. 在保证第1条的前提下遵守人类命令;
  3. 机器人在保证第1和第2条的前提下保护自己。

最后机器人的决定是把所有人类都关起来,这样可以充分保证人类安全得到最高的reward。


motivation

Imitation Learning

没有reward训练的其中一个方法是Imitation Learning。
Actor仍然会跟环境互动,但是没有reward。
记录人类跟环境的互动作为示范。
用ι hat来表示专家示范。


imitation1

这个不就是supervised learning吗?
没错,有人类示范的时候有类似supervised的做法叫做Behavior Cloning。
但是光复制人类的行为有一个问题,就是人类观察的s和机器观察的s有可能不一样。


imitation2

第二个可能遇到的问题是有一些行为是人类个人特质的行为,没必要学习,但是机器也会完全复制。


imitation3

Inverse Reinforcement Learning (IRL)

所以怎么办呢?有另外一种技术叫inverse reinforcement learning,就是让机器自己定reward。
从Expert的Demonstration反向RL去反推Reward应该是怎样的,再根据Reward function去找到optimal actor。


IRL1

IRL最基本的原则是:The teacher is always the best。
在每个迭代里面:
Step1: actor先跟环境互动得到一些trajectories;
Step2: 定义一个reward function,这个function的条件是老师的行为得到的reward必须要高于actor,就是给老师高分,给actor低分。
Step3: 更新actor的参数让它maximize会得到的reward,通过RL的方法。


IRL2

可以把actor想成是GAN里的Generator, 把reward function想成是Discriminator。


IRL framework1
IRL framework2

IRL常用来训练机械手臂
用IRL之前教机器一个简单的动作也需要很多的代码很费力气。


IRL之前的机械手臂

用了IRL以后:


IRL之后的机械手臂

To Learn More……

还有一个更潮的做法是给机器一个画面让机器做到画面里的事情。
Reinforcement learning with Imagined Goals (RIG)


RIG

我自己的summary:
一、什么是RL?
RL是机器学习的一种,RL不知道最优输出是什么。RL里有Actor和Env,Env会有一个Observation (s)作为Actor的输入,Actor会输出Action,采取Action以后会影响Env产生新的s,这里Actor就是一个function,Envi会给Actor一个Reward评估好坏。RL也像ML有3步:第1步,Actor是一个Policy Network,类似一个分类任务,输入是游戏画面,输出是根据各个action的分数sample得到的;第2步,定义Loss,就是eposode得到的total reward的负值;第3步,优化,Env和Reward不是network,不能用gradient desent,要用policy gradient的方法train。
二、Policy Gradient
Policy Gradient怎么操作?1.初始化参数θ0
2.对于iteration 1到T:拿actor去跟Env互动,得到一大堆s,a的pair,计算A1,A2,…An,定义Loss,update模型。Policy gradient有2种,On-policy (收集资料的actor和被训练的actor是同一个)和Off-policy (训练的actor来自其他actor跟Env互动的资料),Off-policy比较节省时间,有一种经典的Off-policy方法是Proximal Policy Optimization (PPO)。
三、Actor-Critic
Policy gradient先要控制actor,因为actor的function像分类任务,所以loss等于cross-entropy,如果希望行为发生就取正号,反之取负号。更进一步可以给一个An系数控制action的程度差异。怎么给出An?一般是用Advantage Actor-Critic方法给出,公式具体是At=rt+Vθ(st+1)-Vθ(st)。Actor-Critic是指用Value function Vθ(s)来预测某一个actor θ看到s以后得到的discounted cumulated reward。Vθ(s)训练的方法有MC和TD两种。
四、Reward Shaping
Reward Shaping (RS)是指遇到Sparse Reward (r多数为0)的情况的时候基于人类对任务的认知人为地定义一些reward。RS有一种做法是给机器加curiosity,但要注意是有意义的新。
五、No Reward
现实任务很多连reward也没有,可以从Demonstration of the expert中学习,比如Imitation learning,直接复制专家的行为叫做Behavior Cloning,更高级的imitation是Inverse Reinforcement Learning (IRL),就是让机器从Expert的Demonstration反向RL去反推Reward,再根据Reward function去找到optimal actor。IRL的迭代过程类似于GAN,可以把actor想成是Generator, 把reward function想成Discriminator。IRL常用来训练机械手臂。

b站学习链接:https://www.bilibili.com/video/BV1JA411c7VT?p=30

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

推荐阅读更多精彩内容