1. 编码器(Encoder):
- 编码器处理输入数据(例如,句子中的词序列),并将其压缩成一个固定大小的上下文向量或一系列上下文向量。
- 这一部分通常由多层递归神经网络(RNNs)、长短期记忆网络(LSTMs)、门控循环单元(GRUs)或最近的Transformer网络组成。
- 编码器逐步读取输入序列,并在每一步更新其隐藏状态。最终的隐藏状态或一系列隐藏状态就包含了输入序列的信息。
2. 上下文向量(Context Vector):
- 上下文向量是输入序列的压缩表示。在传统的编码器-解码器模型中,这是一个单一的向量,但在更先进的模型如基于注意力机制的模型中,它可以是一系列向量。
- 该向量作为输入数据的摘要,解码器将使用它来生成输出。
3. 解码器(Decoder):
- 解码器接收编码器生成的上下文向量(或多个向量),逐步生成输出序列。
- 与编码器类似,解码器可以由RNNs、LSTMs、GRUs或Transformers组成。
- 解码器在生成输出序列的每一个标记时,会参考上下文向量和已生成的标记。
- 在机器翻译等任务中,解码器一次预测一个词,并将其输出反馈给自身,以预测下一个词。
注意力机制(Attention Mechanism)(可选但常用):
- 在许多现代的编码器-解码器架构中,使用注意力机制使解码器在生成每个输出标记时可以关注输入序列的不同部分。
- 通过注意力机制,解码器可以访问编码器生成的整个隐藏状态序列,并在每个解码步骤中对它们进行不同的加权。