当前位置:   article > 正文

Bert解析,state of the art的语言模型

state of the art架构

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Rani Horev

编译:ronghuaiyang

导读

对bert的解析,很简单,也很清楚,重要的是很好理解,让你一下子抓住重点。

BERT是最近由研究人员在谷歌AI语言上发表的论文。它通过在各种NLP任务(包括问答(SQuAD v1.1)、自然语言推理(MNLI)等)中展示最先进的结果,在机器学习社区中引起了轰动。

BERT的关键技术创新是将目前流行的注意力模型Transformer的双向训练应用到语言模型中。这与之前的研究形成了对比,之前的研究着眼于从左到右的文本序列,或者结合从左到右和从右到左的训练。研究结果表明,双向训练的语言模型比单向训练的语言模型具有更强的语言语境感。在这篇论文中,研究人员详细介绍了一种新技术Masked LM (MLM),它允许在模型中进行双向训练,这在以前是不可能的。

背景

在计算机视觉领域,研究人员已经反复展示了迁移学习的价值——在已知任务(例如ImageNet)上预先训练一个神经网络模型,然后进行微调——使用训练过的神经网络作为新的特定目标模型的基础。近年来,研究人员已经证明,类似的技术可以在许多自然语言任务中发挥作用。

另一种方法是基于特征的训练,这种方法在NLP任务中也很流行,最近的ELMo论文中对此进行了说明。在这种方法中,一个预训练的神经网络产生单词嵌入,然后作为NLP模型的特征。

BERT工作原理

BERT使用了Transformer,这是一种注意力机制,可以学习文本中单词(或子单词)之间的上下文关系。Transformer的基本形式包括两种独立的机制——读取文本输入的编码器和为任务生成预测的解码器。由于BERT的目标是生成语言模型,因此只需要编码器机制。谷歌在一篇论文中描述了Transformer的详细工作原理。

与按顺序读取文本输入(从左到右或从右到左)的方向模型相反,Transformer编码器一次读取整个单词序列。因此它被认为是双向的,尽管更准确地说它是无方向性的。这个特性允许模型基于一个单词的所有环境(单词的左、右)来学习该单词的上下文。

下图是Transformer编码器的高级描述。输入是一组token序列,这些token首先嵌入到向量中,然后在神经网络中进行处理。输出是大小为H的向量序列,其中每个向量对应一个具有相同索引的输入token。

640?wx_fmt=png

当训练语言模型时,定义一个预测目标是一个挑战。许多模型预测下一个单词的顺序(例如“the child came home from”),这是一种方向性的方法,从本质上限制了上下文学习。为了克服这个挑战,BERT使用了两种训练策略:

Masked LM (MLM)

在将单词序列输入BERT之前,每个序列中15%的单词被替换为[MASK]令牌。然后,该模型试图根据序列中其他非屏蔽词提供的上下文来预测屏蔽词的原始值。在技术方面,预测产出单词需要:

  1. 在编码器输出的顶部添加一个分类层。

  2. 将输出向量乘以嵌入矩阵,将其转换为词汇表维数。

  3. 用softmax计算词汇表中每个单词的概率。

640?wx_fmt=png

BERT损失函数只考虑掩码值的预测,而忽略了非掩码词的预测。因此,模型收敛速度比方向模型慢,这一特性被其增强的上下文感知所抵消。

注意:在实践中,BERT实现稍微复杂一些,并没有替换所有15%的屏蔽词。

预测下一个句子

在BERT训练过程中,模型接收成对的句子作为输入,并学习预测这对句子中的第二句是否为原文档中的第二句。在训练过程中,50%的输入是一对输入,其中第二句是原文档中的第二句,而在另50%的输入中,从语料库中随机抽取一个句子作为第二句。假设随机的句子将与第一个句子断开。

