transformer最终词向量公式
时间: 2024-12-27 20:19:20 浏览: 2
### Transformer 模型中最终词向量计算
在 Transformer 模型中,嵌入层负责将输入的 token 转换为高维向量表示。具体来说,在初始阶段,每个 token 都会被映射成一个固定维度 d 的向量,这一过程通常依赖于预先定义好的词汇表和相应的嵌入矩阵 W_emb ∈ R^(V×d),其中 V 表示词汇大小。
当涉及到最终输出时,经过多层编码器或解码器处理后的隐藏状态 h 将被传递给线性变换层以及 Softmax 函数来预测下一个可能产生的 token[^5]。此过程中涉及的关键公式如下:
设 H 代表最后一层得到的隐藏状态矩阵,则有:
\[ z = \text{Linear}(H)W_{out} + b \]
这里 Linear() 表示线性投影操作;\( W_{out} \in R^{d×V} \) 和偏置项 \( b \in R^V \) 构成了全连接层参数;z 则是未经归一化的 logits 向量。
为了获得实际的概率分布 p,还需要应用 Softmax 函数对上述 logit 进行规范化处理:
\[ p_i=\frac{\exp(z_i)}{\sum_j\exp(z_j)}, i=1,2,...,|V| \]
这一步骤确保了所有候选词语的选择概率总和为 1,并且可以通过 argmax(p) 来选取具有最大可能性的那个 token 作为当前时刻的最佳输出。
```python
import torch.nn.functional as F
def final_word_vector(hidden_state, output_weight, bias):
# hidden_state: (batch_size, seq_len, dim)
# output_weight: (vocab_size, dim)
# bias: (vocab_size,)
logits = F.linear(hidden_state, output_weight.t(), bias=bias) # (batch_size, seq_len, vocab_size)
probabilities = F.softmax(logits, dim=-1)
return probabilities
```
阅读全文