模仿学习(Imitation Learning)完全介绍(一)

模仿学习(Imitation Learning)完全介绍(一)

在传统的强化学习任务中,通常通过计算累积奖赏来学习最优策略(policy),这种方式简单直接,而且在可以获得较多训练数据的情况下有较好的表现。然而在多步决策(sequential decision)中,学习器不能频繁地得到奖励,且这种基于累积奖赏及学习方式存在非常巨大的搜索空间。而模仿学习(Imitation Learning)的方法经过多年的发展,已经能够很好地解决多步决策问题,在机器人、 NLP 等领域也有很多的应用。

模仿学习是指从示教者提供的范例中学习,一般提供人类专家的决策数据\left\{ \tau_1,\tau_2,\ldots,\tau_m \right\} ,每个决策包含状态和动作序列\tau_i = <s_1^i,a_1^i,s_2^i,a_2^i,\ldots,s_{n_ni+1}^i>,将所有「状态-动作对」抽取出来构造新的集合 \mathcal{D}=\left\{ (s_1,a_1),(s_2,a_2),(s_3,a_3),\ldots \right\}

之后就可以把状态作为特征(feature),动作作为标记(label)进行分类(对于离散动作)或回归(对于连续动作)的学习从而得到最优策略模型。模型的训练目标是使模型生成的状态-动作轨迹分布和输入的轨迹分布相匹配。从某种角度说,有点像自动编码器(Autoencoder)也与目前大火的 GANs 很类似。

在简单自动驾驶任务中(如下图),状态就是指汽车摄像头所观测到的画面o_t(很多强化学习任务中 o_ts_t是可以互换的),动作即转向角度。根据人类提供的状态动作对来习得驾驶策略。这个任务也叫做行为克隆(Behavior Cloning),即作为监督学习的模仿学习。

但是不是我们完成训练后模型就能够有比较好的效果?答案是否定的,这里存在复合误差(compounding errors),训练好的策略模型\pi_{\theta}执行的轨迹和训练轨迹的误差会随时间的增加而越变越大,用公式表示即E[errors] \le \varepsilon (T + (T-1) + (T-2) + \ldots + 1) \propto \varepsilon T^2\varepsilon 代表在 t 时刻c误差的概率,在每个时刻 T ,E[errors] \le \varepsilon T),具体效果见下图:


数据增广(Data Augmentation)

为了解决误差随时间越来越大的问题,可以采用数据增广(Data Augmentation)方法,如下图,这是一个端对端的自动驾驶解决方案(NVIDIA 2016),汽车装配了左右两侧的摄像头与中央摄像头来获取当前观测的环境,并且能够通过 Back propagation 使其从错误状态中恢复。它在训练模型前人为地调整了环境不好时汽车的运动动作,另外,摄像头图像的识别采用的是卷积神经网络。

如果我们能够获取大量的训练数据形成一个合适的状态概率分布或者说样本空间,从而得到一个很好的策略模型同样能直接地解决这个问题(如图)。但这往往不太现实,因为需要耗费的成本太大。起初大部分研究者也几乎全在研究如何优化策略减少误差,并提出了很多方法,但都不是十分有效。

DAgger (Dataset Aggregation)

该方法则将研究目的从优化策略\pi_\theta(u_t|o_t),即令p_{\pi_\theta}(o_t) 趋近p_{data}(o_t),转移到增加训练数据上,即令样本空间更加接近真实样本空间。具体算法如下:

  1. 通过数据集\mathcal{D}=\left\{ (o_1,a_1),(o_2,a_2),(o_3,a_3),\ldots \right\} 训练出策略 \pi_\theta(u_t|o_t)
  2. 执行\pi_\theta(u_t|o_t) 得到一个新的数据集\mathcal{D}_\pi=\left\{ o_1,o_2,o_3,\ldots \right\}
  3. 人工给\mathcal{D}_\pi中的状态标上动作(action)u_t
  4. 聚合(Aggregate):\mathcal{D}\leftarrow \mathcal{D}\cup \mathcal{D}_\pi
  5. 跳到步骤 1


从上述步骤中,我们可以看到 DAgger 最大的问题是第三步,第三步需要人为地去打标记,这是没有人愿意干的工作。那「自动」地办法代替人完成这个工作呢?答案是肯定的,比如 iLQR 方法,比较复杂,会在之后发的关于 CS294 的笔记里细说。

对模仿学习的应用场景而言,在仅仅使用模仿学习算法本身时,没有具体的理论去说明模仿学习什么时候表现好,什么时候表现不好,但很多时候都得不到很好的效果。它通常在下面几种情况里表现很好:

    1. 有很好的观测器,比如前文提到的左右摄像头引入了更强更丰富的状态信息
    2. 数据取样自一个很健壮的路径规划分布
    3. 增加更多在线策略生成的数据,比如使用 DAgger


