本文是谷歌大脑工程师Eric Jiang的博文,结合当前监督、无监督和强化学习进展,谈了他衡量机器学习研究工作的框架:①表现力(Expressivity)、②可训练性(Trainability)和/或③泛化能力(Generalization)。这篇文章可能是本年度最佳机器学习技术及研究总结之一,值得学习和参考。
当我阅读机器学习论文时,我会问自己,这篇论文的贡献是否属于:1)表现力(Expressivity)、2)可训练性(Trainability),和/或3)泛化能力(Generalization)。我从Google Brain的同事Jascha Sohl-Dickstein那里学到了这个分类,并且在这篇文章中介绍了这个术语。我发现这种分类有效地考虑了个别研究论文(特别是在理论方面)是如何将AI研究的子领域(例如机器人、生成模型、NLP)联系在一起,成为一个大的图景的。
在这篇博文中,我将讨论这些概念如何与当前(截止2017年11月)的监督学习、无监督学习和强化学习的机器学习研究相结合。我认为泛化由“弱泛化”和“强泛化”两大类构成,我将分别讨论它们。这个表格总结了我对事情的看法:
我非常感谢Jascha Sohl-Dickstein和Ben Poole为这篇文章提供的反馈和编辑,还感谢Marcin Moczulski对RNN可训练性给出的有益讨论。
这篇文章涵盖了广泛的研究,在很大程度上以我比较个人的观点在评判。因此,需要强调,文中任何事实错误都是我自己的,并不反映我的同事和校对者的意见。如果你有想讨论的问题和建议,请随时在评论中提供反馈意见或发送电子邮件——我写这篇文章也是为了学习。
表现力:这个模型可以进行什么计算?表现力(Expressivity)体现了一个可以被参数函数(例如神经网络)计算的函数的复杂性。深度神经网络随着深度的增加,表现力呈指数级增长,这意味着今天大家正在研究的大多数监督、无监督和强化学习问题,用中等规模的神经网络就可以充分表现[2]。其中一个证据就是深度神经网络能够记忆非常大的数据集。
神经网络可以表现各种各样的东西:连续的、复杂的、离散的,甚至是随机的变量。随着过去几年对生成建模和贝叶斯深度学习的研究,深度神经网络已经被用来构造概率神经网络,并且产生了令人难以置信的生成建模结果。
生成建模的最新突破表明了神经网络强大的表现力:神经网络可以输出与真实数据几乎无法区分的极其复杂的数据流形(音频、图像)。以下是NVIDIA研究人员提出的最近GAN架构的输出:
这个结果还不算完美(注意扭曲的背景),但是距离最终目标也不远了。类似地,在音频合成任务中,最新的WaveNet模型生成的音频样本,听起来与真实的人说话无异。
无监督学习不限于生成式建模。有些研究人员,比如Yann LeCun,将无监督学习更名为“预测学习”,模型可以推断过去、估算现在或预测未来。然而,由于许多无监督学习集中在预测极其复杂的联合分布(过去或未来的图像、音频),我认为生成建模是衡量无监督领域表现力一个相当好的基准。
神经网络似乎也是足以表现强化学习的。很小的网络(2个卷积层和2个全连接层)就足够强大,能够解决Atari和Mujoco控制任务(虽然其可训练性还有许多不足之处,这个我们稍后会说到)。
单独看,表现力(expressivity)本身并不是一个很有趣的问题,我们可以通过在网络中增加更多的层、更多的连通性和其他一些方法来增强表现力。我们现在面临的挑战是,在控制训练难度不会太高的前提下,使神经网络充分表现出足够多的训练和测试数据集。例如,就算深度全连接网络有足够的能力来记忆训练集,但似乎还是需要二维卷积来使图像分类模型能够泛化。
表现力是最容易处理的问题(增加更多层就好!),但同时也是最神秘的:我们没有很好的方法来衡量一个给定的任务需要多少(和什么样的)表现力。什么样的问题需要比我们今天使用的神经网络更大数量级的神经网络?为什么这些问题需要这么大量的计算?目前的神经网络是否有足够的表现力来实现类似于人类的智能?解决泛化问题是否需要表现力超级强大的模型?
大脑的神经元数量(1e11)比大型神经网络(Inception-ResNet-V2具有大约25e6的ReLU单元)的要多很多个数量级。而且,ReLU单元根本无法比拟人类神经元的复杂度。一个单一的生物神经元及其树突、轴突和各种神经递质,具有令人难以置信的表现力。蝗虫在一个神经元中实现了碰撞检测系统,比我们建造的任何无人机系统都飞得更好。这种表现力来自哪里?要实现人类智能,神经网络需要多强的表现力?
可训练性:给定一个充分表达的模型空间,我们能找到一个好的模型吗?机器学习模型是任何能够从数据中学习到函数的计算机程序。在“学习”期间,我们从一个可能非常巨大的模型空间中,寻找一个比较好的,能够利用数据中的知识做出决策的模型。这个搜索过程通常被定义为解决模型空间的优化问题。
优化的几种类型
一种常见的方法,特别是在深度学习中,是定义一些标量度量来评估模型的“优点”。然后使用数值优化技术,将这些“优点”最大化(或“最小化不良”)。
一个具体的例子:最小化平均交叉熵误差是训练神经网络分类图像的标准方法。这样做的目的是,当模型x数据集在交叉熵损失最小的时候,它做的就是我们真正想要的,比如以一定的精度正确地分类图像,并在测试图像上进行召回。通常,评估指标是不能直接优化的(最显而易见的原因是我们无法访问测试数据集),而像训练集上的交叉熵这样的替代函数可以。
寻找好的模型(也即训练)最终等同于优化——事实就是如此!但是……优化的目标有时难以确定。监督学习中,一个典型场景是图像下采样(down-sampling),在这种情况下,很难定义一个标量的量,让这个量与人类从特定的下采样算法中感知“perceptual loss”的方式完全一致。类似的,超分辨率和图像合成也很困难,因为我们很难将“优点/好”作为最大化的目标。想象一下,写一个函数,判断一张图像“逼真(photoreal)”的程度!实际上,关于如何衡量生成模型(用于图像,音频)的质量,争论一直在激化。
近年来,解决这个问题最流行的技术是一种协同适应方法(co-adaptation approach),这种方法将最优化问题转换为求解两个非平稳分布之间的平衡点,而这些非平稳分布是协同演化的(in tandem)[3]。用一个直观的比喻来解释为什么这样做是“自然的”,可以想一想掠食者物种和被捕猎的物种之间的生态进化过程。起初,掠食者变聪明了,所以可以有效地捕获猎物。然后,猎物也变得更聪明,从而逃避捕猎者。这样,物种协同进化,最终的结果是两个物种都变得更加聪明。
生成对抗网络也按照类似的原理工作,通过这种方法,避开了明确定义感知损失目标(perceptual loss objectives)。同样,强化学习中的自我对弈(competitive self-play)也运用这个原则来学习大量丰富的行为动作。虽然优化目标现在已经被隐含地指定,但它仍然是一个优化问题,机器学习从业者可以重新使用熟悉的工具,如深度神经网络和SGD。
演化策略通常将优化视为一个模拟的过程(optimization-as-a-simulation)。用户在模型总体(a population of models)上指定一个动态系统,并且在模拟的每个时间步长,根据动态系统的规则更新这个总体。模型可能会也可能不会相互影响。模拟进行下去,希望系统的动力学最终能够诱导这个总体汇聚成“好的模型”。
要了解强化学习背景下的演化策略(ES),你可以参阅David Ha的“A Visual Guide to Evolution Strategies),“参考文献和进一步阅读”部分非常棒!
当前研究及工作总结
前馈网络和监督学习中遇到的“直接”目标,其可训练性(Trainability)基本上已经解决了(我从经验上得出这个结论,不是理论上的总结)。2015年发布的一些突破性工作(Batch Norm、ResNets、Good Init),今天已经被广泛用于前馈网络的训练。实际上,具有数百层的深度网络现在可以将大规模分类数据集的训练误差最小化为零。
另一方面,RNN仍然非常棘手,但研究界正在取得很大的进展,将LSTM放入一个复杂的机器人策略中并期望它“正常工作”已经不再是一件疯狂的事情。想一想也挺不可思议,就在2014年,还没有多少人对RNN的可训练性抱有信心,在过去的十年中,有很多工作表明RNN十分难以训练。有证据表明,大量不同的RNN架构,其表现力是同等的,任何性能上的差异都是由于某些架构比其他架构更容易优化导致的[4]。
在无监督学习中,模型的输出通常(但不总是)更大——例如,1024 x 1024像素,巨大的语音和文本序列。因此很不幸,无监督模型也更难以训练训练。
2017年的一个重大突破,就是GAN现在更容易训练了。最常见的改进方法,是对原来Jensen-Shannon散度目标的简单修改:最小二乘法,absolute deviation with margin,还有Wasserstein距离。NVIDIA最近的工作扩展了基于Wasserstein的GAN,使得模型对BatchNorm参数、架构选择等各种超参数的敏感度降低。稳定性对于实际和工业应用来说是非常重要的——正因为有了稳定性,才能使人相信这种方法将与未来的研究思路或应用兼容。总之,这些结果令人兴奋,因为它们表明生成器神经网络具有足够的表现力生成正确的图像,阻止它们的瓶颈只是可训练性的问题。可训练性可能仍然是一个瓶颈——不幸的是,对于神经网络而言,我们很难判断究竟是模型的表现力不够,还是我们没有把它训练好。
由于高方差的蒙特卡洛梯度估计量,神经网络中,潜在离散变量推理(latent discrete variable inference)也很难训练。然而近年来,从GAN到语言建模,到记忆增强神经网络,再到强化学习,各种架构都开始重新得到关注。从表现力的角度看,离散表示非常有用,而且我们现在也能够相当可靠地进行训练,这是非常好的。
不幸的是,深度强化学习在纯粹的可训练性方面仍然相当落后,更不用说泛化方面的能力了。对于那些时间步长超过1的环境,我们正在寻找一个模型,在推理时进行优化。有一个内部优化的过程,其中模型推理得出最优的控制,而外部的一个优化循环则只使用智能体看到的数据库,学习这个最佳模型。
最近,我为连续机器人控制任务增加了一个额外的维度,让我的强化学习算法性能从>80%下降到了10%。强化学习不仅训练很难,而且也不稳定!因为优化随机性太强,我们甚至不能用不同的随机种子获得相同的结果,因此我们的策略是报告多次试验中的奖励曲线分布,使用不同的随机种子。相同的算法,由于部署不同,在不同的环境中表现也不同,因此文献中报道的RL分数时要用批判性的眼光去审视。
强化学习中的可训练性问题仍然没有得到解决,我们仍然不能稍微扩展问题一点点,然后期望相同的学习过程10次都做同样的事情。
如果我们把RL看作一个纯粹的优化问题(之后再去担心泛化和复杂的任务),情况仍然十分棘手。假设有一个环境,只有在episode结束的时候才能得到一个稀疏的奖励(例如,照看孩子,在父母回家之后得到报酬)。动作的数量(和环境的相应结果)随着事件的持续时间呈指数增长,但是这些动作序列中只有少数与成功对应。
因此,在模型优化范围中的任何点估计策略梯度,需要在获得有用的学习信号之前,在动作空间中大量的样本。这就好比要计算概率分布的蒙特卡洛expectation,但(在所有动作序列上)质量却集中在delta分布上。当proposal分布与奖励分布之间没有重叠时,无论收集多少样本,有限样本蒙特卡洛策略梯度估计根本无法工作。
此外,如果数据分布是非平稳的(如带有replay buffer的off-policy学习算法的情况),那么收集“不良数据”会在外部优化过程中引入不稳定的反馈环路。
从优化的角度而不是蒙特卡洛估计的角度看,也是相同的:在状态空间中没有任何先验(例如对世界的理解或向智能体提供的明确指示),整个优化看起来就像“瑞士奶酪”——一个个convex optima“小孔”周围是大量的参数空间平台(plateaus),在这里策略梯度毫无用处。这意味着整个模型空间基本上没有信息(因为学习信号在整个模型空间中是非常均匀的,非零区域非常小)。
如果不开发出可以学习的良好表征(representation),我们还不如就用随机种子和随机策略循环,直到发现一个刚刚好落在这些奶酪洞里的好模型。事实上,强化学习基线表明,我们的优化格局可能看起来就是这样。
我相信,从纯粹的优化角度来看,像Atari和Mujoco这样的RL基准测试并没有真正推动机器学习的极限,只是为了解决单一的单策略(monolithic policy)问题,可以说是在相当无菌的环境下优化性能。这种情况下,模型“泛化”的选择压力很小,使得问题成为一个纯粹的优化问题,而不是真正的困难ML问题。
并不是说我喜欢用泛化能力来将强化学习的可训练性问题复杂化(肯定不容易调试!),但是我认为学习理解环境和理解任务是强化学习处理现实世界机器人问题的唯一途径。
将这个与监督学习和无监督学习相比,无论我们处于模型搜索空间的哪个位置,我们都可以方便地获得学习信号。Minibatch梯度的proposal分布与梯度分布非零重叠。如果我们使用小批量大小为1的SGD,那么用有用的学习信号对转换进行采样的概率最差为1/N,其中N是数据集的大小。我们可以通过简单地抛出大量计算和数据来解决问题,从而使我们的方法成为一个好的解决方案。此外,提升较低层的感知泛化,通过在低级特征上的“bootstrapping”,可能实际上具有减少方差的效果。
为了解决高维和复杂的RL问题,在处理数值优化问题之前,必须考虑泛化和一般的感知理解。我们需要达到每个数据点为RL算法提供非零比特数的点,并且在任务非常复杂时(没有收集指数级的更多数据),可以轻松实现重要性采样梯度。只有这样,才能合理地假设我们能够成功地通过暴力计算解决问题。
从示范学习(demonstration),模仿学习(imitation learning),逆向强化学习(inverse reinforcement learning)以及与自然语言指令的交互中学习,可能会提供一些方法来快速将起始策略(starting policy)引入到获取某些学习信号的点上,或者以这样一种方式来塑造搜索空间。例如,环境提供0的奖励,但是观察产生一些有助于模型的规划模块得出归纳偏向(inductive biases)的信息。
总而言之,在可训练性这个问题上:监督学习已经很容易了;无监督学习还很难,但我们正在努力;强化学习则是非常糟糕。
泛化:机器学习本身的核心泛化是三个问题中最深刻的问题,也是机器学习本身的核心。简单说,泛化就是在训练数据集上训练好的模型,在测试数据集上表现如何。
在讨论泛化时有两种不同的场景:1)训练和测试数据是从相同的分布中抽取的(我们只需要从训练数据中学习这个分布),或者2)训练和测试数据来自不同的分布(我们需要从训练集推广到测试分布)。这两种情况分别对应于我下文所说的(1)“弱泛化”和(2)“强泛化”。这种对泛化进行分类的方式也可以被称为“内插与外推”(interpolation vs. extrapolation),或者“模型的健壮性vs对数据的理解”(robustness vs. understanding)。
弱泛化:两种情况,模型对数据分布的小扰动表现有多好?
在“弱泛化”中,我们通常假设训练和测试数据样本是从相同的分布中抽取的。然而在现实世界中,即使在大样本范围内,训练和测试分布之间几乎总是有一些差异。
这些差异可能来自传感器噪声,环境光线条件的变化,物体的逐渐磨损和撕裂,照明条件的变化。另一种情况是,对抗样本可能会产生差异(differences can be generated by an adversary)。因为对抗干扰以人类视觉几乎不能察觉,所以我们可以将对抗样本归入“从相同分布中抽取”。
因此,在实践中将“弱泛化”作为评估训练分布的“扰动”是有用的:
测试数据分布的干扰也可能会导致优化的干扰(最低点是最好的)。
事实上,我们预先不知道测试分布干扰为优化带来了一些困难。如果我们在优化训练环境(蓝色曲线左侧的sharp全局最小值)方面过于激进,那么我们就会得到一个对于测试数据(红色曲线上的sharp局部最小值)次优的模型。在这里,我们对训练分布或训练数据样本进行了过拟合,并没有泛化到干扰的测试分布。
“正则化”是我们用来防止过拟合的技术。由于我们没有任何关于测试扰动的先验信息,所以通常我们所能做的最好的事情就是尝试训练训练分布的随机扰动,希望这些扰动覆盖测试分布。随机梯度下降,dropout,权重噪音,激活噪音,数据增强,这些都是深度学习中常用的正则化算子。在强化学习中,随机化模拟参数使得训练更加健壮。张驰原在他ICLR 2017演讲中指出,正规化是“任何使训练变得更加困难的事情”(相对于“限制模型容量”的传统观点)。基本上,让事情更难优化,就能提高泛化性能。
这真是令人不安——我们的“泛化”方法相当粗糙,相当于“optimizer lobotomy”。我们做的基本上就是调整一下优化器,然后希望它对训练过程的干扰刚刚好防止过拟合。而且,提高模型的可训练性让你以牺牲可泛化性为代价!用这种方式看待(弱)泛化问题,确实让开展可训练性研究变得复杂。
但是,如果更好的优化器容易造成过拟合,那么我们如何解释为什么一些优化器似乎减少了训练和测试的误差?现实情况是,任何优化方法和优化器的组合,都在:1)找到一个更好的模型区域和2)过拟合到一个特定的解决方案之间达到平衡,而我们没有很好的方法来控制这种平衡。
弱泛化最具挑战性的测试可能是对抗性攻击,在对抗性攻击中,扰动来自一个对手“adversary”,它会对数据点进行最糟糕的干扰,使你的模型以较高的概率表现不佳。我们仍然没有能够很好应对对抗性攻击的深度学习方法,但我的直觉是对抗性攻击最终是可以被解决的[5]。
在理论工作方面,有一些研究者在利用信息理论探究神经网络在训练过程中,模型从“记忆”数据到“压缩”数据。这个理论正在兴起,虽然是否有效还存在学术争论。从“记忆”和“压缩”在直觉上很令人信服,因此这方面值得我们保持关注。
强泛化:自然流形(Natural Manifold)
在“强泛化”的测试中,模型在测试中使用的数据来自与训练数据完全不同的分布,但是,这些数据的底层manifold(或生成过程)是相同的。
世界上可观测数据的空间可以被描述为一个非常高维的,不断变化的“自然流形”(natural manifold)。虽然流行非常巨大,但它也是高度结构化的。例如,我们所观察到的所有数据都遵循万有引力这样的物理规律,物体不会出现在物体中,等等。
强泛化可以被认为是这种“超级流形”在多大程度上被一个特定的模型所捕获,这个模型只在流形的数据点的十进制采样上被训练。需要注意的是,图像分类器并不需要发现麦克斯韦方程组,它只需要了解与流形数据相一致的现实即可。
在ImageNet上训练的现代分类模型在强泛化方面可以说是OK的——在ImageNet上训练的模型确实可以理解像边缘、轮廓和物体这样的原理,这也是ImageNet预训练模型受欢迎的原因。然而,这类模型仍然有大量的改善空间:在ImageNet上训练的分类器还不是普遍适用的,少数据学习问题仍然没有得到解决,并且仍然容易受到对抗样本攻击。很明显,我们的模型现在还不能理解它们正在看什么,但这是一个开始 。
类似于弱泛化,测试分布可以以对抗训练和测试分布之间最大差异的方式进行对抗采样。AlphaGo Zero是我最喜欢的例子:在测试的时候,它观察来自人类玩家的数据,与其训练分布完全不同(它以前从未“看见”过人类)。而且,人类正在利用自己所有的智慧,主动把AlphaGo带到训练数据中未被发现的领域。尽管AlphaGo并没有明确地理解抽象数学、对手心理学或“绿色”意味着什么,但它清楚地理解了如何这个世界一个狭窄的领域中胜过人类玩家。如果一个人工智能系统对一个熟练的人类对手具有健壮性(robust against a skilled human adversary),那么我认为它具有足够强的泛化能力。
可惜的是,强化学习研究在很大程度上忽视了强泛化的问题。大多数基准都是静态环境,很少有感知丰富性(例如,类人机器人不了解它周围的世界或它自己的身体看起来像什么,除了一些与奖励机制有关的关节位置)。
我真的相信解决泛化是解决强化学习可训练性的关键。我们的学习系统对世界“了解”越多,获得学习信号的能力就越强,也许这样需要的样本数量也就越少。这就是为什么少数据学习(few-shot learning),模仿学习,学会学习(learning-to-learn)很重要:它使我们摆脱了差异性大、信息量低的暴力解决方案。
我认为,要实现更强有力的泛化,需要做到两件事情:
首先,我们需要从观察和实验中积极推导世界基本规律的模型。符号推理和因果推理似乎是成熟的研究主题,但任何一种无监督的学习都可能有所帮助。这让我想起人类通过使用逻辑推理系统(数学),推导宇宙物理定律来理解天体运动的事情。有趣的是,在哥白尼革命之前,人类最初可能依赖于贝叶斯启发式方法(“迷信”),在我们发现经典力学后,这些“贝叶斯”模型就被抛弃了。
我们基于模型的机器学习方法(试图“预测”环境方面的模型)现在还处于“前哥白尼时期”,即它们只是基于非常浅的统计迷信进行内插(Interpolation),而不是提出深刻的、一般的原理来解释和推断可能在数百万光年远的地方或未来许多时间步的数据。请注意,人类确实不需要对概率理论有一个牢固的把握来推导出确定性的天体力学,而这就引出了一个问题——如果没有明确的统计框架,是否有办法进行机器学习和因果推断。
大幅降低复杂性的一种方法是使我们的学习系统更具适应性。我们需要超越仅仅优化以静态方式预测或行动的模型,我们需要优化那些可以实时思考、记忆和学习的模型。
其次,我们需要在这个问题上投入足够多样化的数据,促使模型去开发抽象的表征。只有环境足够丰富,正确的表征才能被开发出来(虽然AlphaGo Zero提出了一个问题,就是智能体真正需要体验的自然流形有多少)。如果没有这些限制,这个问题就没有明确规定,我们偶然发现正确的解决方案的机会是零。
我不知道三体文明(参见《三体》一书)演变到如此高的技术水平,是不是因为他们的生存依赖于他们对复杂的天体力学的物理理解。也许我们也需要在我们的Mujoco&Bullet环境中引入一些天体运动:)
注释[1] 有些研究领域不适合表现力(Expressivity)、可训练性和泛化能力这一框架。例如,试图理解为什么一个模型提供了一个特定答案的解释性研究(interpretability research)。在一些高风险领域(比如医学、执法)工作的ML客户和政策制定者需要了解这一点,这也可以阐明泛化问题:如果我们发现模型提供的诊断方式与与人类医学专业人士会得出这些结论有很大的不同,这可能意味着模型在推导过程中存在边缘情况(edge case),不能泛化。确定模型是否学到了正确的东西,比减少测试错误更加重要!差分隐私(Differential privacy)是对ML模型的另一个约束。但鉴于超出本文范畴,这里就不多讲了。
[2] 简单解释一下:一个大小为N的全连接层,后跟一个ReLU非线性,可以将一个向量空间切割成N个分段线性块。添加第二个ReLU层,进一步将空间细分为N个以上的块,在输入空间中产生N^2个分段线性区域,3个层就是N^3。详细分析请参阅Raghu et al. 2017。
[3] 这有时被称为多级优化问题。然而,这意味着一个“外部”和“内部”优化循环,而适应可能在同一时间发生。例如,异步通信的单个机器上的并行进程,或者在生态系统中不断协同进化的物种。在这些情况下,没有明确的“外部”和“内部”优化循环。
[4] seq2seq with attention实现了SOTA,但是我怀疑它的优点是可训练性,而不是表现力或泛化性。也许seq2seq without attention在正确初始化的情况下,也可以做得一样好。
[5] 这里提供一个对抗对抗性攻击的方法,虽然并没有解决强泛化问题,那就是使计算对抗干扰极其昂贵。模型和数据部分是黑箱。在推理期间每次调用模型时,从训练好的模型中随机挑选一个模型,并将该模型提供给对手,而不告诉他们他们得到了哪个模型。模型彼此独立训练,甚至可以采用不同的架构。这使得计算有限差分梯度很难,因为f(x + dx) - f(x)可以具有任意高的方差。此外,连续梯度计算之间的梯度仍将具有较高的方差,因为可以对不同的模型对进行采样。另一种改进方法是使用多模太数据(视频、多视图multi-view,图像+声音),导致在保持输入的一致性的同时,很难干扰输入。
-
谷歌
+关注
关注
27文章
6142浏览量
105157 -
机器学习
+关注
关注
66文章
8382浏览量
132462
原文标题:【谷歌工程师机器学习干货总结】从表现力、可训练性和泛化三方面看2017年进展
文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论