为了帮助模型在训练中区分这两句话,在输入模型之前,对输入进行如下处理:

  1. 在第一个句子的开头插入一个[CLS]令牌,在每个句子的末尾插入一个[SEP]令牌。

  2. 在每个标记中添加一个嵌套句,指示句A或句B。句子嵌入在概念上类似于词汇表为2的标记嵌入。

  3. 将位置嵌入添加到每个令牌中,以指示其在序列中的位置。Transformer的论文介绍了位置嵌入的概念和实现。

640?wx_fmt=png

为了预测第二句话是否确实与第一句相连,执行以下步骤:

  1. 整个输入序列通过Transformer模型。

  2. 使用一个简单的分类层(学习一个权值和偏差的矩阵)将[CLS]令牌的输出转换为一个2×1形状的向量。

  3. 用softmax计算IsNextSequence的概率。

在训练BERT模型时,将Masked LM和 Next Sentence Prediction同时训练,目标是使两种策略的组合损失函数最小。

如何使用BERT(Fine-tuning)

将BERT用于特定的任务相对简单:

BERT可以用于各种各样的语言任务,而只在核心模型中添加一个小层:

  1. 分类任务(例如情感分析),通过在[CLS]令牌的Transformer输出之上添加一个分类层,执行方式与Next Sentence Prediction类似。

  2. 回答问题的任务(例如SQuAD v1.1)中,软件接收到一个关于文本序列的问题,并需要在序列中标记答案。使用BERT,可以通过学习两个额外的向量来训练问答模型,这两个向量表示答案的开始和结束。

  3. 在命名实体识别(NER)中,软件接收一个文本序列,并需要标记文本中出现的各种类型的实体(人员、组织、日期等)。使用BERT,可以通过将每个令牌的输出向量输入预测NER标签的分类层来训练NER模型。

在finetune训练中,大部分超参数与BERT训练保持一致,本文对需要调整的超参数给出了具体的指导(第3.5节)。BERT团队已经使用这种技术在各种具有挑战性的自然语言任务上取得了最先进的成果,详细内容见文章的第4部分。

注意:BERT的预训练模型也可以用于生成文本嵌入,类似于许多其他基于特征的模型,比如doc2vecELMo。通过将编码器的最后四层串联起来,可以得到最佳的嵌入效果。

要点

  1. 模型大小很重要,即使是在大规模的情况下。 BERTLARGE拥有3.45亿个参数,是同类模型中最大的。它在小规模任务上明显优于BERTBASE,后者使用相同的架构,“只有”1.1亿个参数。

  2. 有了足够的训练数据,更多的训练步骤==更高的准确性。例如,在MNLI任务中,当训练1M步(128,000个单词的批大小)时,BERTBASE的准确率比训练相同批大小的500K步提高1.0%。

  3. BERT的双向训练方法(MLM)收敛速度慢于从左到右的方法(因为每批训练只预测15%的单词),但经过少量的训练前步骤后,双向训练仍然优于从左到右的训练。

640?wx_fmt=png

计算配置(训练和部署)


Training Compute + TimeUsage Compute
BERTBASE4 Cloud TPUs, 4 days1 GPU
BERTLARGE16 Cloud TPUs, 4 days1 TPU

总结

BERT无疑是机器学习用于自然语言处理方面的一个突破。事实上,它是可用的,并允许快速微调,并且可能应用在未来广泛的实际应用中。在本摘要中,我们试图描述本文的主要思想,同时又不沉溺于过多的技术细节。对于那些希望深入研究的人,我们强烈建议阅读全文和其中引用的辅助文章。另一个有用的参考资料是BERT源代码和模型,它们涵盖103种语言,并且由研究团队慷慨地作为开放源码发布。

640?wx_fmt=png— END—

英文原文:https://www.lyrn.ai/2018/11/07/explained-bert-state-of-the-art-language-model-for-nlp/


640?wx_fmt=jpeg

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧640?wx_fmt=gif

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/833476
推荐阅读
相关标签
  

闽ICP备14008679号