学习笔记_位置编码
给输入序列注入“位置信息”,让模型知道“每个元素在什么位置”。
位置编码的两大类型
| 类型 | 特点 | 代表 |
|---|---|---|
| **固定位置编码 **(Fixed) | 位置编码是预定义的,不可学习 | 原始 Transformer 的正弦编码 |
| **可学习位置编码 **(Learned) | 位置编码是可训练的参数,就是字典啦,tokenizer把文本变成数字编码之后做的 | BERT、ViT 的 position embedding |
正弦位置编码(Sinusoidal Positional Encoding)
这是 原始 Transformer 论文(“Attention is All You Need”, 2017)中提出的方法。
核心思想:使用正弦和余弦函数生成位置编码。编码是确定性的、固定的,不参与训练。可以表示任意长度的位置,外推性好
1 | import torch |
编码公式
可学习位置编码(Learned Positional Embedding)
这是 BERT、ViT、GPT 等模型 采用的方法。位置编码是可学习的参数矩阵。每个位置对应一个向量(类似词嵌入)。在大多数任务上优于正弦编码,超出训练长度时性能急剧下降
1 | class LearnedPositionalEncoding(nn.Module): |
旋转位置编码 **(Rotary Position Embedding, RoPE)
将位置信息编码为旋转矩阵,通过旋转向量来体现位置差异。代表:LLaMA、ChatGLM、PaLM
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 This is a 部落格 of outbreak_sen!



