Happy-LLM-Task04 :2.2 Encoder-Decoder
以下是关于Encoder - Decoder的笔记:
定义与背景
- Encoder - Decoder是一种在深度学习中广泛应用于序列到序列(Seq2Seq)学习任务的模型架构。其目标是将一个自然语言序列映射到另一个可能不等长的自然语言序列。
核心组件
- Encoder(编码器):负责将输入序列压缩成一个固定长度的向量,这个向量可以看作是输入序列的语义表示,也可称为“上下文向量”或“编码向量”。例如,在机器翻译中,编码器将源语言句子转换为一个包含其语义信息的向量。实现方式通常有循环神经网络(RNN)、长短时记忆网络(LSTM)、门控循环单元(GRU)或Transformer中的多头自注意力机制等。
- Decoder(解码器):将编码器产生的上下文向量解码为输出序列。它通常也使用循环神经网络来实现,在每个时间步,解码器会基于上一个时间步的输出、当前的隐藏状态和上下文向量来生成当前时间步的输出。为提高性能,常引入注意力机制,让解码器在生成每个词时能动态关注输入序列的不同部分。
工作流程
- 输入编码:输入序列先通过嵌入层转化为词向量序列,再送入编码器网络。编码器逐个处理词向量,更新隐藏状态,最终的隐藏状态作为整个序列的编码表示。
- 上下文向量生成:在RNN结构中,编码器的最终隐藏状态直接作为解码器的初始状态;若引入注意力机制,编码器所有隐藏状态会被综合考虑,形成上下文向量,为每个解码时间步提供动态的输入依赖。
- 输出解码:解码器从一个特殊起始符开始,根据编码信息(上下文向量)生成第一个输出。之后,解码器利用上一时间步的输出和隐藏状态,以及可能的注意力权重,逐步生成后续的序列元素,直到生成结束符或达到预设的最大序列长度。
应用
- 机器翻译:编码器将源语言的句子编码成上下文向量,解码器则从该向量中生成目标语言的翻译。
- 语音识别:在语音识别任务中,编码器将音频信号转换为特征表示,解码器则从这些特征中生成文本转录。
相关技术与优化
- 注意力机制:让解码器在生成输出时能动态关注输入序列的不同部分,提高模型性能和可解释性。
- 层归一化(Layer Norm):使不同层的输入分布更一致,稳定训练过程,提高模型性能,与批归一化的区别在于统计量计算方式不同。
- 残差连接:避免梯度消失,增强信息流动,提高训练效率,让高层专注于学习输入与输出间的残差。
- 前馈神经网络(FFN):用于对输入数据进行非线性变换,由两个线性层和中间的ReLU激活函数以及输出后的Dropout层组成,可防止过拟合。