大模型基础:如何理解RoPE“高频编码短距离差异、低频编码长距离趋势”

该文章已生成可运行项目,

在 RoPE 中:

  • 每个 token 位置(pos) 都会被映射成一个 d 维的位置编码向量
  • 这个向量的每一维都对应一个不同的旋转频率
  • 维度索引 i 越小 → 对应的频率越高 → 变化越快
  • 维度索引 i 越大 → 对应的频率越低 → 变化越慢

所以:
👉 所有位置(无论是 pos=1、pos=100 还是 pos=10000)都会使用从高到低的所有频率维度


🧮 数学回顾:RoPE 的角度是怎么算的?

对于第 iii 个维度(通常是偶数维),其对应的角频率为:

θi=1100002i/d \theta_i = \frac{1}{10000^{2i/d}} θi=100002i/d1

然后该维度上的旋转角度为:

θi×pos \theta_i \times \text{pos} θi×pos

比如:

  • i=0i=0i=0(第一个维度):θ0=1\theta_0 = 1θ0=1 → 角度 = 1×pos1 \times \text{pos}1×pos
  • i=64i=64i=64(假设 d=128):θ64≈1/100001=10−4\theta_{64} \approx 1/10000^{1} = 10^{-4}θ641/100001=104 → 角度 = 0.0001×pos0.0001 \times \text{pos}0.0001×pos

所以:

  • 对于 pos=100:
    • 第 0 维的角度 = 100100100
    • 第 64 维的角度 = 0.010.010.01

➡️ 前面维度(低 i)变化剧烈(高频),后面维度(高 i)变化缓慢(低频)


📊 举个具体例子对比:pos=1 vs pos=2 vs pos=1000

我们来看两个维度的情况:

✅ 高频维度(i=0, θ0=1\theta_0 = 1θ0=1

pos角度 θ⋅pos\theta \cdot posθposcos(角度)
11 rad ≈ 57°~0.54
22 rad ≈ 114°~-0.42
33 rad ≈ 172°~-0.99

➡️ 相邻位置之间变化非常大 → 能很好地区分 pos=1 和 pos=2

✅ 这就是“高频编码短距离差异


✅ 低频维度(i=64, θ64=10−4\theta_{64} = 10^{-4}θ64=104

pos角度 θ⋅pos\theta \cdot posθposcos(角度)
10.0001 rad~1.0000
20.0002 rad~1.0000
10000.1 rad ≈ 5.7°~0.9950
100001 rad ≈ 57°~0.5400

➡️ 即使 pos 从 1 到 1000,cos 几乎没变;只有到了很远才开始变化

✅ 这就是“低频编码长距离趋势”——它不关心你是第 1 个还是第 2 个,但它知道:

  • 如果角度还是接近 1 → “我在开头”
  • 如果角度变成 0.5 → “我已经走到一万了”

📊 可视化

下面是一段 Python 可视化代码,它会画出 RoPE 中不同维度(不同频率)的 cos(θ × pos) 随位置 pos 变化的曲线,让你直观看到:

  • 前面的维度(低 i):高频 → 波动剧烈 ✅ 编码“短距离差异”
  • 后面的维度(高 i):低频 → 变化缓慢 ✅ 编码“长距离趋势”
import numpy as np
import matplotlib.pyplot as plt

# 模型配置参数
d = 128                    # 隐藏层维度(如 Qwen3 的 d_model)
base = 10000               # RoPE 的 base(标准设置)
max_pos = 512              # 最大可视化位置范围

# 生成所有维度的 θ_i = 1 / (base^(2i/d))
i = np.arange(0, d // 2)   # i 从 0 到 63(共64个频率)
theta = 1.0 / (base ** (2 * i / d))  # 形状: [64,]

# 生成位置序列
positions = np.arange(0, max_pos)  # pos: 0 ~ 511

# 计算每个维度在每个位置上的角度:θ_i * pos
# 结果 shape: [num_dims, num_positions] = [64, 512]
angles = np.outer(theta, positions)  # 等价于 theta[:, None] * positions[None, :]

# 计算 cos 编码(用于 RoPE 的一部分)
cos_encodings = np.cos(angles)

# === 开始绘图 ===
fig, axes = plt.subplots(2, 3, figsize=(15, 8))
axes = axes.flatten()

# 想要看哪几个维度?我们选前、中、后各两个代表高频、中频、低频
dim_indices = [0, 1, 31, 32, 62, 63]  # 前、中、后段各选两个
titles = [
    f"Dim {i[0]} (very high freq)",
    f"Dim {i[1]} (high freq)",
    f"Dim {i[31]} (mid-high freq)",
    f"Dim {i[32]} (mid-low freq)",
    f"Dim {i[62]} (low freq)",
    f"Dim {i[63]} (very low freq)"
]

for idx, dim in enumerate(dim_indices):
    ax = axes[idx]
    ax.plot(positions, cos_encodings[dim], lw=2, label=f'cos(θ_{dim} × pos)')
    ax.set_title(titles[idx])
    ax.set_xlabel("Position")
    ax.set_ylabel("Value")
    ax.grid(True, alpha=0.3)
    ax.legend()

plt.tight_layout()
plt.suptitle(f"RoPE Position Encoding Across Dimensions (d={d}, base={base})", 
             fontsize=16, y=1.02)
plt.show()

输出图像说明

  • 运行这段代码后你会看到 6 个子图,分别展示不同维度的 cos(θ×pos) 曲线:
    dim=0,1:波动极快 → 很小的位置变化就导致值大幅跳变 → 区分相邻 token
    dim=31,32:中等波动 → 在几十到上百位置内有变化 → 捕捉局部结构
    dim=62,63:几乎是一条平缓下降曲线 → 要到几百甚至上千才明显变 → 表示“我在远端”
    在这里插入图片描述

✅ 总结:

✔️ “高频编码短距离差异” 是说:位置编码向量的前半部分(低 i 维度)随位置快速变化,能敏锐感知相邻 token 的差别
✔️ “低频编码长距离趋势” 是说:后半部分(高 i 维度)随位置缓慢变化,帮助模型感知‘我现在是在开头、中间还是结尾’这种全局信息

本文章已经生成可运行项目
内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JoannaJuanCV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值