在深度学习中,位置编码(Position Encoding, PE)是一种通过显式添加空间位置信息来增强模型理解能力的重要技术。本文将通过一个测试用例,结合公式与代码解析 基于学习的绝对位置编码 与 正弦位置编码 的工作原理。我们将从理论推导到实验测试,逐步揭示两种位置编码方式的核心逻辑及应用场景。
1. 基于学习的绝对位置编码
原理
基于学习的绝对位置编码通过定义两个可学习的嵌入层(Embedding),分别对图像的行和列位置进行编码。这种方式的灵活性在于位置嵌入能够随着数据分布的优化而调整。
核心公式: 对于图像中高度 h 和宽度 w,令行位置编码为 yi,列位置编码为 xj,则最终的二维位置编码为:
其中 d 是嵌入维度。
在实现中,列编码 xj 和行编码 yi 分别由嵌入层计算:
xj=Embedding(j), yi=Embedding(i).
最终通过扩展和拼接生成一个形状为 (B,2d,h,w)的四维位置编码张量,其中 B 是批量大小。
2. 正弦位置编码
原理
正弦位置编码通过预定义的正弦和余弦函数为每个位置生成编码,确保不同位置的嵌入具有周期性和可区分性。这种方式无须训练参数,直接利用公式生成编码。
核心公式: 对于每个像素位置 (i,j),其编码为:
,