一、输入序列和嵌入层
1. 输入序列
输入序列的原始形式通常是一个整数序列,每个整数代表一个单词或符号的索引。例如,形状为 \((N, L,d_{\text{in}})\) 的输入张量,其中 \(N\) 是 batch size,\(L\) 是序列长度,\(d_{\text{in}}\) 是序列元素的维度。
2. 词嵌入(Word Embedding)
通过嵌入层将每个索引映射到一个 \(d_{\text{embedding}}\) 维度的嵌入向量。这将输入序列转换为形状为 \((N, L, d_{\text{embedding}})\) 的张量。
3. 位置编码(Positional Encoding)
Transformer 模型没有卷积或循环结构,因此需要显式地添加位置信息。位置编码的形状也是 \((N, L, d_{\text{embedding}})\),并且添加到嵌入向量中,使得嵌入向量能够包含位置信息。得到的张量仍然是 \((N, L, d_{\text{embedding}})\)。
4. 线性变换或直接映射
为了将嵌入向量的维度从 \(d_{\text{embedding}}\) 转换为 \(d_{\text{model}}\),有两种常见的方法:
(1)直接设置