小数据、高准确率的文本分类:利用迁移学习创造通用语言模型

2018 年 6 月 7 日 AI前线
作者 | Jeremy Howard、Sebastian Ruder
译者 | Liu Zhiyong
编辑 | Natalie,Vincent
AI 前线导读:本文是对 Fast.ai 新论文的介绍,面向大众读者,阐述了如何自动对文档进行分类,同时比以前的方法具有更高的准确率,以及更少的数据需求。本文将用简单的术语来解释:自然语言处理、文本分类、迁移学习、语言建模;以及这个新的方法是如何将这些想法结合在一起的。如果你已经熟悉自然语言处理和深度学习,你可以访问这个项目主页来获得技术信息:http://nlp.fast.ai/category/classification.html

更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)
前 言

我们发表了论文 Universal Language Model Fine-tuning for Text Classification,(ULMFiT)(https://arxiv.org/abs/1801.06146),提供了预训练模型(pre-trained models)和 Python 实现的完整代码。这篇论文在已经在国际顶级会议 ACL 2018 经过同行评议并接收(Annual Meeting of the Association for Computational Linguistics,ACL 2018,http://acl2018.org/)。可以在此网页(http://nlp.fast.ai/category/classification.html)观看相关视频,视频提供了对该方法的深入探讨、所有使用的 Python 模块、预训练模型以及用于构建自己的模型的脚本。

这种方法大大改进了以前的文本分类方法,任何人都可以用我们的代码和预训练模型来更好地解决以下问题:

  • 查找与法律案件相关的文件;

  • 识别垃圾邮件、机器人回复和攻击性评论;

  • 对产品的正面和负面评论进行分类;

  • 按政治倾向进行文章分类;

  • 其他。

与以前的方法相比,ULMFiT 需要的数据量要少得多。(论文中的图 3)

那么这种新技术究竟做了什么改进呢?让我们首先看一看论文摘要的部分内容,看看它是怎么说的,然后在本文接下来的章节,我们将由此展开并准确了解其全部含义:

迁移学习极大地影响了计算机视觉,但是自然语言处理现有的方法,仍然需要从头开始进行特定任务的修改和训练。我们提出了一种有效的迁移学习方法,可以应用于自然语言处理中的任何任务,并引入对语言模型进行微调的关键技术。我们的方法在六种文本分类任务上,明显优于现有的技术,在大多数数据集上的错误减少了 18~20%。此外,这种方法只用了带 100 个带标记的样本,就可以与拥有 100 倍以上数据并且从头开始训练的模型性能相媲美。

自然语言处理、深度学习和分类

自然语言处理(Natural language processing,NLP)是计算机科学和人工智能的一个领域,顾名思义,它是指使用计算机来处理自然语言。自然语言是指我们日常交流的正常语言,如英语或汉语,而不是像计算机代码或音乐符号那样的专门语言。自然语言处理用于各种应用,如搜索、个人助理、摘要等等。总体来说,自然语言处理颇具挑战性,因为我们在编写计算机代码时,所使用的严格规则并不适用于语言的细微差别和灵活性。你自己也可能遇到过这些限制,比如尝试与自动电话应答系统交流,带给你的是令人沮丧的体验;或者像 Siri 那样的早期对话式机器人那可怜的能力。

在过去的几年中,我们已经目睹深度学习正大举进入那些计算机以前只能取得有限成功的领域。深度学习并不需要程序员来定义一组固定规则,而是使用神经网络,直接从数据中习得丰富的非线性关系。最值得注意的是,深度学习在计算机视觉上取得的成功,例如在 ImageNet 图像分类竞赛中的突飞猛进地发展。

深度学习在自然语言处理也取得了一些成功,例如在《纽约时报》的文章中曾谈及的自动翻译。大凡成功的自然语言处理任务的一个共同特点是,都有大量的标记数据可用于训练模型。然而到目前为止,这些应用仅限于那些能够收集和标记大型数据集,并拥有计算资源可以在计算机集群上长时间处理它们的机构。

说来也奇怪的是,自然语言处理对于深度学习来说仍然极具挑战性的一个子领域,也正是它在计算机视觉领域大获成功的领域:分类。它指的是,你的目标是将事物(如图像或文档)分类的任何问题(如猫和狗的图像,或正面与负面的评论,等等)。大量重要的现实问题主要是关于分类的,这就是为什么深度学习在 ImageNet(一个分类问题)取得的成功催生了大量的商业应用的原因。在自然语言处理中,目前的方法能够很好地识别,例如,判断关于某部电影的评论是正面还是负面,这是一个称之为“情感分析”的问题。然而,当事情变得更加模糊时,模型就会“犹豫不决”,这通常是因为没有足够的标签数据来学习。

迁移学习

我们的目标是解决这两个问题:a) 处理自然语言处理问题,我们并没有大量的数据和计算资源;b) 使自然语言处理的分类更容易。我们(Jeremy 和 Sebastian)都在研究解决这个问题的确切领域:迁移学习。迁移学习指的是使用经过训练解决某个问题(如将 ImageNet 中图像分类)的模型作为解决其他类似问题的基础。一种常见的方法是对原始模型进行微调(如将 CT 扫描分类为癌症或非癌症,这是 Jeremy 在创建 Enlitic 时所开发的迁移学习的应用)。由于微调模型不需要从头开始学习,因此,与不使用迁移学习的模型相比,它通常可以达到更高的准确率,而且所需的数据和计算时间也少得多。

