如果reward大多数情况下都是0,只有少数是很大的值。
这种情况下就是稀疏reward的问题。
比如你要教机械手臂拴螺丝,只有最后把螺丝栓进去才可以,其余机械手臂的位置都不可以。
额外的reward帮agent学习。reward shaping
射击游戏cs,这个游戏中,被射击扣分,射击到敌人加分,为了防止机器一直原地转圈圈不去攻击,所以活着给一个很小的负的reward。
可以设置一个接近目标的reward,比如机械手臂接近棍子,机械手臂从棍子上方接近棍子。reward shaping 需要你对问题理解很深刻。
例子:
让agent 玩马里奥,他的reward就是看到新的东西就可以过一些关卡。
=======================================================================
如果没有reward怎么办
或者是定义了reward但是机器可能有些不太对的逻辑
比如给机器人定义三个准则:机器人不能伤害人类,在满足第一条的情况下机器人必须听从人类,第三条在满足12的情况下机器人要保护自己。--》机器人得出结论要把人类监禁起来防止人类自杀
那么没有reward的时,怎么训练呢
imitation learning
找很多人类示范,t-hat(expert)作为示范
比如人类驾驶的记录作为示范。
比如机械手臂拿东西,可以人类操作机械手臂示范一次
这不就是监督学习吗?
但是人类和机器看到的有可能不一样,比如转弯的时候人类可以顺利的转弯,但是机器没转过去的画面机器没看到过。
还有就是人类的有些行为需要模仿有些可能不用模仿。甚至只是模仿人类也会限制机器的能力上限
Inverse Reinforcement Learning
用专家做示范,学习出reward funtion
基本原则是老师的行为是最好的,老师的行为可以得到最高的reward。
先初始化actor,和环境互动,得到trajectories.让老师与环境做互动,然后得到trajectories.然后这个reward function评估老师的要得到高分,评估actor的比较低。然后估算出reward function
如下图,可以把reward function看作是gan里的分辨模型,actor是生成模型。
往往操作一个机械手臂完成一个任务,可能需要写很长的程序,控制他的每个关节等。如果示范给他就可以学习示范动作。
现在还有更新的做法如下图,给机器一个画面,让机器做出画面中的行文。