继续网站建设南宁网页制作招聘
总结
| 层/组件 | 输入形状 | 输出形状 | 核心功能 |
|---|---|---|---|
| Input Embedding | [B, S] | [B, S, D] | 将离散token转为连续向量 |
| Positional Encoding | [B, S, D] | [B, S, D] | 注入位置信息 |
| Encoder MHA | [B, S, D] | [B, S, D] | 计算输入序列内部的上下文关系 |
| Encoder FFN | [B, S, D] | [B, S, D] | 非线性变换,特征加工 |
| Decoder Masked MHA | [B, T, D] | [B, T, D] | 计算已生成输出序列的内部关系 |
| Decoder Cross-Attention | Q: [B, T, D]K,V: [B, S, D] | [B, T, D] | 让解码器关注编码器信息 |
| Decoder FFN | [B, T, D] | [B, T, D] | 非线性变换,特征加工 |
| Output Projection | [B, T, D] | [B, T, V] | 产生下一个词的概率分布 |
关键记忆点:
维度守恒: 除了最开始的Embedding和最后的输出层,所有核心层的输入输出维度都是
[batch_size, seq_len, d_model]。信息流:
Encoder: 不断提炼和丰富输入序列的表示。
Decoder: 不断结合已生成输出和编码器信息,预测下一个词。
在Decoder的输入形状 [B, T, D] 中:
T 指的是目标序列(Target Sequence)在当前解码步骤时的长度。它的具体含义取决于模型是处于训练模式还是推理模式,这是理解Decoder工作的关键。
1. 训练阶段 (Training) 的 T
在训练时,我们使用的是教师强制(Teacher Forcing) 策略。
注:教师强制策略就是decoder阶段的输入使用训练集的真实的目标序列。
T: 就是完整的目标序列(或标签序列)的长度。例如,在机器翻译中,输入英文“I love you”,目标输出是中文“我爱你”。那么这里的
T就是 3(三个中文字符)。
工作流程:
我们将整个目标序列(例如,“我爱你”的token ID)一次性输入给Decoder。
Decoder内部的掩码自注意力机制会确保每个位置(第
i个token)只能看到它自己以及它之前的所有位置(第1到i-1个token),而无法看到未来的信息。模型的任务是并行地预测出序列的下一个token。
根据输入
<SOS> 我,预测下一个词应该是“爱”。根据输入
<SOS> 我 爱,预测下一个词应该是“你”。根据输入
<SOS> 我 爱 你,预测下一个词应该是<EOS>(结束符)。
2. 推理/生成阶段 (Inference/Generation) 的 T
在推理时,我们没有真实的目标序列,需要模型自回归(Autoregressive) 地生成,即一个一个token地往外蹦。
T: 指的是到当前生成步骤为止,已生成的序列长度。这是一个可变的数字,会随着生成的进行而不断增加(T = 1 -> 2 -> 3 -> ...)。工作流程:
起始: 第一步,输入通常只是一个开始符
<SOS>(形状是[B, 1, D],即T=1)。模型输出第一个词的概率分布,我们选择概率最高的词(比如“我”)。循环:
第二步,我们将
<SOS>和第一步生成的“我” 拼接起来,作为新的输入(形状是[B, 2, D],即T=2)。模型输出下一个词的概率分布,选出“爱”。第三步,输入是
<SOS> 我 爱([B, 3, D],T=3),输出“你”。第四步,输入是
<SOS> 我 爱 你([B, 4, D],T=4),输出<EOS>,生成结束。
推理时的特点:
串行处理: 生成过程是循环的、串行的,因此比训练慢得多。
T是动态增长的: 从1开始,每生成一个token,T就加1,直到遇到<EOS>或达到最大长度限制。
