【一起入门NLP】中科院自然语言处理第14课-Transfomer以及Transfomer架构生成模型

专栏介绍:本栏目为 “2021秋季中国科学院大学胡玥老师的自然语言处理” 课程记录,不仅仅是课程笔记噢~ 如果感兴趣的话,就和我一起入门NLP吧

目录

  • Transformer 模型结构
  • Transformer 训练
    • 训练过程
    • MASK
      • Padding Mask
      • Sequence Mask
  • Transformer 预测

Transformer 模型结构

Transfomer 模型特点:

  • 全部采用Attention机制
  • 克服了RNN无法并行计算的缺点,可以高度并行,训练速度快;
  • 具有捕捉long distance dependency的能力,有较高的建模能力
  • 训练:并行
  • 预测:编码端并行,解码端串行
    【一起入门NLP】中科院自然语言处理第14课-Transfomer以及Transfomer架构生成模型_第1张图片
    【一起入门NLP】中科院自然语言处理第14课-Transfomer以及Transfomer架构生成模型_第2张图片
  • 编码端:6层Attention堆叠,包含2个子层(Multi-head attention 和Feed Forward Network)
  • 解码端:6层Attention堆叠,包含3个子层(Multi-head attention ,cross-attention和 Feed Forward Network)
  • 交叉注意力部分:解码端的每一层与编码端的最后输出层做 cross-attention

注意:

  1. encoder的第一层输入需要对每个字进行字和位置编码,后面层无需再位置编码直接用前面层的输出做输入
  2. encoder的输出没直接作为decoder的直接输入。

计算细节等考完期末考试再来补充

Transformer 训练

Transformer 全部采用注意力机制,在训练过程中编码端各位和解码端各位均可并行操作加速训练过程。Transformer 在训练过程中采用 MASK 技术来实现并行操作

训练过程

(设 batch size = 1)

  1. 把X输入到encoder里去,最后一层encoder最终输出作为decoder里每一层的K和V;
  2. 将 < Go >作为decoder的初始输入,将decoder最后层最大概率输出词 y1和答案y1’ 做cross
    entropy计算error。
  3. 将< Go >和 i 个1’ ~i’ 作decoder的输入生成yi+1并和yi+1’ 做cross entropy计算error
  4. 重复步骤 3. 直至最后一个输出与终止符做cross entropy计算error

并行训练问题:

  • 当 batch > 1 时,如何处理不等长输入序列
  • 解码端如何并行操作Mask机制

MASK

Mask:通过对某些值进行掩盖,使其不产生效果。

Transformer 的 Mask有二种:

  1. Padding Mask:处理非定长序列问题,使不定长序列可以按定长序列统一并行操作,在所有的 Scaled Dot-Product Attention 里面都需要用到。
  2. Sequence Mask:防止标签泄露 ,在 Decoder 的 Self-Attention 里面用到。

Padding Mask

在训练中每个样本的原始句子的长度是不一样的,在进行 batch训练之前,要先进行长度的统一,过长的句子可以通过truncating 截断到固定的长度,过短的句子可以通过 padding 增加到固定的长度,但是 padding 对应的字符只是为了统一长度,并没有实际的价值,因此希望在之后的计算中屏蔽它们,这时候就需要 Mask

【一起入门NLP】中科院自然语言处理第14课-Transfomer以及Transfomer架构生成模型_第3张图片
对于那些补零的数据,为了让attention机制不把注意力放在这些位置上,把这些位置的值加上一个非常大的负数(负无穷),经过softmax后,这些位置的权重就会接近0。Transformer的padding mask实际上是一个张量,每个值都是一个Boolean,值为false的地方就是要遮挡的地方。

【一起入门NLP】中科院自然语言处理第14课-Transfomer以及Transfomer架构生成模型_第4张图片

Sequence Mask

【一起入门NLP】中科院自然语言处理第14课-Transfomer以及Transfomer架构生成模型_第5张图片
由于采用 Attention 编码,Y的各词可以同时生成(并行计算进行训练),需要对后续词进行屏蔽。将这些输入组成输入矩阵,然后乘以一个 mask矩阵,屏蔽当前词到最后的词,使当前词只能看到它前面的词。
【一起入门NLP】中科院自然语言处理第14课-Transfomer以及Transfomer架构生成模型_第6张图片
屏蔽i到最后的词,即当前词只能看到它前面的词。

Transformer 预测

训练好的模型在预测时将源句子在编码端输入, encoder对其并行编码后得到编码端的输出tensor (不直接作decoder输入),然后Decode端进行解码。

步骤如下:
1.用起始符< Go >当作decoder的 输入,得到输出 的第1个词
2. 用< Go > + 已输出的词解码得到后继的输出词
3. 重复2. 直至输出为结束符号

输入端编码并行进行,预测解码过程中,一个单词一个单词的串行进行输出。

你可能感兴趣的:(#,自然语言处理,自然语言处理,transformer)