数据不足,如何进行迁移学习?

简介: 在没有足够的训练数据时,本文详细介绍了如何使用FloydHub、fast.ai和PyTorch进行迁移学习。

       现在,人工智能的发展处于跳跃式阶段,我们也对AI大型数据集的应用进展感到吃惊。更重要的是,那些我们没有跟踪的数十亿张照片或餐厅的评论并没有被遗漏掉:迁移学习技术让收集数据变得更加容易。另外,得益于PyTorch框架fast.ai应用程序库以及FloydHub公司,小团队或者是个别开发人员也能轻松的应用这些方法。

本文要讲的例子就是ULMFiTJeremy HowardSebastian Ruderfast.ai展示了如何用几百个标记准确的对电影评论进行分类。除此之外,还有一个在通用英语文本语料库中训练的模型。

8b295970b24055e7364adac930c749ac7d1a6b0a

除了英语文本资料库和标记对评论进行分类外,fast.ai还有一个小技巧,它拥有大量特定领域的文本:10万多个样本评论,来展示普通英语和电影评论之间的区别。这引发了我们的思考:至少得需要多少数据,才足以弥合训练示例和通用语言模型之间的差距?

这并不是一个特别愚蠢的问题。Frame可以帮助ZendeskIntercomSlack等规模性公司标记、评价和理解与客户的对话。也就是说,只要有足够的对话,我们就可以手动评价我们有足够的数据从头训练一个模型,这二者之间有很大的差距。仅仅几十个标签和几千条相关对话,这能够做什么?

事实证明,这非常有用。在本文中,我们将使用相同的电影评论数据集来证明:即便是只有少部分的数据,数据迁移依然可以有效。更加详细的代码请参考ULMFiT

迁移什么?

深度神经网络是当前最新人工智能背后的关键技术,比如理解图像、音频或文本。深度神经网络的核心是它由层(深度)组成,每个层都将输入转换为更接近网络训练答案的新的表示。

我们通常会抱怨,不了解神经网络的中间层到底发生了什么……其实,它们通常被设计为更加清晰、可解释的角色!比如:很多语言模型利用嵌入层将单个单词或短语进行分类,将具有相似含义的单词或短语放在一起。举个例子来说,这将有助于翻译AI在需要使用杰出illustrious)这个词的时候,会根据经验选择使用伟大great)。

9766c11f8e058e6f62aa7d75327cb278f614a392

现在变得更有趣了:一个知道”“illustrious = great”的层不仅有利于翻译,还可以学习情绪估计,将不同的观点聚集起来。这就是迁移学习,也就是说模型在一个任务中学习到的东西可以对另外一个学习任务有帮助。事实上,这个特殊的例子特别受欢迎,以至于改进的通用语言模型已经成为一个全新的领域!

71ff84f8288948fa1daacb07f7e8f3bcf481d234

迁移学习不仅有利于任务之间的转移:它可以帮助一般模型在特定环境中更好的工作。例如:一个通用的英语情绪模型或许可以预测电影评论,但是可能不知道紧张、紧张的惊悚是件好事。

这就是JeremySebastian Rudder的通用语言模型微调文本分类(ULMFiT)的用武之地。他们对一个包含100,000IMDB评论的通用语言模型做了改进。即便是只标记几百个单词,其余的单词也能够帮助AI学习审稿人经常用杰出很好代替紧张、紧绷等,这很好的弥补了数据不足的缺陷。结果的准确度令我们感到惊讶:仅仅有500个标记示例,分类的准确度却高达94%

未被标记的数据最少需要多少?

ULMFiTNLP提供了一个有力的依据,使模型能够更有效的利用较小的数据集。在这项研究中,我们专注于回答以下问题:

如果我们对标记示例的预算特别少,那么,得需要收集多少未标记的数据才能有效的使用迁移学习?

为了解决这个问题,我们使用了大量固定的域数据池,并改变了标记示例的数量,来看看模型应该如何改进。将标记示例的数量保持不变,并改变未标记的其他域示例的数量。也就是说,我们的实验包括:

1.语言建模(变量)

2.语言任务(不变量)

我们的语言任务、情感分类和原始的ULMFiT论文中的任务相同,另外,也使用了IMDB电影评论数据集在实验中,标记情绪训练样本的数量保持在500个,500个样本可以用于很多小领域的研究,并且,有助于强调不同语言模型的差异提升能力。

91f89dae682d06fe2adb0b3ee7dda3dba0140332

对于语言建模,我们改变了可用于语言任务的三种语言模型的域数据量:

仅限ULM:这是使用Wikitext103预训练英语语言模型

仅限域(domain):仅在IMDB数据上的基于域训练的模型。

•ULM +域(domain):ULMFiT模型

训练这些模型的计算量特别大,最大的域训练可能需要几天的时间才能完成。为了加快训练速度和有效的执行网格搜索,我们使用了FloydHub

结果

经过大约50个小时GPU处理,结果如下:

fe341ee63c5433927a8f0687ded701a8d8a4a925

从实验结果,我们可得知:

使用33%的域数据,就可以获得75%数据的UMLFiT性能。

令人惊讶的是,ULM + 2,000域示例的语言任务预测准确率约为85%。


本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《Learning More with Less: Frame explores transfer learning in low-data environments with FloydHub, fast.ai, and PyTorch

译者:Mags,审校:袁虎。

文章为简译,更为详细的内容,请查看原文

相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能基础——模型部分:模型介绍、模型训练和模型微调 !!
人工智能基础——模型部分:模型介绍、模型训练和模型微调 !!
169 0
|
3天前
|
机器学习/深度学习 数据处理
【机器学习】生成式模型与判别式模型有什么区别?
【5月更文挑战第10天】【机器学习】生成式模型与判别式模型有什么区别?
|
17天前
|
机器学习/深度学习 数据可视化 数据挖掘
【视频】少样本图像分类?迁移学习、自监督学习理论和R语言CNN深度学习卷积神经网络实例
【视频】少样本图像分类?迁移学习、自监督学习理论和R语言CNN深度学习卷积神经网络实例
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
20用于深度学习训练和研究的数据集
无论是图像识别,自然语言处理,医疗保健还是任何其他人工智能领域感兴趣,这些数据集都是非常重要的,所以本文将整理常用且有效的20个数据集。
128 1
|
4月前
|
机器学习/深度学习 算法 数据挖掘
机器学习第2天:训练数据的获取与处理
机器学习第2天:训练数据的获取与处理
59 0
|
4月前
|
机器学习/深度学习 自然语言处理 数据格式
训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类
训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类
57 0
|
5月前
|
机器学习/深度学习 自然语言处理 Linux
稀疏微调:彻底改变大语言模型的推理速度
稀疏微调:彻底改变大语言模型的推理速度
136 0
|
机器学习/深度学习 人工智能 自然语言处理
【Pytorch神经网络理论篇】 36 NLP中常见的任务+BERT模型+发展阶段+数据集
是一种类似于卷积思想的网络。它通过矩阵相乘,计输入向量与目的输出之间的相似度,进而完成语义的理解。
268 0
|
机器学习/深度学习 传感器 人工智能
基于深度学习LSTM的古代汉语切分标注算法及语料库研究(上)
基于深度学习LSTM的古代汉语切分标注算法及语料库研究
25837 0
基于深度学习LSTM的古代汉语切分标注算法及语料库研究(上)
|
机器学习/深度学习 数据采集 存储
基于深度学习LSTM的古代汉语切分标注算法及语料库研究(下)
基于深度学习LSTM的古代汉语切分标注算法及语料库研究(下)
730 0
基于深度学习LSTM的古代汉语切分标注算法及语料库研究(下)