我们有时候也会遇到需要从多条轨迹中学习策略的问题。以上图为例,我们从小红点出发,想走到小绿叉位置。然而从一个点出发的路径容易规划,但是这样一条单一的路径可能对策略学习不太好,所以我们想从多个不同的出发点开始学习策略以提高策略的泛化能力。这样的问题又可以被表述为![](img/b3d8b4f2ad4d077d79aa47f014faa1f9.jpg),同时优化一组轨迹,减少它们的共同代价,并将它们限制在同一策略之下。这个时候 GPS 算法的第一步只需要改成对所有的![](img/31df9c730e19ca29b59dce64b99d98c1.jpg),关于![](img/61616de1801a9677c387f72db1d82758.jpg)进行轨迹优化:这一步其实可以并行完成,因为它们只与被固定下来的![](img/1bd05854f73537385ab1d87151f20ba1.jpg)有关,而互相之间其实没有联系。第二步需要把这些数据全部拿过来放在一起进行监督学习。Mordatch et al. (2015) 发表在 NIPS 上的文章"[Interactive Control of Diverse Complex Characters with Neural Networks](https://link.zhihu.com/?target=http%3A//papers.nips.cc/paper/5764-interactive-control-of-diverse-complex-characters-with-neural-networks)"就利用了这一并行(在多台机器上训练,然后合起来)的约束下的轨迹优化的方法来训练神经网络策略,在 MuJoCo 模拟器上完成了复杂生物(如类似蝙蝠翅膀,更复杂的如人形机器人的步态)的运动 (locomotion) 学习,可以做到向某一目标移动的实时控制。在训练策略之外,这样的介入策略的做法还提高了轨迹优化本身:策略的介入迫使行动成为状态的函数,使得轨迹优化会做出**周期性的稳定控制**,而不仅仅是一个不稳定的只为了到达目标的控制。在这里,不同的轨迹意味着不同的起点和终点。
首先第一步使用我们现在的线性-高斯控制器来运行机器人,以收集一些轨迹样本;第二步去用这堆轨迹去拟合模型动态(一些回归的方法),然后在信赖域中更新线性-高斯控制器。在信赖域中找新控制器的时候,我们同时使用上了用这堆轨迹数据训练的神经网络策略。在机器人学的背景下,Levine et al. (2016) 等人投稿于 JMLR 的"[End-to-End Training of Deep Visuomotor Policies](https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1504.00702)"一文提供了一种端到端的策略训练机器人做事情的方法。此时我们的神经网络不再训练![](img/3fb4a0a3d10d54fda62b86560346c0ee.jpg),而改为训练![](img/b78351a3a805b0eed3d271eb38fb40dc.jpg),也就是以机器人的视觉图像为一段,输出直接为策略函数,这样的端到端学习,下图即为端到端的 CNN 结构。
有了前向消息和后向信息之后,给定所有最优性变量,求某时刻的某状态的发生概率就比较容易了。![](img/1a7da2bb060b7fccc98e45f517c65ba5.jpg),其中![](img/ac539e694189a47efa5de3fe30f47772.jpg),![](img/90359accf3239cd186fe4395acf4e6b6.jpg),其他可以看作归一化常数,因此![](img/d2b635e0f9431ce4740bd90932781ab7.jpg),这整个理论和 HMM 很像。注意到这个概率是前向消息和后项消息的乘积,可以说是一个交汇。考虑上图左边圆点是起点,右边叉叉是终点的路径。黄色锥区域是能够有高概率到达终点的状态,蓝色锥区域是有高概率从初始状态以高收益到达的状态,然后基本上就是两者的交(概率上相乘)。Li and Todorov (2006) 做了人和猴子类似从一个点到另一个点的实验,记录空间位置变化,基本上也是中间部分方差最大。
...
...
@@ -56,7 +56,7 @@
总体来说,软化方法的好处主要是有以下几点。首先毫无疑问地,它**增加了探索(类似 Boltzmann 探索)且防止了熵的坍塌**。软化方法**对状态的覆盖面更广**、**鲁棒性增强**,也**更容易对特定的任务进行调参(预训练)**。对于**并列最优**的情况,软化 max 得到的是一个分布,几个选项将等概率选择,**通过调整温度参数和收益尺度可以使得软化 max 变成硬 max**。在之后我们也将体现这个模型**更适合对人类行为建模**。
用一个图形来表示它们的关系。我们从状态![](img/c4af7d8e59380f621826e58208e79448.jpg)中获得了观测![](img/ab0308a7c7fd0b36c63ca97415b12edb.jpg)(这里假设观测不完全),并根据策略![](img/cfef52b3e3e4ed53073ad6a097a05e00.jpg)来得出行动![](img/40b3e823d3ff0b56dea56098705fa25f.jpg)。这里有一个转移概率函数![](img/dbc5fb456ec98abcf4b92d28764aa198.jpg)(很多文献中的 dynamics 也通常指的是这类转移概率),表明了在状态![](img/c4af7d8e59380f621826e58208e79448.jpg)下执行行动![](img/40b3e823d3ff0b56dea56098705fa25f.jpg)所得到的下一个观测![](img/6f1879550aee78e4a3f8af859b64171c.jpg)的概率分布。这里有一个性质,也就是![](img/6f1879550aee78e4a3f8af859b64171c.jpg)被认为仅由![](img/c4af7d8e59380f621826e58208e79448.jpg)和![](img/40b3e823d3ff0b56dea56098705fa25f.jpg)影响,而与之前的状态和行动无关:也就是之前的所有后果全部被包含在状态![](img/c4af7d8e59380f621826e58208e79448.jpg)之中了,你可以忘掉过去所有的东西,此谓 Markov 性,也是序贯决策问题的重要假设。注意到对于观测来说,这个性质是不成立的,观测序列不具有 Markov 性。![](img/698f49ad5ae10dc2e930d7fc2093b1aa.jpg)的记号最早来源于著名动态规划开山鼻祖的 Richard Bellman,取 state 和 action 的首字母;在机器人和最优控制领域则常见使用![](img/a19ca0b4a8843a49943f2aaae73fd48d.jpg)来作为记号,来源于最优控制的鼻祖 Lev Pontryagin。
模仿学习在很多其他领域也有应用。如结构预测问题,不仅仅是输出一个标签,而是更结构化的输出。这种预测问题在自然语言处理,如机器翻译或问答机器人中尤为重要。比如人家提问“Where are you”,回答“I'm at work”。如果像 RNN 一样一个词一个词输出,如果第二个词 at 变成了 in,那么第三个词可能就不能是 work 了,即便和数据本身比较接近,可能说 school 会好一些:第二个词的选择会影响第三个词。因此在结构预测问题中,答案的一部分会影响另一部分,有点类似一个序贯决策问题。因此一些模仿学习方法已经在这个领域中流行了起来:因为通常有训练数据所以会比较像模仿学习,而且是序贯的。其他的诸如交互和主动学习,要从人的反馈中学习;再就是逆增强学习。
第一个问题:在两个图中,x 轴代表轨迹,而 y 轴代表轨迹对应的收益。蓝色实线是我们选取策略的分布密度。我们从分布之中抽取了三个样本,在(a)图中,可以发现最左边的样本的收益是一个很大的负数,而右边两个都是很小的正数。我们想做的就是把我们的策略右移到右边的虚线,使得在坏的位置密度更低,好的位置密度更高。实际上,正负的数值对这个算法影响很大:两个小正数和一个大负数可能把步伐拉得比较大。而我们(b)图中,只是把收益都加上了一个很大的常数,收益之间的相对差不变。如果我们**把所有情况的收益都增减同一个常数**,我们可以把这个常数从这个期望中提出来,作为一个与参数无关的部分,因此**整个期望关于参数求梯度的结果是不发生变化的**。此时,策略梯度法就会想增加第一个样本的概率(行为发生了根本性变化),但更想增加后两个的概率。这个情况下,移动的步伐就小了很多,取而代之的是可能方差就增大了,变得更平缓了。这一点被称为“**高方差**”问题。一个更极端的情形是,有很好的样本,但是它的收益函数是 0(其他的样本收益为负数),那么如何动完全依赖于我现在的策略在什么位置。我们只需要把奖励函数整体上下移动,就可以完全改变策略梯度法的行为。这个问题主要是因为如果我们选取无数个样本的话,那么这些差异互相会被抵消掉;但是对有限个样本的选择会很有偏差,就会导致这样的问题:对于这样的高方差问题,当然增加样本总是能缓解的,但是增加样本也使得学习效率降低。
在之前我们适用的演员-评论家算法的估计都是一步的,即![](img/6205cdeb5570e0f41234db16faacbb81.jpg)。下标 C 的意思指的是评论家 Critic。这个估计的优点主要在于方差较低,但是缺点也很明显,如果值函数是错的的话,那么就会引起很大的偏差(当然肯定总是错的)。另一个极端就是纯粹的蒙特卡洛而不使用评论家,![](img/ed9b611a03efec2fbf8a3c1c730de705.jpg)。我们也知道了它是一个无偏估计,但这样的单样本估计的方差非常高。现在我们考虑一个方法,中和两者的优缺点,得到一个折中方案。一种方法是对两者进行混合,如果发现方差或者偏差过高,那么就提高或者降低组合系数。另一个是,我们发现由于贴现因子的作用,这样指数下降的函数,随着时间往后推移,收益的贡献比例将非常低。
关于目标网络,也有另一种实现策略。看上图,我们在第一个绿色方块更新了目标网络,此后若干个步骤,我们都将以这个目标网络为基础进行迭代,然后逐渐误差越来越大,直到下一个目标网络更新点,就形成了一个断点。这样其实对于步骤和步骤之间并不公平,有些步骤访问的延迟很高,有的步骤则很低。为了使得延迟公平化,可以使用一个类似于指数平滑的方法(随机优化中的 Polyak Averaging),不再是若干步执行更新而是每一步都做一个小变动:![](img/c3069f9353fcc9a7455ec2315b0f8855.jpg)。实践中![](img/687ea19aad79c360559598d48aca6a87.jpg)效果不错。从优化的角度,可以对这样的做法有一些理论解释。