深度学习——3种常见的Transformer位置编码【sin/cos、基于频率的二维位置编码(2D Frequency Embeddings)、RoPE】

说明:
💡💡💡本文后续更新和完善将在新账号展开,请移步新地址:
深度学习笔记——3种常见的Transformer位置编码


历史文章

机器学习

机器学习笔记——损失函数、代价函数和KL散度
机器学习笔记——特征工程、正则化、强化学习
机器学习笔记——30种常见机器学习算法简要汇总
机器学习笔记——感知机、多层感知机(MLP)、支持向量机(SVM)
机器学习笔记——KNN(K-Nearest Neighbors,K 近邻算法)
机器学习笔记——朴素贝叶斯算法
机器学习笔记——决策树
机器学习笔记——集成学习、Bagging(随机森林)、Boosting(AdaBoost、GBDT、XGBoost、LightGBM)、Stacking
机器学习笔记——Boosting中常用算法(GBDT、XGBoost、LightGBM)迭代路径
机器学习笔记——聚类算法(Kmeans、GMM-使用EM优化)
机器学习笔记——降维

深度学习

深度学习笔记——优化算法、激活函数
深度学习——归一化、正则化
深度学习——权重初始化、评估指标、梯度消失和梯度爆炸
深度学习笔记——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总
深度学习笔记——卷积神经网络CNN
深度学习笔记——循环神经网络RNN、LSTM、GRU、Bi-RNN
深度学习笔记——Transformer
深度学习笔记——3种常见的Transformer位置编码
深度学习笔记——GPT、BERT、T5
深度学习笔记——ViT、ViLT
深度学习笔记——DiT(Diffusion Transformer)
深度学习笔记——多模态模型CLIP、BLIP
深度学习笔记——AE、VAE
深度学习笔记——生成对抗网络GAN
深度学习笔记——模型训练工具(DeepSpeed、Accelerate)
深度学习笔记——模型压缩和优化技术(蒸馏、剪枝、量化)


Transformer中常见的编码方式

  • 自注意力机制(Self-Attention)本身不具备任何顺序或空间位置信息。
  • 为此,需要显式地将位置信息嵌入输入特征,以确保模型能够感知特征间的空间或时间关系。

正弦/余弦位置编码(Sinusoidal Positional Encoding)

在 Transformer 的原始论文(Vaswani et al., 2017)中提出的,最原始的位置编码。正弦/余弦位置编码也叫1D Frequency Embeddings,通过频率函数将每个位置嵌入到特征空间中。

公式:
P E ( p o s , 2 i ) = sin ⁡ ( p o s 1000 0 2 i d ) PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{\frac{2i}{d}}}\right) PE(pos,2i)=sin(10000d2ipos)
P E ( p o s , 2 i + 1 ) = cos ⁡ ( p o s 1000 0 2 i d ) PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{\frac{2i}{d}}}\right) PE(pos,2i+1)=cos(10000d2ipos)

  • p o s pos pos:表示输入序列的位置。
  • d d d:表示embedding维度。
  • 正弦和余弦的周期性特点可以让模型捕获相对位置信息。

说明:

  • 正弦 sin ⁡ \sin sin 被应用于所有偶数维(索引为 2 i 2i 2i);
  • 余弦 cos ⁡ \cos cos 被应用于所有奇数维(索引为 2 i + 1 2i+1 2i+1)。

这种设计的意义在于:

  1. 区分不同维度的位置信息
    • 对偶数维和奇数维分别使用不同的函数,可以让不同维度的位置信息具有不同的变化模式
    • 例如,偶数维的位置信息可能更注重某种语义,奇数维则可能补充另一种语义。
  2. 模型的平移不变性
    • 在一些任务中,特别是相对位置编码时,正弦和余弦函数的周期性可以帮助模型更容易地捕获相对距离信息。
  3. 消除对称性
    • 如果只用一种函数,比如全是 sin ⁡ \sin sin,可能导致偶数维和奇数维的输出具有对称性,降低信息的区分度

基于频率的二维位置编码(2D Frequency Embeddings)

主要针对Transformer处理二维数据(如图像)的情况。在 ViT(Vision Transformer)的标准实现中,将两个独立的 1D Frequency Embeddings 分别应用于图像的行(height)和列(width)方向,然后通过拼接(concat)或求和(add)来构造最终的 2D Frequency Embeddings

实现方式:两个 1D Frequency Embeddings 构成 2D Embeddings

给定图像的大小为 H × W H \times W H×W,编码维度为 D D D,这种 2D 编码的计算方式如下:

  1. 沿行(Height)方向生成 1D Frequency Embeddings
    对行索引 x ∈ [ 0 , H − 1 ] x \in [0, H-1] x[0,H1],生成对应的正弦和余弦位置编码:
    P E x , 2 i = sin ⁡ ( x 1000 0 2 i D ) , P E x , 2 i + 1 = cos ⁡ ( x 1000 0 2 i D ) PE_{x, 2i} = \sin\left(\frac{x}{10000^{\frac{2i}{D}}}\right), \quad PE_{x, 2i+1} = \cos\left(\frac{x}{10000^{\frac{2i}{D}}}\right) PEx,2i=sin(10000D2ix),PEx,2i+1=cos(10000D2ix)

  2. 沿列(Width)方向生成 1D Frequency Embeddings
    对列索引 y ∈ [ 0 , W − 1 ] y \in [0, W-1] y[0,W1],同样生成正弦和余弦位置编码:
    P E y , 2 i = sin ⁡ ( y 1000 0 2 i D ) , P E y , 2 i + 1 = cos ⁡ ( y 1000 0 2 i D ) PE_{y, 2i} = \sin\left(\frac{y}{10000^{\frac{2i}{D}}}\right), \quad PE_{y, 2i+1} = \cos\left(\frac{y}{10000^{\frac{2i}{D}}}\right) PEy,2i=sin(10000D2iy),PEy,2i+1=cos(10000D2iy)

  3. 最终组合:

    • 拼接:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值