Decoder (Transformer) — 解码器
Jump to navigation
Jump to search
解码器(Decoder)是在机器学习和深度学习中的一个神经网络组件,其主要任务是将编码表示(例如,从编码器接收的上下文向量或隐藏状态序列)转换为输出数据序列(例如,文本或图像)。解码器通常以自回归方式逐个生成输出数据。
在更广泛的意义上,根据信息论,解码器是任何将编码数据转换回其原始或可理解格式的设备或算法。
概念与用途
如果说编码器负责理解和压缩输入数据,那么解码器则负责生成和展开输出数据。它接收一个紧凑且信息丰富的表示,并将其顺序地转换为所需的格式,无论是另一种语言的句子、图像的文本描述,还是一段音乐的音符序列。
大多数解码器的一个关键特性是其自回归(autoregressive)性质:为了生成序列中的下一个元素(例如,一个词或一个像素),它们既使用编码表示,也使用所有先前已生成的元素。
不同架构中的解码器
自动编码器中的解码器
在自动编码器(autoencoder)架构中,解码器执行与编码器相反的任务:
- 编码器将输入数据压缩成一个隐藏表示。
- 解码器接收这个隐藏表示,并尝试从中恢复(重构)原始数据。
训练这样的网络后,可以通过向解码器输入来自潜空间(latent space)的向量来单独使用它生成新数据。
循环神经网络(RNN/LSTM)中的解码器
在基于 RNN 或 LSTM 的经典序列到序列(seq2seq)模型中,解码器是一个循环网络,它逐个词元(token)地生成输出序列。
- 工作原理:解码器由编码器的最终隐藏状态(上下文向量)初始化。在每个步骤中,它接收先前生成的词元和其自身的上一个隐藏状态作为输入,然后生成下一个词元并更新其状态。这个过程持续进行,直到生成一个特殊的序列结束词元(`<EOS>`)。
Transformer 架构中的解码器
基于Transformer架构的解码器同样以自回归方式工作,但其内部结构有所不同。它由个相同的层堆叠而成,每个层包含三个主要子层:
- 屏蔽多头自注意力(Masked Multi-Head Self-Attention):该机制的工作方式与编码器中的自注意力机制类似,但有一个重要区别——屏蔽(masking)。屏蔽操作防止每个位置“关注”到序列中后续的位置。这确保了对位置的预测仅依赖于位置之前已知的输出,从而保持了自回归属性。
- 多头交叉注意力(Multi-Head Cross-Attention):这是连接解码器和编码器的关键机制。在这里,查询(Query)来自解码器的前一个层,而键(Key)和值(Value)则来自编码器的输出表示。这使得解码器在生成的每一步都能聚焦于输入序列中最相关的部分。
- 前馈神经网络(Feed-Forward Network):与编码器中使用的网络类似。
基于解码器的模型类型
编码器-解码器模型
这是经典的架构,其中编码器和解码器协同工作。
- 工作原理:编码器创建输入数据的表示,解码器利用该表示生成输出数据。
- 示例:原始 Transformer、T5、BART。
仅解码器(Decoder-Only)模型
这些模型已成为生成式 AI 领域的主流,它们仅使用 Transformer 解码器的堆栈。
- 工作原理:由于没有编码器,这类模型中不存在与编码器的交叉注意力。模型纯粹以自回归模式运行,根据同一序列中所有先前的词元来预测下一个词元。输入的提示词和已生成的文本被一同处理。
- 应用:非常适用于需要接续给定文本的任务(文本生成、对话系统、聊天机器人)。
- 示例:GPT 系列、LLaMA、Claude。
与编码器的连接
编码器和解码器的交互是转换任务的基本原则。
- 编码器将输入序列的信息压缩成一组向量。
- 解码器利用这组向量来顺序生成一个新的序列。
交叉注意力允许解码器在每一步“咨询”编码器,以了解当前应关注输入文本的哪一部分。例如,在翻译一个句子时,解码器在生成德语单词时,可以“查看”输入中对应的英语单词。
参见
- GPT
参考文献
- Vaswani, A. et al. (2017). Attention Is All You Need. NIPS.