【深度学习】Transformer 的常见的位置编码有哪些

莱莱  论坛元老 | 2025-2-25 00:04:31 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1026|帖子 1026|积分 3078

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Transformer 位置编码(Positional Encoding)主要用于弥补 自注意力机制(Self-Attention) 对位置信息的忽略,常见的方案有以下几种:

1. 绝对位置编码(Absolute Positional Encoding)

绝对位置编码是最早在原始 Transformer 论文(《Attention Is All You Need》)中提出的方式,它在每个 token 位置参加一个固定的向量,用于表示其位置信息。
(1) 三角函数编码(Sinusoidal Positional Encoding)

公式:
                                         P                                       E                                           (                                  p                                  o                                  s                                  ,                                  2                                  i                                  )                                                 =                            sin                            ⁡                                       (                                                        p                                     o                                     s                                                           1000                                                   0                                                       2                                           i                                           /                                                           d                                              model                                                                                                )                                            PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)                     PE(pos,2i)​=sin(100002i/dmodel​pos​)
                                         P                                       E                                           (                                  p                                  o                                  s                                  ,                                  2                                  i                                  +                                  1                                  )                                                 =                            cos                            ⁡                                       (                                                        p                                     o                                     s                                                           1000                                                   0                                                       2                                           i                                           /                                                           d                                              model                                                                                                )                                            PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)                     PE(pos,2i+1)​=cos(100002i/dmodel​pos​)
其中:


  •                                         p                            o                            s                                  pos                     pos 是 token 在序列中的位置索引,
  •                                         i                                  i                     i 是 embedding 维度索引,
  •                                                    d                               model                                            d_{\text{model}}                     dmodel​ 是模型维度(如 512)。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表