返回课堂

完整深入材料 · 保留原页与全部停点。回到相关主讲

先写入两组“线索—内容”

本页问题

目标仍被保存,读出却可能夹杂别的内容;现在用两组向量把装置拆到能手算。

AM03/b0 · 界定key和value

Akey (1, 0)value (1, 0)Bkey (0.6, 0.8)value (0, 1)同一组二维关联 · 两个 key 都是单位向量初始 W0000key 是线索;value 是要读回的内容value 为列、key 为行 · W 的尺寸为 d_v × d_k = 2 × 2
界定key和value

我们只存两条内容。每一条都分成两部分:key是查询时拿来比较的线索,value是希望读回的内容。A和B的线索不是同一个方向,但也不是完全互不相关。这是人为设置的小例子,目的是让我们看清矩阵里发生的事情。

教师备课:指图与模拟问答

指图与推进 · 不朗读指A/B两组具体key/value,确认单位key,再指零矩阵。

AM03/b1 · 先写A

Akey (1, 0)value (1, 0)Bkey (0.6, 0.8)value (0, 1)同一组二维关联 · 两个 key 都是单位向量累加后的 W1000v_A k_Aᵀ1000写入 AW = Σᵢ vᵢ kᵢᵀvalue 为列、key 为行 · W 的尺寸为 d_v × d_k = 2 × 2
先写A

先把A写进去。这里用的规则叫外积:把value作为一列、key作为一行,相乘得到一块和W同样大小的矩阵。现在只写了A,所以只有这一格发生变化。它建立了一个关系:以后遇到A这样的线索,就沿A的内容方向输出。

进一步解释

列向量约定:$k_i\in\mathbb R^{d_k}$、$v_i\in\mathbb R^{d_v}$,所以$v_ik_i^\top\in\mathbb R^{d_v\times d_k}$。本例$d_k=d_v=2$。

教师备课:指图与模拟问答

指图与推进 · 不朗读用A的value列乘key行,指外积矩阵与写入后的W。

AM03/b2 · 追加B

Akey (1, 0)value (1, 0)Bkey (0.6, 0.8)value (0, 1)同一组二维关联 · 两个 key 都是单位向量累加后的 W100.60.8v_A k_Aᵀ1000+v_B k_Bᵀ000.60.8W = Σᵢ vᵢ kᵢᵀvalue 为列、key 为行 · W 的尺寸为 d_v × d_k = 2 × 2
追加B

再把B对应的这块矩阵加上去。注意,我们没有给A和B各放一个独立抽屉,而是把两次贡献加在同一个W里面。写入这一步很容易,继续加就行;好不好用,要等到读取时再检查。

教师备课:指图与模拟问答

指图与推进 · 不朗读把B的外积加进同一个W,指第二行0.6和0.8,保留第一行。

接下来

现在两条都写进去了,拿A的线索来读一次。

补充推导、边界与来源

目标仍被保存,读出却可能夹杂别的内容;现在用两组向量把装置拆到能手算。

W=Σᵢvᵢkᵢᵀ,W∈R^(d_v×d_k)。本例两个外积分别是[[1,0],[0,0]]、[[0,0],[0.6,0.8]]。

来源与继续阅读

Alex Wang:对应原文小节。

I02 原阅读材料。旧阅读材料保留自身的算例与记号;不要将旧三条目行向量例与本节两条目列向量例混算。

完整推导与实验口径 · 原文配套源码入口。

本页证据与条件

教学构造与机制示意;非模型实测

进入主题正文