Mineclip

3 阅读1分钟

原论文标题是"MINEDOJO:Building Open-Ended Embodied Agents with INternet-Scale Knowledge"

在此之前,Minecraft已经被改写成了多个强化学习环境。而MINEDOJO与其他环境相比,专注于多任务和开放式结局。由于这个环境是为任务打造的,所以在使用时,需要先设定好任务内容。其中的任务可分为两种:格式化任务(Programmatic Tasks)和创造性任务(Creative Task)。

格式化任务

格式化任务由一个五元组定义: T=(G,G,I,fS,fR)T = (G, \mathcal{G}, \mathcal{I}, f_S, f_{\mathcal{R}}) 

  • 其中 GGG\mathcal{G} 分别为用自然语言描述的任务目标和任务指导;

  • I\mathcal{I} :为agent和环境的初始状态参数;

  •  fSf_S为判定任务是否成功的函数;

  • fRf_{\mathcal{R}} 人为设定密集奖励函数(防止奖励太稀疏,即只有最后做出来才给分,这里会设定一些中间奖励)。

创造性任务

创造性任务只由三元组定义:T=(G,G,I)T = (G, \mathcal{G}, \mathcal{I})。缺少了 fSf_SfRf_{\mathcal{R}},因为“创造性”意味着没有标准答案。意味着创造性任务是真正意义上的开放式结局任务。这些任务的任务目标 GG 一部分是在 YouTube 上根据大佬视频找的,一部分甚至是使用 GPT-3 模型生成的。也就是说,一些任务甚至是人都没有想到过的,对于这些情况又该如何设定他的奖励函数呢?这就就要引入下面一个内容——MINECLIP。

MINECLIP 借鉴了已有的 image-text CLIP model,它定义为:ΦR:(G,V)R\Phi_{\mathcal{R}} : (G, V) \rightarrow \mathbb{R},输入 G,VG, V 分别是文字目标和观测的视频,RR是reward,训练时使用的是文字目标以及获取到的数据视频和视频的标签

然人写不出奖励函数,那就让 AI 通过看 YouTube 视频(视频+对应的文字描述)自学。它学到了“钓鱼”这个词对应的视觉特征是什么。它完美替代了消失的 fSf_SfRf_{\mathcal{R}}。当你给 Agent 一个前所未有的任务时,MINECLIP 依然能根据它在互联网上学到的知识,给 Agent 提供实时的打分

得到视频 - 文字对集后,需要将其转化为 ΦR:(G,V)R\Phi_{\mathcal{R}} : (G, V) \to \mathbb{R}。文章采用了直接法 (Direct)作差法 (Delta) 两种方式。

直接法

直接法即计算观测的视频 VtV_t 和目标的文字要求 GG,计算出与当前观测与目标的匹配概率 PGP_G。则最终的奖励为:

r=max(PG1NT,0)r = max(P_G - \frac{1}{N_T}, 0)

其中 NTN_T 为计算 MINECLIP 时输入的文字集数量,1NT\frac{1}{N_T} 即随机预测的 baseline。

作差法

直接法在应对运动目标的时候效果较好,但如果应对静止目标时可能会陷入次优解。因此改用奖励:

rt=PG,tPG,t1r_t = P_{G,t} - P_{G,t-1}

在静止目标问题下效果更优。

其他 trick

自模仿学习

由于奖励函数使用的是 MINECLIP,训练代价显著提高。因此为了提高训练效果,当 agent 得到一条比较好的轨迹时便记录下来,然后再定期对保存的轨迹进行采样训练,有效地提高了训练效果。


输出动作平滑

由于模型的输入是过去几帧的的视频,如果动作幅度过于剧烈,会导致输入不够平滑且失去方向性。因此,文章在使用 PPO 算法时,加入了动作平滑 loss,定义为:

Lsmooth=1Wi=1W1KL(πtπtW+i)\mathcal{L}_{smooth} = \frac{1}{\mathcal{W}} \sum_{i=1}^{|\mathcal{W}|-1} KL(\pi_t || \pi_{t-|\mathcal{W}|+i})

其中 ∣W∣ 是输入的帧数,KL(⋅) 为 KL 散度。