



1. transformer架构
-
encoder-decoder框架是一种处理NLP或其他seq2seq转换任务中的常见框架, 机器翻译就是典型的seq2seq模型, 两个seq序列长度可以不相等
-
transformer也是encoder-decoder的总体架构, 如上图。transformer主要由4个部分组成:
- 输入部分(输入输出嵌入与位置编码)
- 多层编码器
- 多层解码器
- 以及输出部分(输出线性层与softmax)
-
模块介绍
- Input Embedding: 输入嵌入。将源文本中的词汇数字表示转换为向量表示,捕捉词汇间的关系
- Positional Encoding: 位置编码。为输入序列的每个位置生成位置向量,以便模型能够理解序列中的位置信息
- Output Embedding: 输出嵌入。将目标文本中的词汇数字表示转换为向量表示
- Linear: 线性层。将decoder输出的向量转换为最终的输出维度
- Softmax: softmax层。将线性层的输出转换为概率分布,以便进行最终的预测
- encoder架构: encoder由6个相同的encoder层组成,每个层包括两个子层:一个多头自注意力层(multi-head self-attention)和一个逐位置的前馈神经网络(point-wise feed-forward network);每个子层后都会使用残差连接(residual connection)和层归一化(layer normalization)连接,即Add&Norm。如下图
- decoder架构:decoder包含6个相同的decoder层,每层包含3个子层:掩码自注意力层(masked self-attention),encoder-decoder交叉注意力层,逐位置的前馈神经网络。每个子层后都有残差连接和层归一化操作,即Add&Norm。如下图
2. transformer子层解析
- encoder和decoder的本质区别:self-attention的masked掩码机制
- muitl-head进行masked的目的:在生成文本时,确保模型只依赖已知的信息,而不是未来的内容,对未来信息进行掩码处理,这样才能学会预测
- multi-head的目的:让模型关注输入的不同部分或者不同信息,比如一个名词的修饰词,一个名词的分类,一个名词对象的情感、诗意等,从直观的到抽象的,捕获复杂的依赖关系
- Add:残差连接。缓解梯度消失问题;网络输入x与网络输出F(x)相加,求导时相当于添加常数项1,缓解梯度消失问题
- Norm:层归一化。在每个层上独立进行,使激活值具有相同的均值和方差,通常是0和1;在transformer中,Norm操作通常紧跟在Add之后,对残差连接结果进行归一化,以加速训练并稳定模型性能
- 前馈网络:对输入进行非线性变换,提取更高级别的特征/信息
- 逐位前馈神经网络</