参与:马亚雄、吴攀、李亚洲 将在一个场景中学习到的知识迁移到另一个场景应用中一直是人工智能研究领域的一个热门领域,本文从迁移学习的基本概念谈起,介绍了迁移学习的技术、应用和方法。本文作者为 Insight Research Centre for Data Analytics 的自然语言处理与深度学习博士生 Sebastian Ruder,他同时也是爱尔兰都柏林的文本分析创业公司 AYLIEN 的研究科学家。 目录: 1.什么是迁移学习? 2.为什么现在需要迁移学习? 3.迁移学习的定义 4.迁移学习的场景 5.迁移学习的应用 从模拟中学习 适应到新的域 跨语言迁移知识 6.迁移学习的方法 使用预训练的 CNN 特征 学习域不变的表征 让表征更加相似 混淆域 7.相关的研究领域 半监督学习 更有效地使用可用的数据 提高模型的泛化能力 让模型更加稳健 多任务学习 持续学习 zero-shot 学习 8.总结 近年来,我们越来越擅长训练深度神经网络,使其能从大量的有标签的数据中学习非常准确的输入到输出的映射,无论它们是图像、语句还是标签预测。 我们的模型仍旧极度缺乏泛化到不同于训练的环境的能力。什么时候需要这种能力呢?就是你每一次将你的模型用到现实世界,而不是精心构建的数据集的时候。现实世界是混乱的,并且包含大量全新的场景,其中很多是你的模型在训练的时候未曾遇到的,因此这又使得模型不足以做出好的预测。将知识迁移到新环境中的能力通常被称为迁移学习(transfer learning),这就是本文将讨论的内容。 在这篇文章中,我首先会将迁移学习与机器学习的最普遍和成功的范式——监督学习——做一下对比。然后我会概括一下迁移学习值得我们去关注的原因。随后,我会给出一个更加技术性的定义以及介绍多个不同的迁移学习的场景。然后,我会提供一些迁移学习的应用的例子,再探究一些可以被用来迁移知识的实际方法。最后,我会概述一下相关的研究方向,并展望一下未来的前景。 什么是迁移学习? 在机器学习的经典监督学习场景中,如果我们要针对一些任务和域 A 训练一个模型,我们会假设被提供了针对同一个域和任务的标签数据。我们可以在图 1 中清楚地看到这一点,其中我们的模型 A 在训练数据和测试数据中的域和任务都是一样的(后面我会详细地定义什么是任务(task),以及什么是域(domain))。现在,让我们假设,一个任务就是我们的模型要去执行的目标,例如,识别图片中的物体;而域就是数据的来源,例如,来自于旧金山的咖啡店的照片。
图 1:机器学习领域中传统监督学习的设置 现在我们可以在这个数据集上训练一个模型 A,并期望它在同一个任务和域中的未知数据上表现良好。在另一种情况下,当给定一些任务或域 B 的数据时,我们还需要可以用来训练模型 B 的有标签数据,这些数据要属于同一个任务和域,这样我们才能预期能在这个数据集上表现良好。 当我们没有足够的来自于我们关心的任务或域的标签数据来训练可靠的模型时,传统的监督学习范式就支持不了了。 如果我们要训练一个模型来检测在夜间拍摄的照片上的行人,我们可以用一个在相似的域中训练的模型,例如白天拍摄的图片。然而,实际上,我们经常会遭遇表现上的衰退或者崩溃,因为模型已经继承了它的训练数据中的偏差,不知道如何泛化到新的域中。 如果我们要训练一个模型来执行新的任务,例如检测骑自行车的人,我们甚至不能够使用已有的模型,因为任务之间的标签都是不一样的。 迁移学习允许我们通过借用已经存在的一些相关的任务或域的标签数据来处理这些场景。我们尝试着把在源域中解决源任务时获得的知识存储下来,并将其应用在我们感兴趣的目标域中的目标任务上去,如图 2 所示。
图 2:迁移学习的设置 (责任编辑:本港台直播) |