← 返回首页

Token嵌入与位置编码

了解模型如何将token转换为向量表示,并添加位置信息

2什么是Token嵌入?

Token嵌入是将每个token转换为高维向量的过程。这些向量能够捕捉token的语义信息,使模型能够理解词语之间的关系。

向量值说明:

负值 (-1.0 到 -0.3)
轻微负值 (-0.3 到 0)
轻微正值 (0 到 0.3)
正值 (0.3 到 1.0)

位置编码

位置编码为每个token添加位置信息,使模型能够理解token在序列中的位置。

公式
可视化
解释
PE(pos, 2i) = sin(pos / 10000^(2i/d_model)) PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

这是Transformer模型中使用的正弦和余弦位置编码公式。其中:

  • pos 是token的位置
  • i 是维度的索引
  • d_model 是嵌入向量的维度

位置编码解决了Transformer模型中的位置感知问题。由于Transformer使用自注意力机制,它本身没有位置信息的概念。

通过添加位置编码,模型可以学习到:

  • 序列中token的相对位置
  • 不同位置之间的相对关系
  • 序列长度对语义的影响

正弦和余弦函数的周期性使得模型能够轻松地学习到相对位置关系,即使序列长度在训练和推理时不同。

引导问题

思考以下问题,加深对Token嵌入和位置编码的理解:

  1. 为什么需要将token转换为向量表示?直接使用one-hot编码有什么问题?
  2. 嵌入向量的维度如何影响模型的表达能力和计算效率?
  3. 位置编码为什么使用正弦和余弦函数,而不是简单的整数位置?
  4. 位置编码如何帮助模型理解长序列中的依赖关系?