非常简单的迁移学习只使用一层权重(称为嵌入),在这几年来红得发紫,比如 Google 的 word2vec 嵌入。然而在实践中,完整的神经网络包含了许多层,所以,仅使用单个层的迁移学习,显然只是对无尽可能性的浅尝即止。

那么问题来了,为了解决自然语言处理的问题,我们可以从哪里进行迁移学习?这个问题的答案就在 Jeremy 手上,当时他的朋友 Stephen Merity 宣布开发了 AWD 长短期记忆网络模型(AWD LSTM language model, https://github.com/salesforce/awd-lstm-lm ),这与以前的语言建模方法相比有了很大的改进。语言模型是一种自然语言处理的模型,它学习预测句子中的下一个单词。例如,如果你需要手机键盘猜测接下来要键入的单词,那么就需要使用语言模型。很重要的原因是,语言模型很擅长猜测你接下来要说什么,它需要大量世界性的常识(如:“I ate a hot” →“dog”;“It is very hot” → “weather”),并深入理解语法、语义和自然语言的其他元素。这正是我们在阅读和分类文档时所具备却浑然不知的能力。

我们发现,在实践中,这种迁移学习的方法具有使其成为自然语言处理迁移学习的通用方法的特征:

  • 适用于不同文档大小、数量和标签类型的任务;

  • 使用单一架构和训练过程;

  • 不需要自定义特征工程或预处理;

  • 不需要额外的域内文档或标签。

让它发挥作用

ULMFiT 高级方法(以 IMDb 为例)

这个想法以前就尝试过,但需要数百万份文档才能获得足够的性能。我们发现,通过更聪明地对语言模型进行微调,就可以做得更好。特别是,我们发现,如果仔细地控制模型学习的速度,并更新预训练模型,这样它就不会忘记之前学过的东西,那么模型就可以更好地适应新的数据集。有一件事令我们感到特别兴奋,那就是模型可以很好地从有限的样本中学习。在一个包含两个类的文本分类数据集中,我们发现,仅用 100 个标记的样本来训练我们的方法(并允许它访问大约 50000 个未标记的样本),我们就能够实现与用 10000 个标记样本从头开始训练模型相同的性能。

另一个重要的见解是,我们可以使用任何合理且通用的大型语言语料库来创建通用语言模型:我们可以对任何自然语言处理目标语料库进行微调。我们决定使用 Stephen Merity 的 Wikitext 103 数据集,它包含了英文版维基百科的预处理大型子集。

自然语言处理的研究主要集中在英语上,而非英语语言的模型训练会带来一系列挑战。一般而言,非英语语言的公开数据集的数量很少,如果你想为一种语言(如泰语)训练文本分类模型,就得收集自己的数据。以非英语语言收集数据通常意味着你需要对数据进行标注,或者自己找到标注者,因为像 Amazon Mechanical Turk 这样的众包服务大多使用了讲英语的标注者。

在 ULMFiT 的帮助下,我们可以使除英语以外的语言训练文本分类模型变得更容易,因为我们所需要的只是访问维基百科,而维基百科目前有 301 种语言,少量文档可以方便手动进行标注,还可以随意添加未标记的文档。为了让这更容易,我们将很快推出一个模型合集(model zoo,http://nlp.fast.ai/category/model_zoo.html),为多种语言提供预训练语言模型。

ULMFiT 的未来我们发现,这种方法在不同的任务中,使用相同的设置效果很好。除了文本分类外,还有很多其他重要的自然语言处理问题,如序列标记或自然语言生成,我们希望 ULMFiT 将来能更容易地解决这些问题。一旦我们完成实验并在这些领域构建模型,我们将会更新这个网站。

在计算机视觉领域中,迁移学习的成功和预训练 ImageNet 模型的可用性已经改变了这一领域。包括企业家、科学家和工程师在内的许多人,他们正在使用微调的 ImageNet 模型来解决涉及计算机视觉的重要问题:从提高非洲农作物产量到制造乐高积木的机器人。现在,同样的工具可以用来处理自然语言,我们希望在这个领域也能看到同样应用的激增。

虽然我们已经阐述了文本分类的最新成果,但是仍然需要做大量的工作,才能真正充分利用自然语言处理迁移学习。在计算机视觉领域中,已经涌现许多重要而有见地的论文,深入分析了该领域的迁移学习。尤其是 Yosinski 等人试图回答“how transferable are features in deep neural networks(https://arxiv.org/abs/1411.1792)”这一问题,Huh 等人研究了“what makes ImageNet good for transfer learning(https://arxiv.org/abs/1608.08614)”。Yosinski 甚至创建了一个丰富的可视化工具包(visualization toolkit,https://github.com/yosinski/deep-visualization-toolbox),帮助从业者更好地理解他们的计算机视觉模型中的特征,如下视频所示:

Deep Visualization Toolbox

原文链接:

http://nlp.fast.ai/classification/2018/05/15/introducting-ulmfit.html

AI前线
紧跟前沿的AI技术社群

如果你希望看到更多类似优质报道,记得点个赞再走!

┏(^0^)┛明天见!

登录查看更多
6

相关内容

迁移学习(Transfer Learning)是一种机器学习方法,是把一个领域(即源领域)的知识,迁移到另外一个领域(即目标领域),使得目标领域能够取得更好的学习效果。迁移学习(TL)是机器学习(ML)中的一个研究问题,着重于存储在解决一个问题时获得的知识并将其应用于另一个但相关的问题。例如,在学习识别汽车时获得的知识可以在尝试识别卡车时应用。尽管这两个领域之间的正式联系是有限的,但这一领域的研究与心理学文献关于学习转移的悠久历史有关。从实践的角度来看,为学习新任务而重用或转移先前学习的任务中的信息可能会显着提高强化学习代理的样本效率。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
零样本文本分类,Zero-Shot Learning for Text Classification
专知会员服务
95+阅读 · 2020年5月31日
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
212+阅读 · 2020年4月26日
【教程】自然语言处理中的迁移学习原理,41 页PPT
专知会员服务
95+阅读 · 2020年2月8日
赛尔笔记 | 自然语言处理中的迁移学习(上)
哈工大SCIR
16+阅读 · 2019年10月17日
2018年自然语言取得不错的研究有哪些?
人工智能前沿讲习班
4+阅读 · 2019年2月22日
迁移学习在自然语言处理中的应用之通用语言建模
深度学习与NLP
3+阅读 · 2018年9月4日
概览迁移学习在NLP领域中的应用
论智
4+阅读 · 2018年7月31日
OpenAI NLP最新进展:通过无监督学习提升语言理解
人工智能头条
6+阅读 · 2018年6月18日
采用通用语言模型的最新文本分类介绍
AI研习社
6+阅读 · 2018年6月9日
迁移学习在深度学习中的应用
专知
23+阅读 · 2017年12月24日
深度学习在 NLP 上的七大应用
AI前线
3+阅读 · 2017年10月11日
Arxiv
5+阅读 · 2018年10月23日
Arxiv
26+阅读 · 2018年9月21日
Arxiv
5+阅读 · 2018年1月18日
Arxiv
10+阅读 · 2017年12月29日
VIP会员
相关资讯
赛尔笔记 | 自然语言处理中的迁移学习(上)
哈工大SCIR
16+阅读 · 2019年10月17日
2018年自然语言取得不错的研究有哪些?
人工智能前沿讲习班
4+阅读 · 2019年2月22日
迁移学习在自然语言处理中的应用之通用语言建模
深度学习与NLP
3+阅读 · 2018年9月4日
概览迁移学习在NLP领域中的应用
论智
4+阅读 · 2018年7月31日
OpenAI NLP最新进展:通过无监督学习提升语言理解
人工智能头条
6+阅读 · 2018年6月18日
采用通用语言模型的最新文本分类介绍
AI研习社
6+阅读 · 2018年6月9日
迁移学习在深度学习中的应用
专知
23+阅读 · 2017年12月24日
深度学习在 NLP 上的七大应用
AI前线
3+阅读 · 2017年10月11日
Top
微信扫码咨询专知VIP会员