结构化思考迁移学习的不同方法。
作者:Sebastian Schaal 编译:McGL
在“结构化机器学习概念”专栏中,我试图从机器学习领域中提取概念,并将它们转换成新的、可能不同寻常的框架,以提供新颖的观点。这些内容是为数据科学界人士,以及对机器学习领域感兴趣的爱好者而设计的。
引言
写这篇文章的原因是迁移学习(Transfer Learning)现在的流行,并且向多个方向发展。它有各种性质和特点,但方法论缺乏更高层次的框架。让我们详细说明一下。
框架: 迁移学习的八条路径
迁移学习可能已经成为深度学习领域最重要的发展之一,使其适用于现实世界的应用。很多人可能还记得“ ImageNet 时刻” ,当时 AlexNet 碾压式的赢得 ImageNet 竞赛冠军,使神经网络成为计算机视觉挑战的标准。然而,有一个问题——你需要大量的数据来完成这项工作,而你往往没有这么多数据。
解决这个问题的方法是引入迁移学习。我们可以用一个预先在 ImageNet 上训练过的卷积神经网络,冻结前面的层,只在一个较小的数据集上重新训练它的头部,这使得 CNN 开始被行业大规模采用。
2018年,自然语言处理(NLP)终于迎来了“ ImageNet 时刻”。我们第一次从重复使用静态词嵌入转向共享完整的语言模型,这些模型在捕获一系列语言信息方面表现出了显著的能力。在这一发展过程中,Sebastian Ruder 发表了他的论文《 Neural Transfer Learning for NLP 》 ,该论文画了迁移学习四个不同概念的树状分解图。
映射维度
这让我思考: 观察一个或两个数据集来学习一个或多个任务的不同方法是什么。这些是我能想到的维度:
- 任务(Task): 我们是试图在预训练和微调阶段教会我们的网络相同的任务,还是我们利用第一个任务的知识来完成第二个任务?(例如,预训练一个“动物分类器”和微调模型作为“狗的品种分类器” vs. 使用“动物分类”网络的骨干来训练一个“毛茸茸的耳朵目标检测器”)
- 领域(Domain): 我们的数据集来自同一领域吗?(例如,两个数据集都是“在野外”拍摄的彩色图像 vs. 其中一个是灰度的 X 光图像)
- 顺序(Order):我们是同时学习还是一个接一个的学习?(例如,我们联合计算所有任务的损失,并用它来进行训练,vs. 完成第一次训练,移植网络的权重,然后开始第二次训练)
我还考虑过添加“ 重要性” ,以便能够包括辅助任务,但是想想还是不要让事情变得太复杂。因此,我最终得到了类似于 Ruder 用于 NLP 的维度。让我们把由三个二值维度产生的所有八种组合都绘制出来。
轻量级定义
注意:这些术语是我自己想出来的,并没有广泛的文献支持。
- 任务微调(Task Fine-Tuning): 我们预训练一个模型,然后用相同的任务将它微调到同一领域的另一个数据集(例如,使用预先训练的 ImageNet 分类模型,然后将它微调到一个犬种分类器)。
- 领域适应(Domain Adaptation): 任务相同,但是将我们的模型转移到一个新的领域,这个领域是由另一个数据集提供的(例如,使用一个预训练的 ImageNet 分类模型,并根据 X 光数据微调它来对健康的人和病人进行分类)。
- 任务适应(Task Adaptation): 利用预训练的模型的知识(例如,它的中间输出作为embeddings)来训练它完成不同的任务(例如,使用 ImageNet 分类模型的骨干作为特征提取器,并添加第二个网络来执行目标检测)。
- 模态迁移(Modality Transfer): 即使领域和任务不同,使用在自然图像上预训练过的网络也是有意义的。至少,该网络已经能够辨认这种模式(例如,使用 ImageNet 分类模型骨干来在乳腺癌 X 光上运行目标检测)
- 数据集合并(Dataset Merging): 如果你想在同一个任务上同时训练来自同一个域的两个数据集,可以随意合并它们(例如,将从 Instagram 上爬下来的图片添加到 ImageNet 数据集中来训练一个更好的分类器)。
- 权重共享(Weight Sharing): 即使你同时训练两个问题,共享一些中间权重也是有意义的(例如,使用 OCR 生成的文本和 PDF 文档的原始图像输入得到一个联合的中间表示,对页面的内容以及它是否是一个新文档的开始进行分类)。
- 多任务学习(Multi-Task Learning): 其中一个最流行的例子是特斯拉的大型视觉网络,其中一个共享的骨干同时接受多个任务的联合训练(例如,使用特斯拉相机的相同镜头画面并行运行目标检测和道路语义分割)。
- 并行训练(Parallel Training): 最后,如果你有两个不同的问题(域和任务) ,并且你想同时训练它们,只需要并行地进行(例如,为同一个客户执行内容审核和电子邮件分类)。
扩展的2x2x2矩阵
使用维度 任务(Task)、 领域(Domain) 和 顺序(Order),我们最终得到了这个2x2x2矩阵,映射出前面介绍的概念。为了2D 可视化,我在 x 轴上放置了两个维度,并将二值条目加倍,最终得到8个不同的单元格(例如,左上角的单元格将是相同的领域、 相同的任务 和序列顺序)。
总结
在这篇文章中,我们使用了任务、 领域和顺序 三个维度来结构化我们可以执行迁移学习的方式。我喜欢沉浸思考过去的咨询工作,把它们扩展到一个更大的矩阵中,让我可以在填补空白领域的同时思考全新的情景。这包括了一些相当明显的案例(例如“数据集合并”和“ 并行训练”) ,以及一些还没有常用名称的已知过程(例如“任务微调”)。
来源:https://towardsdatascience.com/new-perspectives-on-transfer-learning-285035f01589