一文读懂何为深度学习3

人工智能

636人已加入

描述

目标函数

★ 1. Masked Language Model, MLM

MLM 是为了训练深度双向语言表示向量,BERT 用了一个非常直接的方式,遮住句子里某些单词,让编码器预测这个单词是什么。具体操作流程如下图示例:先按一个较小概率 mask 掉一些字,再对这些字利用语言模型由上下文做预测。

nlp

BERT 具体训练方法为:随机遮住15%的单词作为训练样本。

  • 其中80%用 masked token 来代替。
  • 10%用随机的一个词来替换。
  • 10%保持这个词不变。

直观上来说,只有15%的词被遮盖的原因是性能开销,双向编码器比单向编码器训练要慢;选80% mask,20%具体单词的原因是在 pretrain 的时候做了 mask,在特定任务微调如分类任务的时候,并不对输入序列做 mask,会产生 gap,任务不一致;10%用随机的一个词来替换,10%保持这个词不变的原因是让编码器不知道哪些词需要预测的,哪些词是错误的,因此被迫需要学习每一个 token 的表示向量,做了一个折中。

nlp

★ 2. Next Sentence Prediction

预训练一个二分类的模型,来学习句子之间的关系。预测下一个句子的方法对学习句子之间关系很有帮助。

训练方法:正样本和负样本比例是1:1,50%的句子是正样本,即给定句子A和B,B是A的实际语境下一句;负样本:在语料库中随机选择的句子作为B。通过两个特定的 token[CLS]和[SEP]来串接两个句子,该任务在[CLS]位置输出预测。

nlp

输入表示

Input: 每个输入序列的第一个 token [CLS]专门用来分类,直接利用此位置的最后输出作为分类任务的输入 embedding。

nlp

从直观上来说,在预训练时,[CLS]不参与 mask,因而该位置面向整个序列的所有position 做 attention,[CLS]位置的输出足够表达整个句子的信息,类似于一个global feature;而单词 token 对应的 embedding 更关注该 token 的语义语法及上下文信息表达,类似于一个 local feature。

Position Embeddings: transformer 的 PositionEncoding 是通过 sin,cos 直接构造出来的,PositionEmbeddings 是通过模型学习到的 embedding 向量,最高支持512维。

Segment Embeddings: 在预训练的句对预测任务及问答、相似匹配等任务中,需要对前后句子做区分,将句对输入同一序列,以特殊标记 [SEP] 分割,同时对第一个句子的每个 token 添加 Sentence A Embedding, 第二个句子添加 Sentence BEmbedding,实验中让EA =1, EB =0。

Fine-tune

针对不同任务,BERT 采用不同部分的输出做预测,分类任务利用[CLS]位置的embedding,NER 任务利用每个 token 的输出 embedding。

nlp

BERT的主要贡献有以下几个方面:

预训练的有效性: 这方面来说 BERT 改变了游戏规则,是因为相比设计复杂巧妙的网络结构,在海量无监督数据上预训练得到的BERT语言表示+少量训练数据微调的简单网络模型的实验结果取得了很大的优势。

网络深度: 基于 DNN 语言模型 (NNLM,CBOW等) 获取词向量的表示已经在 NLP领域获得很大成功,而 BERT 预训练网络基于 Transformer 的 Encoder,可以做的很深。

双向语言模型: 在 BERT 之前,ELMo 和 GPT 的主要局限在于标准语言模型是单向的,GPT 使用 Transformer 的 Decoder 结构,只考虑了上文的信息。ELMo 从左往右的语言模型和从右往左的语言模型其实是独立开来训练的,共享 embedding,将两个方向的 LSTM 拼接并不能真正表示上下文,其本质仍是单向的,且多层 LSTM难训练。

目标函数: 对比语言模型任务只做预测下一个位置的单词,想要训练包含更多信息的语言模型,就需要让语言模型完成更复杂的任务,BERT 主要完成完形填空和句对预测的任务,即两个 loss:一个是 Masked Language Model,另一个是 Next Sentence Prediction。

总结

我们在做 NLU 意图分类任务中实践了以上主流模型,包括 Xgboost、TextCNN、LSTM、BERT 及 ERNIE 等,下边是在前期模型调研阶段,在选型测试数据上的对比实验,BERT 模型表现出极大的优势。

nlp

同时在我们部署上线的过程中,对 BERT 时耗做了测试,在压测实验数据上的测试结果供参考。针对我们的问答query:

(1 ) BERT layer 的层数与时耗基本成线性关系,多头数目增加对时耗增加不明显;

(2) 针对短文本 query 的意图理解,更多依赖浅层语法语义特征,因而 BERT 层数对模型准召影响较小;

(3) attention 多头决定了可以从多少个角度理解 query,在我们的实验里降低多头数比降低层数对准召的影响略大,而时耗无明显降低。

nlp

图像领域,Alexnet 打开了深度学习的大门,Resnet是图像领域深度学习的殿堂标志。

随着Transformer, Bert 兴起,网络也在往12层,24层发展,得到了 SOTA. Bert 证明了在nlp领域,深层网络的效果要优于浅层网络。

自然语言领域,Transformer 打开了深层网络的大门,BERT 也成为了自然语言处理领域的殿堂标志。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分