CS294-112: Supervised Learning of Behaviors

一、从监督学习到决策

首先来看一个标准的监督学习的例子,给定一张图片,然后通过CNN对其进行分类。
在这里插入图片描述
但是,在强化学习的世界里,重点是Agent对环境如何做出决策,即Agent看到老虎会采取什么行动, 那么我们将最后的分类标签改为一系列行为, 如 {逃跑,模仿武松打虎}, 这就是对行为(决策)的监督学习。
jc2RuLm5ldA==,size_16,color_FFFFFF,t_70)

可以看到,对行为的监督学习本质上也是一种分类任务,但是和传统分类任务不同的是:前者具有序列属性,也就是说,上一阶段的输出决定着下一阶段的输入(看到老虎选择逃跑或者打虎,之后发生的事肯定是不一样的). 在强化学习的世界里,相关元素也有专业的术语。

  • oto_t: 称为Agent对环境的观测(observation), 对应着图像分类任务中的输入图像。
  • ata_t: 称为Agent关于目前环境状态选择的行动(action), 对应着图像分类任务中的标签。
  • πθ(atst)\pi_{\theta}(a_t|s_t): 称为策略(policy), 对应着图像分类任务中的分类模型。

除此以外,在强化学习中,我们仍然需要明白状态(state)和观测(observation) 的区别。简单来说,前者表示了真实的客观世界,而后者是前者的有/无信息损失的表示。举两个例子:

  • 有损表示:
    在这里插入图片描述
    如上图所示,在这个例子中,观测即是该图片本身,由一个二维的像素矩阵组成。而状态则包含了豹的速度,猎物的速度等等物理信息。而从观测中我们无法得到这些关于客观世界的信息,因此这是一种有损的表示。

  • 无损表示:
    在这里插入图片描述
    对棋盘的描述,观测便可以作为状态的无损表示。

状态观测行为可以由如下的概率图模型表示, 且一般我们假设其满足马尔科夫性:
在这里插入图片描述

二、模仿学习

由上述对行为的监督学习,我们便可以得到强化学习中的模仿学习(Imitation Learning). 其本质便是Agent通过数据学习πθ(atot)\pi_{\theta}(a_t|o_t). 下图是自动驾驶的一个示意图:
在这里插入图片描述

但是,Agent真的能通过对有限数据的模仿从而在现实世界的任务中表现地好吗?答案是否定的. 由于序列决策任务具有错误累积的性质,因此,往往最后的结果和给定的数据相比,有很大的偏差。如下图所示:
在这里插入图片描述
如自动驾驶来说,如果小车在某一个位置做出了一点错误,那么它看到的情形将和训练集的图像有一定偏差,那么可能就会做出不好的行为,而这不好的行为又造成更大的偏差,从而累积错误。

基于此,Nvidia在它们的自动驾驶实验中,对小车安放了三个摄像头,分别观测左前方,前方,右前方,并且对左前方的图像给定一个稍右转的标签,右前方的图像给定一个稍左转的标签。这样便起到了一定的修正作用。
在这里插入图片描述
回到错误累积的问题,我们如何用数学语言描述这样的错误呢?我们认为真实的观测数据满足一个分布Pdata(ot)P_{data}(o_t). 而Agent做出的行为满足一个分布Pπθ(ot)P_{\pi_{\theta}}(o_t). Agent犯错,本质就是Pπθ(ot)P_{\pi_{\theta}}(o_t)偏离了Pdata(ot)P_{data}(o_t). 因此,我们可以通过让两个分布相等从而提高Agent表现。由此,我们有著名的DAgger: Dataset Aggregation算法:
在这里插入图片描述
该算法思想简单,也能够收敛,但是,这期间需要人的参与,需要花费大量的人力。那么如果我们没有进一步的人力资源呢。我们只能够通过构建更强大的模型,从而使得模型能够很好模仿专家的行为。

在模型模仿专家行为过程中,通常有两个难点问题。

  • 非马尔科夫性:

人类专家所作出的行为并不是满足马尔科夫性质的。这样就需要模型有着对序列建模的能力。通常,我们可以通过RNN结合CNN实现建模。
在这里插入图片描述

  • 多峰行为:
    在这里插入图片描述
    对上图所示的情形,我们可以选择左转,也可以选择右转,因此如果我们采用离散分布建模,最后的概率分布很明显如图中的蓝色所示。但是,如果我们采用连续概率分布建模呢?在该种建模中,我们通常选择高斯分布,并且通过神经网络学习其分布的均值和方差,但是高斯分布是单峰的,因此,针对这样类似的多峰行为,无论如何简单的网络都无法拟合真实情况。

针对多峰问题,我们有以下解决方案。

  • 混合高斯分布:我们采用多个高斯分布去拟合真实的连续分布。
  • 隐变量模型: 待理解
  • 自回归离散化待理解
    在这里插入图片描述

三、模仿学习的问题

  • 第一,人类需要提供数据,而人能提供的数据通常是非常有限的,即便如头戴摄像机这样相对便宜的手段被开发出来,而深度神经网络通常需要大量的数据才能把事情做好,此为一大限制。
  • 第二,人类不善于提供有些类型的行动指导,原因可能是多种多样的。
  • 第三,人类可以自主学习而机器则不能,自主学习的好处是我们可以通过自己的经验获得无限量的数据,看到错误可以自我修正,达到连续的自我提升。

四、奖励/代价函数

既然提到了模仿学习的弊端,那么,我们应该如何解决这个弊端呢?模仿学习是希望Agent模仿人的行为,这样的行为似乎是无脑,无目的性的,然而决策都是带有目的性的,因此,我们是否应该引入目的因素呢?而这,就引出了奖励/代价函数,以此来刻画目的。一般我们用r(a,s)r(a,s)表示奖励函数,用c(a,s)c(a,s)表示代价函数。它们两者是等价的。

回到最开始的问题,对于Agent见到老虎所采取的行动。我们可以设置如下的目的: argmina1,a2,...,anP(eaten by tiggera1,a2,a3..,an)arg \min_{a_1, a_2, ..., a_n}P(eaten \ by \ tigger|a_1,a_2,a_3..,a_n)

即采取的行动要使得自己被吃的概率最小。

而对于自动驾驶的这样的模仿学习,我们可以认为它们的目的就是纯粹的模仿: 即最大化似然log(a=π(s)s)log(a= \pi^*(s)|s)

总之,个人认为,引入奖励/代价函数相当于引入了目的,让Agent不再是纯粹的模仿,从而能够自我提升。

在实际问题中,奖励函数的形式也是很重要的:
在这里插入图片描述
如上图所示,下方的奖励函数都会比上方的奖励函数更加鲁棒。总体而言,奖励函数应该更加平滑,应该尽量避免非黑即白

参考文献

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章