【NLP】预训练语言模型一览

1. 背景介绍

预训练语言模型(pre-train language model)相信大家都已经很熟悉了,本篇主要是对Transformer 的原理及几种主要的预训练语言模型(PLMs)做简要的梳理。
PLMs:先在一批语料上训练模型,然后在该模型基础上继续训练或另做他用。
预训练阶段:一般会在超大规模语料上,利用无监督或弱监督的方式训练模型,该模型具备两个特点:①能够学习到足够多的语言知识;②参数规模很大。
微调阶段:利用预训练好的模型,去定制化训练某些任务,往往会事半功倍。
 

2. Transformer原理(2017-06)

image.png

1) 编码器-解码器
  • a.编码器由 6 个相同的层堆叠在一起,每一层又有两个支层。第一个支层是一个多头的自注意机制,第二个支层是一个简单的全连接前馈网络。在两个支层外面都添加了一个残差连接,然后进行了层-归一化的操作。
  • b.解码器也是堆叠了 6 个相同的层。不过每层除了编码器中那两个支层,解码器还加入了第三个支层,同样也用了残差连接以及层-归一化。
    image.png
  • c.编码器就是利用学习好的 embeddings 将 tokens(一般应该是词或者字符)转化为 d 维向量。对解码器来说,利用线性变换以及 softmax 函数将解码的输出转化为一个预测下一个 token 的概率。
2) 输入输出流程

image.png

  • a.计算 Self Attention:对输入编码器的每个词向量,分别与 3 个权重矩阵 WQ、WK、WV 相乘,得到 3 个向量:Query 向量,Key 向量,Value 向量,而这 3 个矩阵是我们要学习的参数。
    image.png
    image.png
  • b.这 3 个新得到的向量一般比原来的词向量的长度更小。比如这 3 个向量的长度是64,而原始的词向量或者最终输出的向量的长度是 512(这 3 个向量的长度,和最终输出的向量长度,有倍数关系)。
  • c.计算(attention score)注意力分数
    image.png
3) 多头注意力(multi-head attention)

image.png
多头注意力机制从一下两个方面来增强 attention 层的能力:

  • a.它扩展了模型关注不同位置的能力。在上面的例子中,第一个位置的输出 z1 包含了句子中其他每个位置的很小一部分信息,但 z1 可能主要是由第一个位置的信息决定的,多头注意力机制会削弱自身的影响。
  • b.多头注意力机制赋予 attention 层多个“子表示空间”。多头注意力机制会有多组的权重矩阵,每一组注意力的权重矩阵都是随机初始化的。经过训练之后,每一组注意力可以看作是把输入的向量映射到一个“子表示空间”。
  • c.把 8 个矩阵 {Z0,Z1…,Z7} 拼接起来,把拼接后的矩阵和 WO 权重矩阵相乘,得到最终的矩阵 Z,这个矩阵包含了所有 attention heads(注意力头) 的信息。这个矩阵会输入到 FFNN (Feed Forward Neural Network)层。
4) 位置编码(position embedding)

l a t e x latex latexPE_{(pos,2i)}=sin(pos/10000^{2i/d_{model}}) PE_{(pos,2i+1)}=cos(pos/10000^{2i/d_{model}}) \small pos 即 position,意为 token 在句中的位置,设句子长度为 L ,则 pos=0,1,…,L−1, \ i 为向量的某一维度,例如,d_{model}=512 时,i=0,1,…,255。

5) 残差连接与层-归一化

image.png

6) 编码-解码注意力层

image.png

  • Encoder-Decoder Attention层是使用前一层的输出来构造 Query 矩阵,而 Key 矩阵和 Value 矩阵来自于解码器最终的输出,有助于解码器把注意力集中输入序列的合适位置。
     
3. BERT

Bert主要包括三个部分:

  1. embedding
    token embedding + segment embeding + position embedding
  2. MLM(mask language model)
    随机 Mask 掉句子中 15% 的词,用上下文来预测。为防止 fine-tuning 中 mask 掉的词从未出现过, 会用80%的 mask, 10% 用随机词,10% 保持不变。
  3. NSP(next sentence prediction)
    选择一些句子对,50% 随机,学习两个句子之间的相关性。

HuggingFace中Bert的两种位置编码:

  1. 2018 Google方案:Self-Attention with Relative Position Representations
    l a t e x latex latexe_{ij}=\frac{x_iWQ(x_jWK)T+x_iWQ(a_{ij}K)T}{\sqrt{d_z}} \small计算i和j之间得分时,将query和相对距离编码的信息进行交互
  2. 2020 AWS方案:Improve Transformer Models with Better Relative Position Embeddings
    l a t e x latex latexe_{ij}=\frac{(x_iW^Q)\cdot (x_jWK)+(x_iWQ)\cdot a_{ij}+(x_jW^K)\cdot a_{ij}}{\sqrt{d_z}} \small 计算i和j之间得分时,增加了key和相对距离编码的交互 \
    原理:在计算i对j的相关性时,增加了ij之间在Query空间、Key空间中的相对位置信息。
    优点
  3. 利用 self-attention,自带双向功能
  4. 获得句子级别的语义表征
  5. 更好的适配下游任务,微调成本小

缺点

  1. Mask 标记在预测中不会出现,训练与预测不一致
  2. 每个batch只有15%的 token被预测,对于输入是很大的信息损失
     
4. BERT系列
1) RoBERTa
  1. 删除了NSP任务,每次可以输入连续多个句子
  2. Batch Size更大,Bert base 为256, RoBERTa为8000
  3. 动态掩码,采用多种不同的方式进行mask
2) Albert
  1. 矩阵分解
  2. 跨层参数共享
  3. SOP(sentence order prediction)任务
3) ERNIE & Bert-WWM & NeZha
  • 知识掩盖策略增强模型性能,包括实体级和短语级
     
5. XLNET
  1. Transformer-XL:为了提升Transformer建模长距离依赖侧能力,上一个片段的状态会被缓存下来在当前片段使用。
    核心部分:①片段递归机制 ②相对位置编码
    提升能力:①捕获长期依赖的能力 ②解决上下文碎片化问题
  2. XLNET属于AR(auto regressive)模型(使用上文或下文信息来预测下一个词)。
    XLNET为了加上双向信息,引入了 two-stream self attention:
    ①Content 流:标准的transformer计算过程。
    ②Query 流:代替Bert的 mask,采用attention mask 机制在内部mask,mask比例与位置有关。
    相较于Bert,XLNET词利用率更高,同时避免了训练和预测不一致的情况。
     
6. 总结
  • 预训练语言模型的优点:①预训练模型的通用性;②更好的初始化参数;③正则化手段
  • 预训练在多模态等任务中的应用
  • nlp预训练模型的问题:①有没有更好的网络?②模型能否更快更小更好?③消耗资源、污染环境的追求超大模型是否必要?④可解释性……

 
 
 
 
 
 
 
 
Refs:

  1. 《Attention is all your need》
  2. 《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》
  3. 《Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context》
  4. XLNET
  5. https://www.zhihu.com/question/347678607
  6. https://www.likecs.com/show-204387321.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值