【新智元导读】吴恩达在他的 NIPS 2016 tutorial 中曾说,迁移学习将是监督学习之后的,在ML 的商业应用中得到成功的下一波动力。现实世界是混乱的,包含无数新的场景。迁移学习可以帮助我们处理这些新遇到的场景。本文从迁移学习的定义、意义、应用、方法、相关研究等方面为读者展示了迁移学习令人激动的全景。
近年来,深度神经网络的进展很快,训练神经网络从大量有标记数据中学习输入和输出的映射变得非常准确,无论这些映射是图像、句子、还是标签预测,等等。
这些模型仍然不足的是将其泛化到与训练时不同的条件的能力。什么时候需要这种泛化能力呢?当你将模型应用到现实世界,而不是你精心构建的数据集的时候。现实世界是混乱的,包含无数新的场景,其中许多是你的模型在训练过程中没遇过的,因此反过来模型无法很好地预测。将知识迁移到新的条件的能力通常被称为迁移学习(transfer learning),这是这篇文章讨论的主题。
目录
- 什么是迁移学习?
- 为什么迁移学习是下一个前沿?
- 迁移学习的应用
从模拟中学习
适应新领域
跨语言传播知识
- 迁移学习方法
使用预训练的 CNN 特征
学习域不变表征
使表征更加相似
混乱域
- 相关研究领域
半监督学习
更有效地使用可得数据
提升模型的泛化能力
使模型更加鲁棒
多任务学习
Zero-shot 学习
- 结论
什么是迁移学习
在经典的监督学习场景中,如果我们打算为一些任务和一个 A 域(domain A)训练一个模型,我们得有为相同的任务和域提供的有标记数据。如图1所示,模型 A 的训练数据和测试数据与任务和 A 域的数据是一样的。有关“任务”和“域”的概念将在后文详细解释。现在让我们假设有一个我们的模型需要执行的目标任务,例如,识别图像中的对象,并且有一个域,即数据的来源,例如旧金山咖啡店的照片。
图1:ML 中经典的有监督学习设置
我们现在可以在这个数据集上训练一个模型 A,并期望它在同个任务和域的没见过数据上也表现良好。另一种情况是,当为其他任务或 B 域提供数据时,我们再次需要这些任务或域的有标记数据以用来训练一个新的模型 B,这样模型才可能在这些数据上表现良好。
当没有足够的有标记数据去为了某个任务或域训练模型时,传统的监督学习范式就会崩溃。
假如我们想训练一个模型来检测夜间照片上的行人,我们可以利用已经在类似的域进行过训练的模型,例如用白天照片训练过的模型。然而,实际上这样做经常会使模型表现糟糕,甚至崩溃,因为这个模型已经继承了训练数据带有的偏见,并且不知道如何泛化到新的域。
假如我们想训练一个模型去执行一个新的任务,例如检测骑自行车的人,我们甚至无法重复使用现有的检测行人的模型,因为这些任务之间的标记是不同的。
但利用迁移学习,我们能够利用已经存在的相关任务或域的有标记数据去处理这些情况。我们尝试存储下在源域(source domain)中解决源任务(source task)所获得的知识,并将其应用于另外的任务。如图2所示。
图2:迁移学习的设置
在实践中,我们力求尽可能多地将知识从源设置迁移到目标任务或域。取决于数据的类型,这种知识可以采取多种形式:可以是有关物体组成的,以便模型能够更容易地识别新的物体;也可以是人们用来表达观点的概括性词汇,等等。
为什么迁移学习是下一个前沿
吴恩达(Andrew Ng)在他的 NIPS 2016 tutorial 中曾说,迁移学习将是监督学习之后的,在ML 的商业应用中得到成功的下一波动力。
图3:吴恩达在 NIPS 2016 做有关迁移学习的演讲
他在白板上绘制了一个图表,下图是我尽可能如实复制的图表。吴恩达说,迁移学习将成为机器学习工业应用中取得成功的关键推动力。
图4:ML 在工业应用中取得成功的推动力,via. Andrew Ng
无疑,ML 在工业上的成功使用迄今为止主要是由于监督学习的驱动。受益于深度学习的进步,以及更强大的计算力和大型有标记数据集的推动,监督学习使得 AI 重新得到很多人的关注和兴趣,初创企业得到资金支持和收购。尤其是,近年来机器学习的应用已经逐渐成为我们日常生活的一部分。假如我们不要管反对者和预测下一个 AI 冬天的人,而是选择相信 Andrew Ng 的先见,那么这些成功将会持续下去。
然而,迁移学习已经存在了几十年,却几乎从没有在工业中得到利用,为什么 Ng 预测迁移学习能够爆炸式地增长呢?此外,与其他机器学习的领域相比,迁移学习目前所能获得的知识相对少,这些领域例如无监督学习和强化学习最近越来越受欢迎:根据 Yann LeCun 的说法,无监督学习是通用 AI 的关键要素,由于生成对抗网络的兴起,无监督学习重新吸引了许多研究者的关注。
另一方面,强化学习的主推是谷歌的 DeepMind。DeepMind 利用强化学习令游戏 AI 大幅进步,以 AlphaGo 的成功最为典型。强化学习也在现实世界中取得了成功,例如帮助谷歌的数据中心将冷却费用减少了 40%。这两个领域虽然很有前途,但由于它们仍然面临许多挑战,在可预见的未来无法得到大规模的商业应用,仍然属于前沿研究论文里的主题。
图5:在 Yann LeCun 著名的 AI 蛋糕比喻中,显然没有迁移学习的位置。
是什么使得迁移学习有所不同?下文中,我们解释了(仅代表作者观点)推动 Ng 氏作出如此预测的原因,并概述了为什么现在正是需要关注迁移学习的原因。
目前在工业中使用机器学习有两个特点:
一方面,在过去几年中,我们已有训练越来越多准确率高的模型的能力。我们现在处于一个瓶颈阶段,对于许多任务来说,那些 state-of-the-art 的模型已经达到了非常好的水平,对用户来说已经不再是障碍。有多好?ImageNet 的最新的残差网络(residual network)在图像识别任务中已经超过了人类水平;谷歌的 Smart Reply 已经能自动处理 10% 的手机的响应要求;语音识别的错误率也一直在下降,已经与人类速记员的水平一致;机器识别皮肤癌已经与皮肤科专家的准确率一致;谷歌的 NMT 系统已经被用于超过10个语言对的翻译;百度的 Deep Voice 已经能够实时地生成人类的演讲……这个 list 还可以继续列很长。总结而言,ML 的成熟度已经允许将这些模型大规模地部署到数百万用户,并且已经得到了广泛的采用。
另一方面,这些模型的成功非常依赖于数据,而且是依赖大规模的有标记数据。对于某些任务和域,这些数据是可用的,因为它是经过多年精心收集得到的。少数情况下,这些数据是公开的,例如 ImageNet。但是通常大规模的有标记数据是专有的,或者非常昂贵,例如许多语音数据集或 MT 数据集,因为正是这些数据为公司提供了竞争优势。
但是,在现实世界中应用机器学习模型时,模型要面对的是无数从未遇过的条件,它不知道如何处理;每个客户或者每个用户都有着自己的偏好,具有或会产生与用于训练的数据不同的数据;一个模型会被要求执行许多个任务,这些任务与它被训练的任务有关联,但不一样。我们目前的所谓 state-of-the-art 的模型尽管在它们被训练过的任务或域上表现出与人类水平持平甚至超过人类的性能,但在上面提到的这些情况下,会遭受大幅性能降低,甚至完全崩溃。
迁移学习可以帮助我们处理这些新遇到的场景,并且迁移学习是机器学习的工业规模使用所必须的,它超越了任务的限制,而且域有丰富的标记数据。到目前为止,我们已经将模型有效应用于在数据可用性方面非常易得的任务和域。为了服务分布的长尾,我们必须学会将所获得的知识迁移到新的任务和域。
迁移学习的应用
从模拟中学习
迁移学习的一个让人兴奋的应用是从模拟中学习,未来我们将会看到更多这样的应用。对于许多依赖硬件进行交互的机器学习应用程序,在现实世界中收集数据和训练模型要么成本非常高而且耗时,要么非常费县。因此,用其他更低风险的方式收集数据是更好的选择。
模拟就是首选的一种工具,已经被用于在现实世界中实现许多先进的 ML 系统。从模拟中学习,然后将学习到的知识应用到现实世界,是迁移学习的一个实例,因为源和目标域之间的特征空间是相同的(两者通常都依赖于像素)。但是模拟和现实之间的边际概率分布(marginal probability distributions)是不同的,也就是说,模拟场景和源场景中的物体看起来是不同的,尽管这种差别随着模拟变得更逼真而减弱。同时,模拟和真实世界的条件概率分布(conditional probability distributions)可能也是不同的,因为模拟无法完全复制现实世界里的所有交互,例如,一个物理引擎(physics engine)无法完全模仿现实世界中物体的复杂交互。
图6:谷歌无人车(来源:Google Rearch Blog)
从模拟中学习有利于更容易地进行数据收集,因为可以很容易地绑定并分析对象,同时由于学习可以并行地在多个实例中进行,能够实现快速训练。因此,从模拟中学习是需要与现实世界交互的大型机器学习项目(如无人车)的前提条件。据谷歌无人车技术负责人 Zhaoyin Jia 的介绍,“如果你真的想做一辆无人驾驶汽车,模拟是至关重要的”。Udacity 开放了它的自动驾驶汽车纳米课程的模拟器,OpenAI 也开放了它的 Universe 平台,可以借助《侠盗猎车手5》或其他游戏训练自动驾驶汽车系统。
图7:Udacity 的自动驾驶汽车模拟器(来源:TechCrunch)
另一个需要从模拟中学习的领域是机器人:在真实的机器人上训练模型太慢,而且非常昂贵。从模拟学习以及将知识迁移到现实世界的机器人中减轻了这个问题。这样的研究在近年来又引发了许多人的兴趣。图8是一个分别在现实世界和模拟环境进行数据操作任务的例子。
图8:机器人和模拟图像(Rusu et al., 2016)
最后,模拟不可或缺的另一个方向是通用 AI。在现实世界中训练智能体直接实现通用 AI 的成本太高,而且不必要的复杂性阻碍了最初的学习。相反,例如基于图9中的 CommAI-env 等模拟环境,学习可能更容易成功。
图9:FAIR 的 CommAI-env(Mikolov et al., 2015)
适应新领域
从模拟学习是域适应(domain adaptation)中一个特殊例子,下面概述域适应的其他一些例子。
域适应是视觉任务的常见要求,因为通常易于得到的有标记数据和我们实际要用的数据是不同的,无论是识别例如图11中的自行车,或在野外识别其他对象。即使训练诗句和测试数据看起来相同,训练数据仍然可能包含有人类不易察觉的偏见,但是该模型会利用这些偏见得到过拟合的结果。
图10:不同的视觉域(Sun et al., 2016)
另一个常见的域适应场景是适应不同的文本类别:例如词类标签(part-of-speech taggers)和句法分析器(parser)等标准的 NLP 工具通常是用《华尔街日报》之类的新闻数据进行训练。但是,新闻数据训练出来的模型难以应对其他的文本类型,例如社交媒体上的消息,这是它们面临的挑战。
图11:不同的文本类别/流派
即使在同一个域,例如产品的评论,人们也会使用不同的单词和短语表达同样的意见。因此,用某一类型的评论训练的模型应该能够处理概括性词汇(general words)和域特定的词汇(domain-specific words),避免被域的变化所迷惑。
图12:不同的主题
最后,上述挑战只涉及一般的文本类别或图像类型,但是如果需要处理与个人或用户组相关的域,那么问题会被放大:例如自动语音识别(ASR)的情况。语音将会成为下一个大平台,预计到2020年,所有搜索有50%将通过语音执行。大多数 ASR 系统传统上都是用 Switchboard 数据集评估,该数据集只包含 500 名说话者。因此,这些系统对标准口音的人可能好理解,但对非标准口音的人,言语障碍者或儿童话语则难以理解。我们需要能够适应个人用户和少数群体的 ASR 系统,以确保每个人的话语都能被理解。
图13:语音应用
跨语言传播知识
最后,在我看来,从一种语言学习然后将所得知识应用于另一种语言,是迁移学习的另一个重要应用。可靠的跨语言的适应方法使我们能够利用大量的英文标注数据,然后将其应用于其他语言,尤其是数据少的语言。尽管这仍然是乌托邦式的,但最新的进展如 zero-shot 翻译证明这一领域取得了快速进步。
迁移学习的方法
迁移学习的研究历史已经比较长了,上述四种迁移学习的场景都有相应技术来应对。深度学习的兴起催生了一批迁移学习的方法,下面我们来介绍其中一些方法。
使用预先训练的CNN功能
为了激活目前最常用的迁移学习方法,我们必须了解大型卷积神经网络在ImageNet 上取得巨大成功的原因是什么。
- 了解卷积神经网络
虽然关于模型如何工作的许多细节仍然是个谜,但我们现在已经了解,较低的卷积层捕获低级图像特征,例如边(见图14),而较高的卷积层捕获越来越复杂的细节,例如身体部位、面部以及其他成分特征。
图14:AlexNet学习的样本过滤
最终完全连接的层通常被用于捕获与解决相应任务相关的信息,例如,AlexNet 的完全连接图层将指示出哪些功能与将图像归类到1000个对象类别之一相关。
然而,尽管知道一只猫有胡须、爪子、毛皮等对识别一只猫这样的动物是必需的,但这并不能帮助我们识别新物体或解决其他常见的视觉任务,如场景识别、细粒度识别、属性检测和图像检索等。
不过,对我们有帮助的是,捕获图像组合的一般信息以及边和形状等信息的特征。如上所述,该信息包含在 ImageNet 上训练的大型卷积神经网络中的最终卷积层或早期完全连接层之一中。
在完成新任务时,我们可以简单地使用在ImageNet 上预先训练的最先进CNN的现场特征,并对提取出的特征进行训练。在实践中,我们要么将预先训练的参数保持固定,要么以较小的学习率对其进行调整,以确保我们不会忘记以前学习到的知识。这种简单的方法可以在一系列视觉任务以及依赖视觉输入(如图像说明)的任务上取得令人瞩目的成果。在ImageNet 上训练的模型在处理图像时似乎捕获了一些动物和其他物体在结构和组成方式上的相互关联的细节。因此,ImageNet 任务对于一般的计算机视觉问题来说似乎是一个很好的代理,因为其中所需的知识与许多其他任务相关。
- 学习图像的基础结构
类似的假设也用于激发生成模型:当训练生成模型时,我们假设生成逼真图像的能力要求了解图像的底层结构,而后者又可应用于许多其他任务。这个假设本身依赖的前提是所有图像都位于低维流形,也就是说可以通过模型提取图像的一些底层结构。使用生成对抗网络生成逼真图像的最新进展表明,这种结构可能确实存在,如图15所示,模型在卧室图像空间中的点之间展示逼真过渡的能力证明了这一点。
图15:走过卧室的图像流形
- 除了视觉任务,预先训练的特征在其他任务中是否有用?
现场生成的CNN特征在视觉任务中取得了无与伦比的成果,但使用其他类型数据(如语言)的其他领域可否复制这个成功,仍然存有疑问。目前,没有现场特征可以在NLP中取得视觉任务那令人惊叹的结果。这是为什么?这样的特征是否存在?或者,如果不存在,那么为什么视觉比语言更有利于这种形式的转移?
低级任务(如词性标签或分组)的输出可以被视为现场特征,但是这些特征不能捕获超越语法的更细粒度的语言使用规则,对所有任务都没有帮助。正如我们所看到的,可泛化的现场特征的存在似乎与一个可以被视为该领域许多任务的原型任务的存在相互交织在一起。在视觉任务中,对象识别占据了这样的地位。在NLP中,最接近的模拟可能是语言建模:给定一个词语序列,为了预测下一个单词或句子,模型需要掌握语言结构的知识,需要了解什么词语可能与之相关并且可能跟随出现,需要为长期依赖性建模等等。虽然最先进的语言模型越来越接近人类的水平,但它们的特征只被有限的使用了。同时,语言建模的进步也为其他任务带来了积极的成果:用语言模型对象预先训练模型提高了模型性能。此外,在一个大规模未标记语料库用近似语言建模对象预先训练的单词嵌入已经变得普遍。虽然它们不如视觉任务中的现场特征那样有效,但仍然有很大作用,可以看作是源自大规模未标记语料库的通用领域知识的一种简单形式的转移。
虽然在自然语言处理中,还没有通用的代理任务,但辅助任务可以采取本地代理的形式。无论是通过多任务对象还是综合任务对象,都可以将其他相关知识注入到模型中。
使用预先训练的特征是目前最直接和最常用的执行转移学习的方式。然而,它并不是唯一的办法。
学习的域不变表征
预先训练的特征实际上主要用于适应场景3,在此场景中我们希望其适应新的任务。在其他场景中,通过深度学习迁移知识的另一种方法是学习基于我们的域不会改变的表征。这种方法在概念上非常类似于我们一直在考虑使用的预先训练的CNN特征的方式:两者都将域的一般知识进行编码。然而,创建基于域不改变的表示对于非视觉任务来说,要比生成对所有任务有用的表征花费更低,更可行。ImageNet已经花费了数年和几千小时的时间,而我们通常只需要每个域的未标记数据来创建域不变的表征。这些表征通常使用堆叠去噪自动编码器学习,并且在自然语言处理以及计算机视觉方面已见成效。
使表征更相似
为了提高从源到目标域的学习表示的迁移能力,我们希望两个域之间的表征尽可能相似,以便该模型不考虑可能阻碍表征的特定于域的特征,而只考虑域之间的共性。
我们不仅仅是让自动编码器学习部分表征,而是积极促使两个域的表征更加相似。我们可以将其作为预处理步骤直接应用于我们的数据表征,然后将新的表征用于训练。我们还可以促使我们模型中域的表征更加相似。
容易混淆的域
为现有模型添加另一个目标,鼓励它混淆这两个领域,这是近来愈发常用的确保两个域的表征相似性的另一种方法。该域混淆的损失是一种规则的分类损失,模型在其中尝试预测输入示例的域。然而,与规则损失的差异在于,从损耗流向网络其余部分的梯度是相反的,如图16所示。
图16:具备梯度反转层的混淆域(Ganin和Lempitsky,2015)
梯度反转层不会使域分类损失的错误最小化,反而使模型中的此类错误最大化。在实际操作中,这意味着该模型在学习使其最小化原始目标的表征,而不允许它区分两个域,而后者有助于知识迁移。虽然图17中显示的仅以规则目标训练的模型明显能够根据已学习的表征来分辨域,但是如果一个模型的目标增加了域混淆项,它就无法做到了。
图17:常规和域混淆模型的域分类器得分
相关研究
虽然本文是关于迁移学习的,但迁移学习不是目前机器学习中将有限的数据作为杠杆、将学到的知识用于新任务以及使模型在新环境中更好泛化的唯一办法。下面,我们来介绍一些和迁移学习目标相关或互补的其他研究方向。
半监督学习
转移学习旨在最大限度地利用目标任务或域中的未标记数据。这也是半监督学习的标准,它遵循经典的机器学习设置,但只假定有限量的标签样本进行训练。半监督学习的许多经验和见解同样适用于迁移学习。
更有效地利用现有数据
与迁移学习和半监督学习相关的另一个方向是使模型能够在有限数据的情况下更好地工作。
这可以通过几种方式完成:可以利用无监督或半监督学习从未标记的数据中提取信息,从而减少对标记样本的依赖;可以让模型访问数据中固有的其他特征,同时减少其正则化中的过度拟合;最后,可以利用到目前为止仍然被忽视的数据。
提高模型的泛化能力
提高模型的泛化能力也是一种方法。为了实现这一点,我们必须首先更好地了解大型神经网络的行为和复杂性,并调查其为什么以及如何泛化。
增加模型的鲁棒性
在改进我们模型泛化能力时,我们可能将其很好地泛化到类似的实例上,但在意外或非典型的输入上仍然出现严重错误。因此,一个关键的目标是增加我们模型的鲁棒性。近来由于对抗学习的进展,对这一方向的研究越来越多。已经有许多研究提出方法,使得模型可以在不同环境中对最坏情况或对抗性样本表现更好。
多任务学习
在迁移学习中,我们主要关心我们的目标任务。相比之下,在多任务学习中,目标是在所有任务上都表现良好。虽然多任务学习方法不能直接适用于迁移学习的设置,但有助于多任务学习的想法仍然可以使迁移学习受益。
持续学习
虽然多任务学习允许我们在许多任务中保留知识,而不会对我们的源任务造成性能损失,但只有所有任务都有训练时间,这才是可能的。对于每个新任务,我们通常需要重新调整我们所有任务的模型。
零次学习(Zero-shot learning)
最后,如果我们将迁移学习推到极限,仅仅从少数几个甚至零个样本中学习,我们就能分别得到少量、一次和零次的学习。执行一次和零次学习的模型是机器学习中最难的问题之一。这对我们人类却是自然而然的。
结论
总之,迁移学习提供了许多令人兴奋的研究方向,特别是许多需要将知识迁移到新任务并适应新领域的模型的应用。我希望能够本文能为您提供关于迁移学习的总体认识,并能激发您的兴趣。
http://sebastianruder.com/transfer-learning/index.html#transferlearningmethods