(本文对应lecture 1和2,文中的图片来自于对课程课件截图的小修小改)
1. 强化学习简介
本节介绍在课程中我认为对于理解强化学习框架有用的一些概念。更为详细的可以参照我的其他博客。
1.1 强化学习框架中的术语
用于描述强化学习问题的核心术语有:状态state,观测observation, 动作action,策略policy, 状态转移概率state transitions (or environment dynamics)。这里需要区分状态和观测这两个概念,可以把状态理解为最底层的一个source,由状态产生了观测,如果只是已知观测,并将其映射到动作的概率分布,即
π
θ
(
a
t
∣
o
t
)
\pi_{\theta}(\bold a_t | \bold o_t)
πθ(at∣ot),这时是partially observed的情况,此时不满足Markov property的假设(见下图,可以通过将概率图部分的状态遮住,从而可以看出每一对
(
o
t
,
a
t
)
(o_t, a_t)
(ot,at)的关系是不明确的)。然而如果已知了状态,即
π
θ
(
a
t
∣
s
t
)
\pi_{\theta}(\bold a_t | \bold s_t)
πθ(at∣st),则是fully observed,该情况也满足Markov property。
1.2 强化学习与监督学习的区别
lecture 1中提到了强化学习与监督学习方法不一样的两个地方,第一个是在强化学习中,数据并不是独立同分布的(i.i.d),第二,强化学习并没有准确的标签,起到“监督”作用的只有每一个episode结束之后(对应的simulator满足episodic case)的reward值。对比标准的监督学习中,训练集和测试集必须是独立同分布的,并且训练过程中已知正确的标签。
2. 模仿学习(Imitation Learning)
2.1 模仿学习的基本流程与思路
模仿学习(behavior cloning)本质上不属于强化学习,而是一种监督学习的方法。基本流程就是先获取expert的训练数据,如果我们要学习的是策略,则一般以 o t \bold o_t ot作为输入数据,产生的动作 a t \bold a_t at作为标签,通过用监督学习的方法(例如设计MSE均方差损失函数)对参数化的策略函数进行迭代修正。
这类方法的思路在不用一些Trick的前提下是不能work的。原因就在于用于训练智能体的数据分布与智能体采取策略产生的数据分布是不一样的。直观解释可以参考下图:
这里的training trajectory(黑线)指的是用于训练agent的训练数据,红线(expected)指的是通过agent所作出的动作所获取的数据。很明显,这两种数据的概率分布肯定是不相等的。知道了这种现象出现的原因,那么以下这两种的解决思路就比较明显了,第一种是让
p
π
θ
p_{\pi_{\theta}}
pπθ不断近似
p
data
p_{\text{data}}
pdata,另一种方法是反过来。两种方法中相对容易的是后者。思考如何改进训练数据的概率分布,一种最直观的思路就是获取更多的数据,这类方法被叫做DAgger:思路就是通过agent产生的动作产生一些数据
o
t
\bold o_t
ot,从而将这些数据重新添加(aggregate)到dataset中。
从下图可以看出,DAgger的直观思想就是让红线跟训练数据的其中一条近似。
2.2 算法具体示例
本节课以16年NVIDIA发布的文章《End to End Learning for Self-Driving Cars》为例讲解模仿学习的基本思路与算法流程。General的思路与上一节一样。
该方法分为训练阶段和测试阶段(测试阶段分两个阶段,第一个阶段在模拟器上进行,第二个阶段用实车上路测试。)
训练阶段是:训练系统如下所示,采用的类似DAgger的trick是蓝框的部分,作者们在车上装了三个摄像头,left和right camera用于表示偏离中心的数据。框图最上方表示训练数据,这里的训练数据需要做一些预处理以便于与CNN的输出数据保持形式上的一致。
测试阶段是:测试阶段包括仿真测试和实车的on-road test。仿真阶段流程图如下所示,根据实车采集到的人类驾驶员操作的视频流数据,输入给CNN。模拟器会记录off-center distance, yaw的值,虚拟车辆(由CNN操控)的行驶距离,一旦off-center distance超过1m, 虚拟人类将接管该车辆,之后虚拟车辆被reset到测试视频流数据的ground truth位置。
衡量测试结果好坏的指标就是车辆能够自主驾驶占总驾驶时间的百分比。这里的假设是:真实驾驶环境中的人为干预需要耗时6秒,这6秒钟内包括人类重新控制车,将其调整到道路中心,重启自动驾驶模式。
This is the time required
for a human to retake control of the vehicle, re-center it, and then restart the self-steering mode.
on-road test中的衡量算法表现的依据依然是车辆自主驾驶(autonomous steering)的时间比例。