油管链接
一、摘要 当环境奖励特别稀疏的时候,强化学习方法通常很难训练(traditionally struggle)。一个有效的方式是通过人类示范者(human demonstrator)提供模仿轨迹(imitate trajectories)来指导强化学习的探索方向,通常的做法是观看人类高手玩游戏的视频。
这里的问题是演示的素材(demonstrations),即人类高手的视频,通常不能直接使用。
因为不同的视频来源通常有细微的差异(domain gap),只有在完全相同的环境中(尺寸、分辨率、横纵比、颜色等等)获得状态信息\(S\),同时获得对应需要模仿的动作信息\(a\),甚至环境回报\(r\),然后构成状态动作对\((S,a)\)才能进行模仿学习。
比如,人类在观察一段游戏视频后,不管游戏是否存在色差、显示大小是否一样,都可以大致知道自己该如何操作(上下左右等),但是把这段视频提供给智能体(agent),微小的色差等显示变化都会让智能体误解成不同的状态,同时智能体也无法直接从视频中悟出该采取什么动作。归结起来就是两点:1. 游戏镜头不匹配(unaligned gameplay footage); 2. 没有动作标签(unlabeled)。
文章提出了一种分两步解决该问题的方法。1.通过自监督(self-supervised)的学习方式构造视频到状态抽象特征的映射,消除不同视频来源的细微差异造成的影响。2.用输出的抽象特征作为状态\(S\),结合模仿学习和强化学习探索最优动作。
该方法在Montezuma's Revenge、Pitfall、Private Eye三个游戏中取得了超越人类水平的效果。
Montezuma's Revenge
Pitfall
Private Eye
问题分析
这个问题(domain gap)就如摘要中所说,由于游戏存在不同版本,尺寸、分辨率、横纵比、颜色等等都有细微差别,所以就算是同一游戏状态,不同玩家的视频也不会完全匹配(unaligned footage)。如下图所示:
可以看到,对于同一游戏状态,右边四幅图在上述方面有明显的差异。本文提出的方法有效解决了这个问题。用t-SNE将处理后的特征可视化,效果如下图所示:
可以看到,通过该方法,不同来源的视频在特征空间上的表征一致,且可以和游戏动作序列化对应。
具体方法
对于这个问题,作者的想法是构造一个辅助任务让神经网络(embedding network)去学习,希望网络可以学到关键的特征而忽略不必要的差异。又由于没有任务标签,于是采用自监督(self-supervision)的方式构造标签并进行训练。文章提出了Temporal distance classification(TDC)和Cross-modal temporal distance classification(CMC)两种方法。
Temporal distance classification
利用同一视频中,视频序列的时间关系构建一个时间标签的监督学习任务,即让网络去预测同一视频中任意抽取的两帧图像之间的时间差分距离\(\Delta t\)。作者解释说,这个任务需要网络理解不同帧图像在时间上的转移关系,有助于网络学习到环境和agent交互过程中的环境变化规律(This task requires an understanding of how visual features move
and transform over time, thus encouraging an embedding that learns meaningful abstractions of
environment dynamics conditioned on agent interactions.)。
具体构造如下:
按照时间差分距离分成6个区间类别,记为\(d_k \in \{[0],[1],[2],[3-4],[5-20],[21-200]\}\)。其中[1]表示时间上相差1,[3-4]表示时间上相差3或者4,其他同理。考虑两帧图像\(v,w \in I\),我们让网络学会预测两帧图像的时间差区间\(d_k\)。具体的,这里构造了两个函数:visual embedding function \(\phi:I \rightarrow R^N\),classifier function \(\tau_{td}:R^N \times R^N \rightarrow R^K\)。其中visual embedding function从图像中提取出抽象特征(N维),classifier function预测两帧图像之间的时间差(K类的分类器)。每个函数都是一个神经网络,然后将两个网络合起来训练,即训练\(\tau_{td}(\phi(v),\phi(w))\)预测类别\(d_k\)。
损失函数使用交叉熵损失:
\(L_{td}(v^i,w^i,y^i)=-\sum_{j=1}^Ky_j^ilog(\hat{y}_j^i) \ \ \ with \ \ \hat{y}^i=\tau_{td}(\phi(v^i),\phi(w^i))\) 其中\(y^i\)为真实label,\(\hat{y}^i\)为网络预测的label。