Datawhale组队学习打卡-Fun-transformer-Task3Encoder

今天的内容主要是Encoder部分的具体流程,多头注意力和交叉注意力,还是会有比较多的公式来厘清每部分的输入和输出以及对应的方法。

Encoder

如第一篇所说,Encoder是Transformer的第一部分,其主要任务是将输入序列(如文本、词语或字符)编码为一个上下文丰富的表示,Encoder 的输出是 Decoder 的输入的一部分(用作 Attention 机制中的 和)。


1. Encoder的整体结构

  • 堆叠多个Encoder层:一个完整的Encoder由多层相同结构的Encoder组成(通常为6个或更多个)。每层Encoder都包括两个主要子模块:

    1. 多头自注意力机制(Multi-Head Self-Attention)
    2. 前馈神经网络(Feed-Forward Network, FFN)
  • 每层Encoder通过残差连接(Residual Connection) 和**层归一化(Layer Normalization)**来稳定训练和加速收敛。
    Datawhale组队学习打卡-Fun-transformer-Task3Encoder_第1张图片


2. Encoder每一步在干什么?

(1) 输入处理

输入

  • 输入是一个序列,例如一个句子:["I", "love", "cats"]
  • 每个单词会通过Embedding层转化为一个稠密向量表示,得到词向量矩阵 ( X ),形状为(n,dmodel)(n, d_{\text{model}})(n,dmodel)
    • nnn:序列长度(单词数)。
    • dmodeld_{\text{model}}dmodel:每个词向量的维度(如512或768)。

方法

  • 通过 Embedding 层将单词映射为稠密向量。
  • 加上 位置编码(Positional Encoding),二者组合后有了一个具有位置信息的输入。

输出

  • 一个加了位置编码的向量矩阵X′X'X,形状依然是 (n,dmodel)(n, d_{\text{model}})(n,dmodel)

(2) 多头自注意力机制(Multi-Head Self-Attention)

输入

  • 上一步的输出向量 X′X'X,即形状为 (n,dmodel)(n, d_{\text{model}})(n,dmodel) 的向量矩阵。

方法
1. 投影为查询、键、值
输入矩阵X′X'X 会通过三组可训练学习到的投影矩阵分别映射为查询(Query, QQQ)、键(Key, KKK)和值(Value, VVV),形状分别为(n,dk)(n, d_k)(n,dk)(n,dk)(n, d_k)(n,dk)(n,dv)(n, d_v)(n,dv)。也就是说,对输入做线性变换得到上一篇说的Q、K、VQ、K、VQKV

Q=X′WQ,K=X′WK,V=X′WV Q = X'W_Q, \quad K = X'W_K, \quad V = X'W_V Q=XWQ,K=XWK,V=XWV
其中 WQ,WK,WVW_Q, W_K, W_VWQ,WK,WV是可以通过训练学习到的参数矩阵。

2. 计算注意力权重
使用以下公式计算QQQKKK 的点积(即相关性),并通过 softmax 得到权重分布:

Attention(Q,K,V)=softmax(QKTdk)V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk

你可能感兴趣的:(学习,transformer,深度学习)