在这篇文章中,我将讨论两个关于迁移学习的应用:NLP(自然语言处理)和CV(计算机视觉)。并且我会分别在这两个领域提供一个范例。
在NLP中,有不同的方法来表示单词(在左边是一个词嵌入的表示,在右边是一个弓形的表示)。使用词嵌入机器学习模型可以利用存在于不同词汇之间的关系。
尽管word2vec已经4岁了,但它仍然是一个非常有影响力的词嵌入方法。最近的另一种方法,如FastText,已经使许多语言中可以使用词嵌入了。与词袋(bag-of-words:是个在自然语言处理和信息检索(IR)下被简化的表达模型。此模型下,像是句子或是文件这样的文字可以用一个袋子装着这些词的方式表现,这种表现方式不考虑文法以及词的顺序。)方法相比,从word2vec或FastText中获得的嵌入是一个重要的进步。然而,它们的有效性通常由问题的领域来决定。
想象一下,你正在为销售人员建立一个新闻推荐服务。销售人员想要接收那些可能对他们正在销售的产品感兴趣的公司的新闻。在新闻文章中使用的词汇一般是相当通用的,这意味着使用了大多数词嵌入所支持的词汇表(取决于它们所接受的语料库)。此外,如果你有销售人员收集的他们阅读了几周的新闻文章,那么你马上就会有一个很大的标记语料库。通过重用词嵌入,推荐引擎可能比简单的弓形模型表现要好得多。
另一方面,假设你必须在法律合同上执行主题分类。不只是任何形式的法律合同,而是在竞争法环境下的一种法国的法律合同。这些类型的数据集通常不被标记,或者只有一组有限的标记文档可用。下一节将描述为什么开箱即用(out of the box)的迁移学习会让你在这种情况下获得如此大的帮助:
本文中提到的问题和解决方案是在处理有限数量的数据时创建鲁棒性的NLP系统和词嵌入的关键。
Gensim、Spacy和FastText是三个很棒的框架,可以让你快速地在机器学习应用中使用词嵌入。此外,它们还支持对自定义词嵌入的训练。
在CV中的迁移学习
深度学习方法在计算机视觉方面取得了巨大的成功。你不需要手动定义问题特定的特征,例如,方向梯度直方图(HoG)特征、颜色特征等等,深度学习可以让从业者训练那些将原始图像作为输入的模型。
根据问题的类型,需要定义不同类型的HoG特征。这是一种可以用于计算机视觉的视觉特征。请注意与下面提到的卷积网络所提取的特征的相似性。
特征定义的最初复杂性现在已经转向定义网络的复杂性。虽然体系结构经常被重用,但是在构成网络体系结构中没有单一的策略。通常,深度学习技术已经被发明并应用于大型数据集(如ImageNet或MS Coco)的研究设置。为了提高这些大型数据集的性能,研究人员发现了网络架构的深度和复杂性。这些架构导致了数百万个参数(通常)不能扩展到小的图像数据集的模型。在不超过5000张图片的数据集上训练诸如ResNet或VGG net这样的架构,只会导致明显的过度拟合。最近的深度学习趋势已经取得了显著的进步,但似乎只有使用少量数据集的数据科学家被冷落了。
事实证明,深度学习网络可以学习分层的特征表示(请参阅下面链接中的文章)。这意味着较低层次的层可以学习较低层次的特征,例如边缘(edges),而较高层次的层则学习更高的层次,但是无法解释概念,例如形状(shapes)。当网络在不同的数据集上进行训练时,也会出现分层特征表示的思想,这表明它们可以在不同的问题领域中重用。
能够区分图像中的边缘线条和形状(左)可以更容易地判断出什么是“汽车”。迁移学习允许你利用其他计算机视觉模型中的学习模式。
Keras的API允许你加载预先训练的网络,并在训练期间保持几个层的固定。在下一节中,我将再次讨论两个用例,分别是迁移学习是有用的,而另一个则是没有用的。
想象一下你在野生动物保护场所工作,你想要对出现在摄像机中的不同动物进行分类。特别是那些濒临灭绝的物种,你可能无法收集到大量的标记数据。考虑到预先训练的网络通常都是在广泛的概念领域进行训练(从食物,到动物和物体),使用预先训练的网络作为一个特征者,或者作为初始化者绝对是一种选择。
另一方面,想象一下你需要分析肿瘤专家的放射图像。这些图像不是典型的猫或狗这样的图像,因为它们是对病人进行扫描的输出。这些图像虽然被转换为RGB图像,但通常是在灰度图中显示扫描结果。尽管预先训练过的网络能够探测到RGB图像的形状和边缘,但它们很可能难以在X光图像上发现这些图像,因为这些图像不在预先训练的训练数据中。此外,在医学场景中,标记数据的数量通常很低。有几种技术可以利用(潜在的)未标记的数据,但是它们通常需要更多的工作。通常,这些技术试图通过迭代训练每一层来重构图像(使用卷积和解卷层)来预先训练分类网络的权重。这些技术和预先训练的网络的组合常常被用来提高收敛性。
上面提到的计算机视觉的两种方法都依赖于一个重要的假设:原始数据集中提取的模式在新数据集中是有用的。这种有效性很难量化,但它是一个重要的假设。地震、高光谱、甚至医学图像都与ImageNet中的图像相似。然而,理解计算机视觉问题领域是成功应用计算机视觉的关键。通过了解在迁移学习中使用的模型(数据集、技术等)的背景,你可以避免在实验期间浪费时间,并集中调整那些可能造成差异的模型。