下面是 CS294-112 中提到的模仿学习的两个具体应用:

案例一(下图)是通过三个摄像头采集的图像描述s_t ,人类行走的方向作为u_tu_t拥有离散的三个量,直走(straight)、右转(right)和左转(left)。获得数据后直接作为分类问题(classification)进行训练,取得了比较好的效果。实现论文见文末参考资料[4]。

案例二使用了前面提到的 DAgger 方法,图中红线的位置是每个状态的标记,第三步即人工拖拽红线到合适的位置。论文见文末参考资料[5]。

结构化预测(Structured prediction)

结构化预测问题由输入空间\mathcal{X},输出空间\mathcal{Y}\mathcal{X} \times \mathcal{Y} 服从的一个固定但未知的分布\mathcal{D}和一个非负的损失函数l(y^*,\hat{y})\rightarrow \mathbb{R} \geq 0组成。其目的是用样本中的数据习得能最小化损失的映射f:\mathcal{X}\rightarrow\mathcal{Y}。下面是使用结构化预测在 Sequence labelling 中的几个样例:


1. Part of speech tagging(语言词性标记)


x = the monster ate the sandwich
y = Dt    Nn    Vb   Dt  Nn

2. Name Entity Recognition(名字检测)

x = yesterday I traveled to Lille
y = -        PER   -     -   LOC

3. Attentive Tracking(目标跟踪)


除此之外,结构化预测在字幕生成、机器翻译等 NLP 领域也有应用。

下面是结构化预测在强化学习中的定义:

Sequence labelling
x = the monster ate the sandwich
y = Dt Nn Vb Dt Nn
  • State: 输入序列 x 和已经生成的标签
  • Actions: 下一个输出的标签
  • Reward: 当预测值和真实值符合时l(e)=l(y^*,y_e) reward > 0

Image captioning(图像标题)

标题:A blue monster is eating a cookie

  • State: 图像信息和已经生成词句
  • Actions: 下一个输出的词语
  • Reward: 当预测值和真实值符合时l(e)=l(y^*,y_e) reward > 0

(这里的损失函数不可分解)

结构化预测问题通常会用到循环神经网络(RNN),值得注意的是y_t=x_{t+1}


在 RNN 模型中,对训练数据\mathcal{D} = {(x^{(i)},y^{(i)})},需寻找到最优参数 \theta^* = \arg\max_\theta \log \sum_{(x^(i),y^(i)\in \mathcal{D})} P_\theta(y^{i}|x^{i}),其中\log P_\theta(y|x)=\sum_{t}\log P_\theta(y_t|h_t)

再把符号\theta表示参数向量和策略函数,可得\hat{\theta}(h_t) = \arg \max_y P(y_t=y| h_t;\theta),参考策略(输出 y 的真实值)是\theta^*(h_t)=y_t。算法如下:


具体关于这个应用的细节可以参见论文:参考资料[8]。

再举一个使用 LSTMs 的有监督模仿学习案例,如下图,机器人需要通过模仿学习学会拣起并放置小物块,这里的输入 X 是所有对象的姿势、旋转和位置情况,以及操纵装置的状态,输出 y 是操纵装置的下一个 pose。具体实现论文见参考资料[9]。


模仿学习的方法还有 Interaction & active learning,Inverse reinforcement learning(IRL) 等。IRL 是应用比较多的一种方法,与其它方法直接模仿人类行为不同,它是根据观测来确定奖励函数,之后的文章会具体展开。

最后再说下模仿学习的局限,一是需要人类专家提供数据这点通常得花大量精力,而且采用深度网络的学习方式又需要大量的数据;二是在一些复杂困难的行为里,我们无法提供相关的行为数据,比如飞机的花式表演。另外,人类可以自身的实践里获得越来越多的数据来实现自我的一步步提升,机器应该也可以逐渐达到这个效果。

参考资料:

  1. CMU 10703: Deep RL and Control (Lecture 3/6)
  2. CS 294 Lecture 2-3
  3. 周志华《机器学习》强化学习-模仿学习部分
  4. Alessandro Giusti et al., A Machine Learning Approach to Visual Perception of Forest Trails for Mobile Robots
  5. Shreyansh Daftry et al.,Learning Transferable Policies for Monocular Reactive MAV Control
  6. Bagnell, An Invitation to Imitation
  7. Bojarski et al., End to End Learning for Self-Driving Cars
  8. "https://arxiv.org/abs/1607.05241">Nguyen, Imitation Learning with Recurrent Neural Networks
  9. Rouhollah et al., Learning real manipulation tasks from virtual demonstrations using LSTM
编辑于 2017-11-26

文章被以下专栏收录