前 言

我们发表了论文 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),帮助从业者更好地理解他们的计算机视觉模型中的特征,如下视频所示:

https://v.qq.com/x/page/m06561fuap5.html


©著作权归作者所有:来自51CTO博客作者mb5fdb0a1b25659的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 薪资高到没朋友的数据科学职位到底是干啥的?
  2. 人工智能武器真正的威胁来自人类,而不是机器
  3. 中国首个官方推出的开源协议:木兰宽松许可证上线
  4. 六成开发者日编程不足4小时,半数认为学习新语言很困难
  5. 开源分布式跟踪方案概览
  6. 深入浅出谈 Capital One 数据泄露事件
  7. 如何构建一个完整的To B应用开发平台
  8. Shopify 是如何迁移到模块化单体架构的?
  9. 大数据独角兽 MapR 难以为继,将资产出售给惠普企业

随机推荐

  1. 使用Dockerfile为SpringBoot应用构建Dock
  2. 【Java】广州三本秋招之路
  3. 【编测编学】接口测试面试题必背(上)
  4. ES 规范为什么总在 6 月发版?
  5. navicate premium 如何导入excel表数据
  6. 【3y】从零单排学Redis【青铜】
  7. Mybatis框架如何使用分页插件呢?
  8. ES11 来了,还学得动吗?
  9. 基于SSH框架实现的驾校管理系统
  10. 移动端跨平台技术之下的变与不变