引言
这是李宏毅强化学习的笔记,主要介绍如何处理稀疏奖励问题。
稀疏奖励
当我们拿Actor和环境互动后可以得到很多奖励,整理之后可以得到分数 A A A,然后可以训练Actor。
但RL中有时会出现多数情况下奖励为零,此时我们不知道动作的好坏。就像下围棋一样,只有最终游戏结束才能得到奖励。
其实下围棋还好,更困难的是诸如教机械臂去拧螺丝,一般只有把螺帽拧进螺丝中才能获得奖励。但是随机初始化的机械臂很难碰巧将螺丝拧进去。此时需要定义额外的奖励来引导Actor去学习——这种做法就叫奖励塑形(reward shaping)。
奖励塑形
这里介绍了一篇工作TRAINING AGENT FOR FIRST-PERSON SHOOTER
GAME WITH ACTOR-CRITIC CURRICULUM LEARNING利用奖励塑形来类似训练模型打CS。
想成是吃鸡会比较有趣。
游戏里面被打死会扣分(负奖励),杀死敌人会加分(正奖励)。但是只通过这个奖励来训练智能体是很难的,这篇工作利用了奖励塑形的概念来定义其他奖励:
比如掉血(health loss)就得到-0.05的奖励;损失子弹(ammo loss)也扣一点分数;捡到医疗包(health pickup)会得到0.04的奖励;捡到子弹(ammo pickup)也会加分;
然后还有一些有意思的奖励设定:如果原地不动(dist penalty)也会扣分(-0.03);如果移动(dist reward)就给一个很小的正奖励;如果智能体活着(living)也会被扣分(-0.008),这个用来防止智能体苟分,鼓励智能体去击杀敌人。
实际上吃鸡中有毒圈本身可以防止一直苟分。
显然奖励塑形是需要领域知识的。
另外还有一个来自文章Reverse Curriculum Generation for Reinforcement Learning Agents的例子:
要训练机械臂将带洞的蓝色板套入这根棍子中,显然凭空学到这件事很不容易。
但是我们可以想到很直觉的方法,比如定义蓝色板离棍子的距离越近,奖励越大;但单纯靠距离衡量是不够的,比如还要板子中的洞靠近棍子顶部等等。
好奇心
在奖励塑形中有一种给模型加上Curiosity(好奇心)的方法。即探索新事物,如果Actor在活动的过程中看到(有意义的)新事物就会被加分。
Curiosity-driven Exploration by Self-supervised Prediction这篇工作在无奖励的情况下训练机器玩超级玛丽。
https://pathak22.github.io/noreward-rl/ 可以看到演示视频。
因为超级玛丽只有通关的时候才会有奖励,也属于稀疏奖励的情况。这篇工作通过设定好奇心鼓励机器不断地看到新东西(新场景)来训练机器通关,这个设定比较符合这款游戏,因为只有玛丽不断王往右走才能看到新场景。
上面说的有意义的新事物是排除掉无意义的噪音画面:
比如这种画面它的像素点是随机的,绝对够新,但无意义。