代码修改版

注意力与多头 · 代码修改

直接改 Q、K、V 与缩放因子,运行后看清注意力权重与混合结果如何逐行算出来。

目标实验目标

把论文里那一行 Attention(Q,K,V) = softmax(QKᵀ/√d_k)V 拆成可运行的代码。改黄色数字,看权重表和输出向量怎么变。

重点把 scale 从 √d_k 改成 1(不降温),观察 softmax 后的分布是不是变得「非黑即白」。

代码可编辑源码

虚线处可直接点击修改。

attention.js — 点击黄色数字可编辑

输入查询向量

K / V 固定为:小猫 k=[1.2,0.0] v=[1.0,0.0];累 k=[0.0,1.0] v=[0.0,1.0];它 k=[0.1,0.0] v=[0.5,0.5]

结果注意力权重与输出

等待运行…

监视变量监视

q·k(小猫) = -
q·k(累) = -
q·k(它) = -
缩放因子 = -
权重(小猫) = -
输出向量 = -

日志执行日志

点击「运行代码」开始执行…

挑战实验课挑战

挑战 1 · 关掉降温
把 scale 改成 1,权重(小猫) 从 70% 变成多少?分布为什么更极端?
挑战 2 · 反向查询
把 q 改成 [0.2, 1.5](像「累」的查询),权重最大项会变成谁?
挑战 3 · 输出落在哪
q=[2.0,0.2] 时输出是 [0.78, 0.22],说明「它」更像什么?改成 q=[0.2,1.5] 呢?
挑战 4 · 加一个新词
想让「马路」也参与注意力,代码里 K、V 两张表各要加一行什么?