Transformer:一种基于自注意力机制的神经网络结构,通过并行计算和多层特征抽取,有效解决了长序列依赖问题,实现了在自然语言处理等领域的突破。
网络结构
由输入部分输入输出嵌入与位置编码)、多层编码器、多层解码器以及输出部分(输出线性层与Softmax)四大部分组成。
Transformer架构
输入部分:
- 源文本嵌入层: 将源文本中的词汇数字表示转换为向量表示,捕捉词汇间的关系。
- 位置编码器: 为输入序列的每个位置生成位置向量,以便模型能够理解序列中的位置信息。
- 目标文本嵌入层(在解码器中使用): 将目标文本中的词汇数字表示转换为向量表示。
编码器部分:
- 由N个编码器层堆叠而成。
- 每个编码器层由两个子层连接结构组成: 第一个子层是多头自注意力子层,第二个子层是一个前馈全连接子层。每个子层后都接有一个规范化层和一个残差连接。
解码器部分:
- 由N个解码器层堆叠而成。
- 每个解码器层由三个子层连接结构组成: 第一个子层是一个带掩码的多头自注意力子层,第二个子层是一个多头自注意力子层(编码器到解码器),第三个子层是一个前馈全连接子层。每个子层后都接有一个规范化层和一个残差连接。
输出部分:
- 线性层: 将解码器输出的向量转换为最终的输出维度。
- Softmax层: 将线性层的输出转换为概率分布,以便进行最终的预测。
解决问题
- 长期依赖问题: 在处理长序列输入时,传统的循环神经网络(RNN)会面临长期依赖问题,即难以捕捉序列中的远距离依赖关系。Transformer模型通过自注意力机制,能够在不同位置对序列中的每个元素赋予不同的重要性,从而有效地捕捉长距离依赖关系。
- 并行计算问题: 传统的RNN模型在计算时需要按照序列的顺序依次进行,无法实现并行计算,导致计算效率较低。而Transformer模型采用了编码器-解码器结构,允许模型在输入序列上进行编码,然后在输出序列上进行解码,从而实现了并行计算,大大提高了模型训练的速度。
- 特征抽取问题: Transformer模型通过自注意力机制和多层神经网络结构,能够有效地从输入序列中抽取丰富的特征信息,为后续的任务提供更好的支持。
工作原理
Transformer工作原理
- 输入线性变换: 对于输入的Query(查询)、Key(键)和Value(值)向量,首先通过线性变换将它们映射到不同的子空间。这些线性变换的参数是模型需要学习的。
- 分割多头: 经过线性变换后,Query、Key和Value向量被分割成多个头。每个头都会独立地进行注意力计算。
- 缩放点积注意力: 在每个头内部,使用缩放点积注意力来计算Query和Key之间的注意力分数。这个分数决定了在生成输出时,模型应该关注Value向量的部分。
- 注意力权重应用: 将计算出的注意力权重应用于Value向量,得到加权的中间输出。这个过程可以理解为根据注意力权重对输入信息进行筛选和聚焦。
- 拼接和线性变换: 将所有头的加权输出拼接在一起,然后通过一个线性变换得到最终的Multi-Head Attention输出。