NLP---BERT

参考:

1. 简介

  • BERTBidirectional Encoder Representations from Transformers for Language Understanding.
  • 论文地址https://arxiv.org/pdf/1810.04805.pdf
  • 是一种预训练模型,充分的描述了字符级、词级、句子级甚至句间关系的特征,在不同的NLP任务中,只需要为任务定制一个非常轻量级的输出层 (比如一个单层MLP) 就可以了。

1.1 使用到的技巧

(1) Masked LM:为了实现双向encoding。实现方法,随机的掩盖住句子中的一部分词。
(2) Encoder的选择:使用可以做得更深、并行性更好的Transformer Encoder。但表示词位置的方法与Transformer原论文中不一样,而是训练每个单词的位置向量。
(3) 句子级负采样:sentence-level representation.
(4) 简洁的下游任务接口:在不同的NLP任务中,只需要为任务定制一个非常轻量级的输出层 (比如一个单层MLP) 就可以了。

1.2 网络结构

  • BERT的网络结构如下图所示:
BERT的网络结构
  • 使用的特征抽取器:Transformer
  • 语言模型作为训练任务:使用双向的语言模型作为训练任务,即根据 context-before 和 context-after 预测单词 W i W_i Wi. (这也是与GPT的主要不同之处)
  • 两阶段模型:与GPT完全相同的两阶段模型。
    第一个阶段是利用语言模型进行预训练,第二阶段通过Fine-tuning的模式解决下游任务。

1.3 应用于下游任务

  • 说明:这部分没有实操感觉不太理解,先做笔记到这里回头再慢慢理解。因此,这节大部分摘自:https://zhuanlan.zhihu.com/p/49271699
  • NLP四大类任务
    (1) 序列标注:分词 / / /词性标注 (POS Tag, part-of-speech) / / /命名实体识别 (NER, Named Entity Recognition) / / /语义标注 ⋯ \cdots
       特点:句子中每个单词要求模型根据上下文都要给出一个分类类别。
    (2) 分类任务:文本分类 / / /情感计算 ⋯ \cdots
       特点:不管文章有多长,总体给出一个分类类别。
    (3) 句子关系判断:Entailment (蕴含、推断) / / /QA / / /自然语言推理 ⋯ \cdots
       特点:给定两个句子,模型判断出两个句子是否具备某种语义关系。
    (4) 生成式关系:机器翻译 / / /文本摘要 / / /写诗造句 / / /看图说话 ⋯ \cdots
       特点:输入文本内容后,需要自主生成另外一段文字。
  • 应用于句子关系类:和GPT类似,对于输入,加上一个起始和终结符号,句子之间加个分隔符。对于输出,把第一个起始符号对应的Transformer最后一层位置上面串接一个softmax分类层即可。
  • 应用于分类任务:和GPT类似,输入部分只需要增加起始和终结符号,输出部分和句子关系判断任务的改造类似。
  • 应用于序列标注任务:输入部分和单句分类是一样的,只需要输出部分Transformer最后一层每个单词对应位置都进行分类即可。
  • 应用于生成式任务:附着在S2S结构上,encoder部分是个深度Transformer结构,decoder部分也是个深度Transformer结构。根据任务选择不同的预训练数据初始化encoder和decoder即可。这是一种比较直观的方法,还有很多其他方法。

1.4 BERT与word2vec、ELMo及GPT的关系

BERT与word2vec、ELMo及GPT的关系非常一目了然,如下图所示:

BERT&word2vec&ELMO&GPT

1.5 双向语言模型的实现

BERT中的双向语言模型通过论文中提出的 “Masked LM” 实现的,其本质思想是CBOW,但也有其改进之处:从语料中随机选择15%的单词,选中的这些单词中:80%替换成 [mask] 标记;10%被替换成其它随机的单词;10%保持不变。

这样做的好处

论文中说:The advantage of this procedure is that the Transformer encoder does not know which words it will be asked to predict or which have been replaced by random words, so it is forced to keep a distributional contextual representation of every input token. Additionally, because random replacement only occurs for 1.5% of all tokens (i.e., 10% of 15%), this does not seem to harm the model’s language understanding capability.

1.6 Next Sentence Prediction (NSP)

  为了使模型理解句子之间的关系,从单一语言语料库中生成“下一句预测任务”,具体做法是,选择句子A和句子B作为预训练样例,其中50%的句子B是句子A的真正下一句句子,标记为“IsNext”,剩下50%的句子B从语料库中随机选择,标记为“NotNext”。
  这样做之后,预训练模型可以应用于带有句子关系判断的下游任务。

1.7 模型输入

  训练数据由两个句子为单位构成,两个句子之间加分隔符“[SEP]”进行分割,句子最前面加标识符号“[CLS]”。每个单词的embedding由三部分相加组成:
(1) 位置信息embedding;
(2) 句子embedding,单子所在句子的整体embedding;
(3) 单词embedding。

  BERT的输入具体如下图所示:

the input of BERT

1.8 总结

  • BERT的优势:效果好;普适性强,几乎所有类型NLP任务都可以套用。
  • BERT的两大关键点:(1) 特征抽取器选择Transformer;(2) 预训练阶段采用双向语言模型。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值