本文概述
- 深度学习的趋势
- 来了BERT
- BERT如何工作
- 实现BERT和比较业务价值
- 结果
- 总结
建立深度学习自然语言处理(NLP)分类模型时, 存在两个主要困难。
- 数据收集(获取成千上万的分类数据点)
- 深度学习架构和培训
数据收集是繁重, 耗时, 昂贵的, 并且是成功的NLP项目的第一限制因素。即使有才华的机器学习工程师, 准备数据, 建立弹性流水线, 在数百种潜在的准备选项中进行选择以及” 模型准备就绪” 也很容易花费数月的时间。最后, 训练和优化深度学习模型需要直观的理解, 技术专长和坚持问题的能力的结合。
在本文中, 我们将介绍
- NLP深度学习的趋势:转移学习如何使世界一流的模型开源
- BERT简介:迄今为止最强大的NLP” 工具” 的介绍–变压器(BERT)的双向编码器表示
- BERT的工作方式以及为什么它将改变公司在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尝试预测句子中的所有单词, 只有被屏蔽的单词才对损失函数有所帮助-包括未更改和随机替换的单词
- 该模型对下一句预测进行了微调。在此步骤中, 模型将尝试确定给定的句子是否是文本中的下一个句子
大多数企业可以利用利用了多个GPU的预训练模型, 并且花了几天的时间对其应用进行训练。在极少数情况下, 现有的BERT模型无法就地使用或无法调整为特定的用例。 BERT允许团队将解决方案加速十倍。可以确定业务解决方案, 构建概念证明, 并最终在很短的时间内将该概念投入生产。
实现BERT和比较业务价值 由于本文关注于构建真实产品的商业和工程应用, 因此我们将创建和训练两个模型以更好地理解比较值。
- BERT:最直接的BERT管道。我们以标准方式处理文本, 生成BERT句子编码, 然后将这些句子编码输入浅层神经网络
- LSTM:标准的嵌入-编码-出席-预测体系结构(如上图所示)
这是情节中的示例片段。
几千年前, Steppenwolf和他的Parademons军团试图用三个Mother Box的综合能量来接管地球。它们由包括奥林匹亚众神, 亚马逊河, 亚特兰蒂斯人, 人类和绿灯军团在内的统一军队挫败。驱逐Steppenwolf的军队后, “ 母亲之盒” 被分离并隐藏在地球上的某些位置。目前, 人类正在为超人而哀悼, 超人的死亡触发了母亲盒子的重新激活, 而斯蒂芬沃尔夫重返地球, 以期重新获得他的主人暗塞德(Darkseid)的青睐。 Steppenwolf的目的是收集文物以形成” 统一” , 这将破坏地球的生态并将其形象化为……如果你没有猜到, 这就是美国电影正义联盟的情节。
结果 我们训练了各种各样的参数, 以了解结果如何响应变化的数据量和模型大小。就像我们说的那样, BERT带来的最重要的增值就是对更少数据的需求。
对于LSTM模型, 我们训练了我们可以在GPU上使用的最大模型, 并改变了词汇量和单词长度以找到性能最佳的模型。对于BERT模型, 我们只剩下一层。
我们在所有这些样本中固定了测试集, 因此我们一直在为同一训练集评分。
文章图片
在此任务上, 使用BERT句子编码训练的模型在仅进行1000个采样后就达到了令人印象深刻的F1分数0.84。 LSTM网络永远不会超过0.60。更令人印象深刻的是, 与准备LSTM模型相比, 训练BERT模型平均花费了1/20的时间。
总结 无论如何, 这些结果表明NLP发生了革命。使用的数据量减少了100倍, 培训时间减少了20倍, 我们获得了世界一流的结果。在数秒或数分钟而不是数小时或数天的时间内训练高质量模型的能力在以前无法负担的地区打开了NLP。
BERT具有比本文中更多的用途。有多种语言的模型。它可以用于解决许多不同的NLP任务, 既可以单独使用, 也可以同时使用多个输出。 BERT句子编码将成为今后许多NLP项目的基石。
【通过BERT加速(NLP优化模型)】这篇文章背后的代码可以在Github上找到。我还鼓励读者查看Bert即服务, 这是为该帖子构建BERT句子编码的基础。
推荐阅读
- MCMC方法(Metropolis-Hastings和贝叶斯推理)
- 从Oracle到SQL Server和从SQL Server到Oracle的迁移指南(1)
- Spring 梳理 - javaConfig在App和webApp中的应用
- Web Application Vulnerablities
- 互联网“寒冬”不想被辞退,Android程序员该如何应对()
- 安卓基础之缩放加载本地大图
- mapper代理查询
- mapper加载的3种方法
- Android--多线程之Handler