词换了位置,模型得到位置条件了吗?
T28 · 词换了位置,模型得到位置条件了吗?
全可见内容读取尚未为词提供独立的位置输入。将给予者和接受者交换,能把词内容与位置条件的区别暴露出来。
状态 b0
九位置全可见教学算例Q=K=V=X,无位置信息。列出主句各输出行供对照。
状态 b1
实算交换我与他后的attention;输出跟着行置换,其他行保持。两句给予者和接受者不同。
状态 b2
回原九词,显示每处e(词)+p_i。位置条留在位置;词移到另一处会配到另一位置条件。
状态 b3
把我与他再次交换,p₁至p₉固定;我从e(我)+p₁变为e(我)+p₅。这里展示加入位置后的输入条件改变,不沿用无位置数值。
公式与算例详情
R72独立九位置构造:X=[[1, 0], [0, 1], [1, 1], [-1, 0], [0, -1], [0.5, 0.5], [0.5, -0.5], [1, -1], [0, 0]],Q=K=V=X,scaled dot-product除√2,全部位置可见。置换索引为 [4, 1, 2, 3, 0, 5, 6, 7, 8](零起始)。原输出Y=[[0.5645897258631304, 0.0], [0.3524881540972777, 0.33741445021046623], [0.5754729258334949, 0.36396301782304297], [0.019373792165942767, 0.0], [0.3524881540972777, -0.33741445021046623], [0.46353806482736276, 0.18329123574819875], [0.46353806482736276, -0.18329123574819875], [0.5754729258334949, -0.36396301782304297], [0.3333333333333333, 0.0]];交换后重新计算A(PX)=[[0.3524881540972777, -0.33741445021046623], [0.3524881540972777, 0.33741445021046623], [0.5754729258334949, 0.36396301782304297], [0.019373792165942767, 0.0], [0.5645897258631304, 0.0], [0.46353806482736276, 0.18329123574819875], [0.46353806482736276, -0.18329123574819875], [0.5754729258334949, -0.36396301782304297], [0.3333333333333333, 0.0]]。与PA(X)最大绝对差为 0.0。
等变是A(PX)=PA(X),不是所有行数值相同,也不是序列整体输出不变。这里用屏幕行号帮助核对,行号没有进入无位置算例。最后一态加入位置仅展示新的输入条件,没有把前两态数值冒充加位置后的结果。原始Transformer采用正弦位置编码;固定在位置的p_i使同一词迁到不同位置时的输入改变。
继续学习
让整套 Transformer 共同完成一次预测 · LAB03:F · 跟着一个 token 穿过完整 encoder block
原始来源
- https://arxiv.org/pdf/1706.03762v1:。原版本及采用边界见正文