在传统的强化学习任务中,通常通过计算累积奖赏来学习最优策略(policy),这种方式简单直接,而且在可以获得较多训练数据的情况下有较好的表现。然而在多步决策(sequential decision)中,学习器不能频繁地得到奖励,且这种基于累积奖赏及学习方式存在非常巨大的搜索空间。而模仿学习(Imitation Learning)的方法经过多年的发展,已经能够很好地解决多步决策问题,在机器人、 NLP 等领域也有很多的应用。
模仿学习是指从示教者提供的范例中学习,一般提供人类专家的决策数据,每个决策包含状态和动作序列,将所有「状态-动作对」抽取出来构造新的集合 。
之后就可以把状态作为特征(feature),动作作为标记(label)进行分类(对于离散动作)或回归(对于连续动作)的学习从而得到最优策略模型。模型的训练目标是使模型生成的状态-动作轨迹分布和输入的轨迹分布相匹配。从某种角度说,有点像自动编码器(Autoencoder)也与目前大火的 GANs 很类似。
在简单自动驾驶任务中(如下图),状态就是指汽车摄像头所观测到的画面(很多强化学习任务中 和是可以互换的),动作即转向角度。根据人类提供的状态动作对来习得驾驶策略。这个任务也叫做行为克隆(Behavior Cloning),即作为监督学习的模仿学习。
但是不是我们完成训练后模型就能够有比较好的效果?答案是否定的,这里存在复合误差(compounding errors),训练好的策略模型执行的轨迹和训练轨迹的误差会随时间的增加而越变越大,,具体效果见下图:
数据增广(Data Augmentation)
为了解决误差随时间越来越大的问题,可以采用数据增广(Data Augmentation)方法,如下图,这是一个端对端的自动驾驶解决方案(NVIDIA 2016),汽车装配了左右两侧的摄像头与中央摄像头来获取当前观测的环境,并且能够通过 Back propagation 使其从错误状态中恢复。它在训练模型前人为地调整了环境不好时汽车的运动动作,另外,摄像头图像的识别采用的是卷积神经网络。
如果我们能够获取大量的训练数据形成一个合适的状态概率分布或者说样本空间,从而得到一个很好的策略模型同样能直接地解决这个问题(如图)。但这往往不太现实,因为需要耗费的成本太大。起初大部分研究者也几乎全在研究如何优化策略减少误差,并提出了很多方法,但都不是十分有效。
DAgger (Dataset Aggregation)
该方法则将研究目的从优化策略,转移到增加训练数据上,即令样本空间更加接近真实样本空间。
对模仿学习的应用场景而言,在仅仅使用模仿学习算法本身时,没有具体的理论去说明模仿学习什么时候表现好,什么时候表现不好,但很多时候都得不到很好的效果。它通常在下面几种情况里表现很好:
有很好的观测器,比如前文提到的左右摄像头引入了更强更丰富的状态信息
数据取样自一个很健壮的路径规划分布
增加更多在线策略生成的数据,比如使用 DAgger
下面是 CS294-112 中提到的模仿学习的两个具体应用:
案例一(下图)是通过三个摄像头采集的图像描述St,人类行走的方向作为Ut,Ut拥有离散的三个量,直走(straight)、右转(right)和左转(left)。获得数据后直接作为分类问题(classification)进行训练,取得了比较好的效果。实现论文见文末参考资料[4]。
案例二使用了前面提到的 DAgger 方法,图中红线的位置是每个状态的标记,第三步即人工拖拽红线到合适的位置。论文见文末参考资料[5]。
结构化预测(Structured prediction)
结构化预测问题由输入空间
,输出空间, 服从的一个固定但未知的分布和一个非负的损失函数组成。其目的是用样本中的数据习得能最小化损失的映射。下面是使用结构化预测在 Sequence labelling 中的几个样例:
1. Part of speech tagging(语言词性标记)
2. Name Entity Recognition(名字检测)
3. Attentive Tracking(目标跟踪)
除此之外,结构化预测在字幕生成、机器翻译等 NLP 领域也有应用。
再举一个使用 LSTMs 的有监督模仿学习案例,如下图,机器人需要通过模仿学习学会捡起并放置小物块,这里的输入 X 是所有对象的姿势、旋转和位置情况,以及操纵装置的状态,输出 y 是操纵装置的下一个 pose。具体实现论文见参考资料[9]。
模仿学习的方法还有 Interaction & active learning,Inverse reinforcement learning(IRL) 等。IRL 是应用比较多的一种方法,与其它方法直接模仿人类行为不同,它是根据观测来确定奖励函数,之后的文章会具体展开。
最后再说下模仿学习的局限,一是需要人类专家提供数据这点通常得花大量精力,而且采用深度网络的学习方式又需要大量的数据;二是在一些复杂困难的行为里,我们无法提供相关的行为数据,比如飞机的花式表演。另外,人类可以自身的实践里获得越来越多的数据来实现自我的一步步提升,机器应该也可以逐渐达到这个效果。
领取专属 10元无门槛券
私享最新 技术干货