作者thefattiger (LawTea)
看板DataScience
标题Re: [心得] 文章翻译:为何DRL还行不通? Part2
时间Mon Sep 17 23:43:40 2018
Github好读版
https://github.com/LilTwo/Article/issues/2
这是本系列第二部分,比想像中还多...
看来还需要再三篇才能翻完
奖励函数的设计是很难的
只是要得到一个奖励函数并不难
困难的点在於奖励函数的设计要能奖励那些你想要的行为,并且要是可学习
在HalfCheetah环境,你有一个两只脚的机器人,被限制在垂直平面
意味着它只能向前或向後移动
https://www.alexirpan.com/public/rl-hard/upright_half_cheetah.mp4
此环境的目标是学习如何跑步,奖励是机器人的速度
这种奖励是shaped reward,意思是当状态离目标越近时,会得到越多的奖励
这与sparse reward相反,sparse reward只有在达到目标时会给予奖励,其余状态则没有
任何奖励
shaped reward通常好学很多,因为即使策略还没有完全解决问题,它也会给出正面的回
馈
不幸地,shaped reward可以让学习出现偏差,就如之前所说,这可能会导致你不想要的
行为出现
这篇部落格文章是一个好的例子
https://blog.openai.com/faulty-reward-functions/
这是关於一个赛船游戏,目标是要完成比赛
可以想像sparse reward只有完成比赛时会给予+1的奖励,其他状况则都给予0的奖励
而下面影片中的采用的奖励函数则是当到达检查点以及拿到加速道具(可以让你更快完成
比赛)时都会给予奖励,但最後的结果是策略发现不断地重新拿到加速道具可以获得的奖
励比完成比赛还多
https://www.youtube.com/watch?time_continue=27&v=tlOIHko8ySg
老实说,当这篇文章刚出来时我对它有点反感,并不是因为我觉得它讲得不够到位
而是我认为这个结果是非常显而易见的,当你使用不适当的奖励函数时RL当然会学到一些
怪事!
我感觉这篇部落格文有点小题大作了
後来我开始写篇文章时,才发现这部影片是用来解释不适当的奖励函数时最有说服力的范
例
并且已经被用在许多说明此问题的主题上了,所以我只好承认那篇部落格文还是挺不错的
部分RL演算法具有很多关於环境的知识
另一部分则对於环境没有太多了解,例如RL中最广的分支:model-free RL
这种RL几乎等同於黑盒优化(black box optimization)
它们只知道自己身处一个MDP,完全没有其他知识
agent只被告知做这些事情会得到+1的奖励,做那些事情则无
而问题在於任何给予+1奖励的事情都是好的,即使得到这些奖励并不来自於正确的结果
一个经典的非RL例子为应用遗传演算法来做电路设计,然後得到一个必须有未连结逻辑闸
的电路
https://www.alexirpan.com/public/rl-hard/circuit.png
要得到正确的行为,灰色的区块是必须的,包括最左上角的那一个,即使它没有连接到任
何东西
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.50.9691&rep=rep1&type=pdf
一个比较近期的例子可以看这篇文章
https://www.salesforce.com/products/einstein/ai-research/tl-dr-reinforced-model-abstractive-summarization/
他们的目标是自动摘要撷取,并且使用一个以SL方式训练的模型做为比较基准
比较方式是藉由一个叫ROGUE的度量标准,ROUGE是不可微分的
但RL可以处理不可微分的奖励函数,所以他们试着直接对ROUGE做优化
结果是RL得到了很高的ROGUE分数,但并没有取得很好的摘要撷取结果
所以最後他们采取了另一种的模型
https://arxiv.org/abs/1705.04304
另一个例子是这篇paper,有时被称为"Lego stacking paper"
https://arxiv.org/abs/1704.03073
使用的的算法是分散式的DDPG,目标是把红色积木抓起来叠到蓝色积木上
他们成功地让RL运作了,但也遇到的一些一致的失败案例
在第一个抓取任务时,奖励是以红色积木的高度来决定,这是以红色积木底层平面的z座
标来定义
https://www.youtube.com/watch?time_continue=27&v=8QnD8ZM0YCo
一个失败的模式是策略学到将积木翻过来而不是把它抓起来,显然这不是原本的目的,但
RL不管这个
从RL的角度来看,将积木翻过来可以得到奖励,所以它就会这麽做
一个解决方法是将奖励改成sparse reward,让奖励函数只有在积木成功叠起来时会给予
正的值
有时候可以这样做,因为sparse reward是可以学习的
但更多的时候过少的正面回馈会让训练变得太难
另一个方法是更谨慎地定义奖励函数,加入新的项或是修改现有的系数
直到RL学到的行为是你想要它学的
这样的调整是可能让RL变得更好的并且有时候是必要的,但是让人不太满意
在这些调整过程中我总是觉得学不到任何东西
为了给读者参考,下面是Lego stacking paper的奖励函数
https://www.alexirpan.com/public/rl-hard/lego_reward.png
我不知道他们花了多久时间来设计这个奖励,但根据这些项以及系数的数量,我猜花了很
久
与RL研究者聊天时,我听他们讲过一些不适当的奖励函数会造成的有趣怪行为
1.一个agent被训练来探索一个房间,当agent走到房间的边界时即结束episode
他对於episode的结束没有加入任何惩罚机制,结果最後学到是一个自杀策略
因为负奖励太多了,正的奖励太难取得,所以agent倾向快速的自杀以取得0奖励
2.一个机器手臂被训练来碰到桌上的某个目标点,点的座标是根据桌子的相对位置定义的
而桌子没有被固定住,结果手臂学到的策略是把桌子翻到,让目标点也跟着桌子移动
桌子倒下来目标点也刚好在手臂端点的旁边了
3.一个机器人被训练来捡起一个槌子并把钉子槌进洞里
一开始奖励是被定义为订子离洞还有多远,结果机器人用它自己的肢体把钉子槌进去,而
不会使用槌子
所以他们加入一些奖励鼓励机器人捡起槌子,他们也得到一个会捡起槌子的策略
但是之後机器人朝着钉子丢出槌子而不是使用它
当然这些都是二手消息,我没有看过关於这些例子的影片
但对我来说这些听起来都是有可能的,我已经因为过於相信RL而失望很多次了
即使有了一个好的奖励函数,也很容易陷入局部最佳
前面的几个RL例子,有时也被称为reward hacking(不合适的reward设计)
从我的观点来看,这暗示了有一个聪明、跳脱框架的答案
这个答案相较於奖励函数设计者所预期的行为可以取得更多的奖励
比起reward hacking,更常见的例子是困在不够好的局部最佳解
这来自於exploration-exploitation取舍错误
底下这个影片是我最喜欢用来说明这个现象的例子,他们采用了Normalized Advantage
Function
https://arxiv.org/abs/1603.00748
影片如下
https://www.alexirpan.com/public/rl-hard/upsidedown_half_cheetah.mp4
从旁观者来看,这真的非常愚蠢,但这是因为我们第三者的位置来看,并且我们早就知道
用脚跑步是更好的,但RL并不知道!
它只看到一个状态向量,给出一个动作项辆,然後得到一些正面的奖励,仅此而已
底下是我对於训练过程的猜测:
1.在随机的探索过程中,策略发现向前倒下比站着更好
2.重复了多次的训练过程後,1.的行为变成固定的
3.向前倒下之後,策略学习到如果施了一次很大的力,会让agent做空翻,并得到更多奖
励
4.重复了多次训练过程後,3.的行为也变成固定的
4.一但空翻的动作变成固定之後,接下要策略要学习:在躺着的情况下把自己向右移动,
或是站起来後再用标准的动作向右走,显然前者胜出了
这个现象非常好玩,但当然,并不是我们要的结果
底下是Reacher环境里,另一个失败的结果
https://www.alexirpan.com/public/rl-hard/failed_reacher.mp4
在这次的训练中,初始的随机权重倾向输出一个较大的动作,这让大部分的动作都输出极
值
而要快速地旋转是很简单的,只要在每个关节中一直给予很大的力
一但机器人陷入这个情况,就很难再脱离了,要脱离必须要有足够多的探索步骤来停止旋
转
当然这是可能的,但在这个例子下并没有
这些exploration-exploitation取舍问题已经困扰了RL的研究很久了
你的训练资料来自於现有的策略,如果策略探索太多你会取得一堆没用的资料
如果策略利用太多则会让你陷入一个非最佳的策略
有一些直觉上的方法可以一定程度地解决这个问题: intrinsic motivation,
curiosity-driven exploration, count-based exploration等等
这些方法很多是在1980年代以前就被提出来,最近又随着深度网路的出现被重新提起
不过就我所知,没有一个方法能在所有环境中都有效地发挥作用
最好还是有一个exploration-exploitation策略在所用环境都能顺利作用
但我想这种策略短时间内还不太可能被发现
不是因为人们没有在尝试,而是exploration-exploitation真的、真的、真的很难
底下引用一段维基的话:
Originally considered by Allied scientists in World War II, it proved so
intractable that, according to Peter Whittle, the problem was proposed to be
dropped over Germany so that German scientists could also waste their time on
it.
我现在将DRL想像为一个故意误解你的奖励函数,并且积极地往最懒惰的局部最佳搜寻的
恶魔
这听起来很荒谬,但我也发现它实际上是讲究效率的
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 58.114.212.150
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1537199032.A.400.html
※ 编辑: thefattiger (58.114.212.150), 09/17/2018 23:48:00
1F:推 st1009: 推推 09/18 18:58
2F:推 Jarlan: 感谢好心提供~ 09/18 20:04
3F:推 jamebozo: 非常有趣 10/01 05:27
4F:推 cloudandfree: 非常有意思 10/04 08:13
5F:推 goldflower: 推推 10/05 12:24
6F:推 Echeo: 有看有推 10/13 07:46
7F:推 tonyadsl: 推 10/13 11:58