使用 BERT 加速:NLP 优化模型
已发表: 2022-03-11使用 BERT 加速 NLP:数据量减少 100 倍的世界级结果
构建深度学习自然语言处理 (NLP) 分类模型时存在两个主要困难。
- 数据收集(获取数千或数百万个分类数据点)
- 深度学习架构和训练
我们构建能够理解语言复杂性的复杂深度学习模型的能力通常需要在这些领域拥有多年的经验。 你的问题越难,你的输出就越多样化,你需要花在每个步骤上的时间就越多。
数据收集繁重、耗时、昂贵,并且是 NLP 项目成功的第一大限制因素。 即使有才华横溢的机器学习工程师,准备数据、构建弹性管道、在数百个潜在的准备选项中做出选择以及“准备好模型”也很容易花费数月的时间。 最后,训练和优化深度学习模型需要结合直觉理解、技术专长和解决问题的能力。
在本文中,我们将介绍
- NLP 深度学习的趋势:迁移学习如何让世界级模型开源
- BERT 简介:迄今为止最强大的 NLP “工具”简介——来自转换器 (BERT) 的双向编码器表示
- BERT 的工作原理以及为什么它将改变公司执行 NLP 项目的方式
深度学习趋势
自然地,这个过程的优化从提高准确性开始。 LSTM(长短期记忆)网络彻底改变了许多 NLP 任务,但它们曾经(并且现在)非常需要数据。 在大型且昂贵的机器上优化和训练这些模型可能需要几天或几周的时间。 最后,在生产中部署这些大型模型既昂贵又麻烦。
为了减少这些复杂性的产生因素,计算机视觉领域长期以来一直在使用迁移学习。 迁移学习是使用为不同但相似的任务训练的模型来加速新解决方案的能力。 与训练一个从头开始识别灌木的新模型相比,重新训练一个已经可以对树木进行分类的模型所花费的精力要少得多。
想象一个场景,有人从未见过灌木,但在他们的生活中见过很多树。 你会发现用他们对树木的了解来向他们解释灌木的样子要比从头开始描述灌木要容易得多。 迁移学习是一种非常人性化的学习方式,因此直观地说这将适用于深度学习任务。
BERT 意味着您需要更少的数据、更少的训练时间,并获得更多的商业价值。 任何企业都能打造的 NLP 产品质量已经成为世界一流。
BERT 来了
BERT 使用所谓的转换器,旨在生成句子编码。 本质上,BERT 是一种基于特定深度学习模型的语言模型。 它是专门为提供一个句子或一串句子的上下文、数字、表示而设计的。 该数字表示是浅层和简单模型的输入。 不仅如此,结果通常更好,并且需要一小部分输入数据来完成尚未解决的任务。
想象一下,能够花一天而不是一年的时间收集数据,并且能够围绕数据集构建模型,否则您将永远没有足够的数据来创建 LSTM 模型。 对于以前无法负担所需开发时间和专业知识的企业来说,NLP 任务的数量是惊人的。
BERT 的工作原理
在传统的 NLP 中,模型训练的起点是词向量。 词向量是一个数字列表 [0.55, 0.24, 0.90, ...],试图用数字表示该词的含义。 通过数字表示,我们可以在训练复杂模型中使用这些词,并且通过大词向量,我们可以将有关词的信息嵌入到我们的模型中。
BERT 做了类似的事情(实际上,它的起点是词向量),但它创建了整个输入句子(或多个句子)的数字表示。
与 LSTM 模型相比,BERT 做了很多不同的事情。
- 它一次读取所有单词,而不是从左到右或从右到左
- 在训练期间随机选择 15% 的词进行“掩码”(字面意思是用 [MASK] 标记替换)
- 10% 的随机选择的单词保持不变
- 10% 的蒙面词被随机词替换
- (a) 和 (b) 共同作用,迫使模型预测句子中的每个单词(模型很懒惰)
- 然后 BERT 尝试预测句子中的所有单词,只有被屏蔽的单词对损失函数有贡献——包括未更改和随机替换的单词
- 该模型在下一句预测上进行了微调。 在这一步中,模型尝试确定给定句子是否是文本中的下一个句子
收敛速度慢,BERT 需要很长时间来训练。 但是,它可以更好地学习文本中的上下文关系。 词向量是非常浅的表示,限制了它们可以建模的复杂性——BERT 没有这个限制。

大多数企业可以利用使用多个 GPU 的预训练模型,并花费数天时间来训练他们的应用程序。 在少数情况下,现有的 BERT 模型无法就地使用或调整到特定用例。 BERT 允许团队将解决方案加速十倍。 人们可以着手确定业务解决方案,构建概念证明,并最终在很短的时间内将该概念投入生产。
实施 BERT 并比较业务价值
由于本文侧重于构建真实产品的业务和工程应用,因此我们将创建和训练两个模型以更好地了解比较价值。
- BERT:最直接的 BERT 流水线。 我们以标准方式处理文本,生成 BERT 句子编码,然后将这些句子编码输入浅层神经网络
- LSTM:标准的嵌入 - 编码 - 参加 - 预测架构(如上图所示)
任务? 根据 IMDB 中的情节预测电影的起源。 我们的数据集涵盖了来自美国、澳大利亚、英国、加拿大、日本、中国、韩国和俄罗斯的电影以及其他 16 部电影,总共 24 个来源。 我们总共有不到 35,000 个训练示例。
这是一个情节的示例片段。
数千年前,荒原狼和他的 Parademons 军团试图用三个母盒的综合能量接管地球。 他们被包括奥林匹亚诸神、亚马逊人、亚特兰蒂斯人、人类和绿灯军团在内的统一军队挫败。 在击退荒原狼的军队后,母盒被分离并隐藏在地球上的各个位置。 目前,人类正在为超人哀悼,超人的死触发了母盒重新激活,荒原狼返回地球,努力重新获得主人达克赛德的青睐。 荒原狼旨在收集文物以形成“统一”,这将破坏地球的生态并将其改造为……
如果你没有猜到,这就是美国电影《正义联盟》的情节。
结果
我们训练了一组不同的参数,以了解结果如何响应不同数量的数据和模型大小。 正如我们所说,BERT 最重要的附加值是对数据的需求要少得多。
对于 LSTM 模型,我们在 GPU 上训练了最大的模型,并改变了词汇的大小和词长,以找到性能最佳的模型。 对于 BERT 模型,我们只有一层。
我们修复了所有这些样本的测试集,因此我们始终对相同的训练集进行评分。
在这项任务中,使用 BERT 句子编码训练的模型仅在 1000 个样本后就达到了令人印象深刻的 0.84 的 F1 分数。 LSTM 网络从不超过 0.60。 更令人印象深刻的是,训练 BERT 模型的时间平均是准备 LSTM 模型的 1/20 。
结论
无论以何种标准衡量,这些结果都表明了 NLP 的一场革命。 使用少 100 倍的数据和少 20 倍的训练时间,我们取得了世界级的成果。 在几秒钟或几分钟内而不是几小时或几天内训练高质量模型的能力在以前无法提供的领域开辟了 NLP。
BERT 的用途比本文中的要多得多。 有多语言模型。 它可用于解决许多不同的 NLP 任务,可以像本文中那样单独解决,也可以同时使用多个输出。 BERT 句子编码将成为未来许多 NLP 项目的基石。
这篇文章背后的代码可以在 Github 上找到。 我还鼓励读者查看 Bert-as-a-service,这是为这篇文章构建 BERT 句子编码的基石。