Reward Shaping

当reward的分布非常分散时,对于机器而言学习如何行动会十分困难。
比如说要让一个机器人倒水进水杯里,如果不对机器人做任何指导,可能它做很多次尝试,reward都一直是零。(不知道杯子在哪,不知道拿着手上的水壶干嘛,不知道水壶靠近杯子之后应该怎么做)
因此,在训练或指导一个actor去做你想要它做的事情时,需要进行reward shaping

好奇法:

机器学习:李宏毅深度强化学习笔记(四)Sparse Reward_javascript


在原来的模型当中,actor与环境做互动,根据环境给的state,采取一定的action,并得到reward。而新的模型引入了一个新的函数,ICM(图中的橙色部分)

ICM函数将 st,at,st+1s_t, a_t, s_{t+1}st,at,st+1 作为输入,得到一种新的reward rir^iri,actor的目标现在变为最大化两个部分的reward,即 rrr 和 rir^iri。可以理解为,新的模型中,actor被鼓励基于好奇去采取不一样的行动,这样的好奇带来的行动可以给actor带来额外的收益。

ICM函数的全称为 Intrinsic curiosity module,是用来为actor生成好奇感的函数,它的网络结构如下:

机器学习:李宏毅深度强化学习笔记(四)Sparse Reward_hapi_02


在这个模型中,两个网络 network1 和 network2 是单独进行训练的。

Network 1:将提取的ata_tat 和sts_tst 的特征作为输入,输出 st+1s_{t+1}st+1 的提取特征的估计。然后真实的 st+1s_{t+1}st+1 的提取特征用来与估计值比较,得到两者之间的差别。两者差别越大则reward rir^iri 越大,也就是说,模型鼓励actor去冒险。

Network2::用来提取与action相关的游泳的特征,输入 sts_tst 和st+1s_{t+1}st+1 的 ϕ\phiϕ 值,输出估计的action atˆ\hat{a_t}at^,如果估计的action和真实的action ata_tat 接近,则 ϕ\phiϕ 可以用来提取有用的特征。

注意:当没有network 2的时候,由network 1给出来的较大的reward意味着 st+1s_{t+1}st+1 很难预测,模型会鼓励actor去冒这个险,但有的时候很难预测的这个state可能是一点都不重要的,因此需要引入network 2来进行重要性计算。比如说,在一个游戏中,对于游戏背景并不会进行太多的state的规定,如果有的时候机器学习到站在一棵树下会导致state难以预测,那么就可能会一直站在树下,但是这一行为对于游戏而言完全没有意义,因此不予考虑。

课程式学习

意味着学习的任务从简单到困难(为机器设计一套课程计划)

比如前文提到的机器人倒水的例子,最开始可以人引导机器人手臂到杯子的附近,教它做倒水的动作,之后再慢慢改变水杯,水壶等变量,让机器从简单学到复杂。

反向课程生成:

机器学习:李宏毅深度强化学习笔记(四)Sparse Reward_ios_03


给定一个目标state sgs_gsg​,在 sgs_gsg​ 的附件取一些靠近 sgs_gsg​ 的样本 s1s_1s1​,从 s1s_1s1​ 开始,每个trajectory 都会有一个reward R(s1s_1s1​),删除那些reward太大(意味着已经学会了,课程太简单)的 s1s_1s1​,以及那些太小的 s1s_1s1​(意味着当前对于机器来说这个课程难度太大),然后继续以 s1s_1s1​ 为中心采样,重复上述过程。

级联强化学习

如果低一层的agent没法达到目标,那么高一层的agent会受到惩罚(高层agent将自己的愿景传达给底层agent)
如果一个agent到了一个错误的目标,那就假设最初的目标本来就是一个错误的目标(保证已经实现的成果不被浪费)