大家好,这里是好评笔记,本文为试读,查看全文请移步公主号:Goodnote。本文详细介绍面试过程中可能遇到的Transformer知识点。
@[toc]
初识Transformer
Transformer 是一种革命性的神经网络架构,最早由 Vaswani 等人在 2017 年提出,它彻底改变了自然语言处理(NLP)的领域。与传统的递归神经网络(RNN)和长短期记忆网络(LSTM)不同,Transformer不依赖于序列的时间步 ,而是通过注意力机制 并行处理整个输入序列。它在诸如机器翻译、文本生成和语言模型等任务中表现出色。下面详细介绍 Transformer 的原理、结构和应用。
1. 编码器-解码器架构
Transformer 的架构由两个部分组成:
- 编码器(Encoder):将输入序列 -> (映射) -> 连续的表示空间。
- 解码器(Decoder):根据编码器的输出 ->生成目标序列。
编码器和解码器均由多个相同的层堆叠而成。每层都有两个主要组件:
- 多头自注意力机制(Multi-Head Self-Attention Mechanism)
- 前馈神经网络(Feed-Forward Neural Network)。
解码器的额外结构
解码器除了与编码器相同的结构外,还多了一个编码器-解码器注意力机制,它在生成每个目标时依赖于编码器的输出。
2. 自注意力机制(Self-Attention Mechanism)
Transformer 的核心是自注意力机制,它能够捕捉输入序列中的全局依赖关系,并且不需要像 RNN 那样逐步计算。
解码器中的注意力机制的2点特殊
- 编码器-解码器注意力机制:解码器中,不仅包含自注意力机制,还包括一个与编码器输出交互的注意力机制,它允许解码器在生成每个词时参考编码器的上下文信息。
- 未来遮蔽:确保在生成第 t 个词时,只能看到之前生成的词,而看不到未来的词。
3. 位置编码(Positional Encoding)
因为 Transformer 不依赖输入序列的顺序信息,它需要显式地将位置信息引入模型中。为此,Transformer 使用位置编码(Positional Encoding)来为每个输入向量添加位置信息。
位置编码通过正弦和余弦函数生成,并按照序列的索引位置注入到每个词向量中:
其中 ( ) 是词在序列中的位置,( ) 是词向量的维度索引,( ) 是词向量的总维度。
4. 前馈神经网络(Feed-Forward Neural Network, FFN)
在每个编码器和解码器层中,除了自注意力机制外,还包括一个前馈神经网络。每个时间步上的前馈网络是独立应用的,它的公式如下:
5. 残差连接和层归一化(Residual Connections and Layer Normalization)
Transformer 的每个子层(如自注意力机制或前馈神经网络)后面都有一个残差连接(Residual Connection)和层归一化(Layer Normalization),确保在网络训练的过程中信息可以直接传递,缓解深层网络中的梯度消失问题。
残差连接的形式为:
6. Transformer 的应用
Transformer 由于其并行计算的优势,以及在处理长距离依赖关系上的优越表现,在许多任务中取得了卓越的成果:
- 机器翻译:例如谷歌翻译。
- 文本生成:例如 OpenAI 的 GPT 系列模型。
- 文本摘要:自动生成文档摘要。
- 语言建模:如 BERT、GPT 及其变体,用于各种 NLP 任务。
- 图像处理&多模态:ViT、ViLT。
7. Transformer 的优势
- 并行处理:不依赖时间步顺序,可以并行处理整个序列,因此训练速度更快,特别适合大规模数据集。
- 长距离依赖处理能力强:注意力机制,能够轻松处理序列中远距离的依赖关系,而不像 RNN 或 LSTM 那样受限于序列的长度。
- 广泛的应用:Transformer 已成为 NLP 的标准架构,并被扩展到其他领域,如图像处理(Vision Transformer, ViT)和语音处理等。
编码解码的过程
详细全文请移步公主号:Goodnote。