Lecture 05 · 回到 bank:本次输出属于哪个位置?

R35 · 回到 bank:本次输出属于哪个位置?

bank与money已经放进同一读取接口。回到两句bank,继续问:一次查询的结果属于谁,换一个查询位置后原输出去了哪里?

状态 b0

两句bank查到相同E[bank],但可用线索分别含money与river。比较相同起点和不同来源,准备观察输出怎样依赖上下文。

窗口网络与RNN已能组合语境;此处比较的是访问方式,并非语境第一次进入模型。

同一 E[bank],从本句读取不同线索。Shedepositedmoneyatthebank.当前 query:bankq_bankh_bank · 待读取先选位置,再展开读取Shesatonthebankoftheriver.当前 query:bankq_bankh_bank · 待读取先选位置,再展开读取

状态 b1

同句X经不同投影形成Q、K、V;bank的query读本句来源,结果写入h_bank。先只追这一行的输入和输出。

同一 E[bank],从本句读取不同线索。Shedepositedmoneyatthebank.当前 query:bank本句 K/V · 全部可读q_bank匹配 + value 汇总h_bank · 此位置输出Shesatonthebankoftheriver.当前 query:bank本句 K/V · 全部可读q_bank匹配 + value 汇总h_bank · 此位置输出

状态 b2

查询位置改成money或river,原h_bank保留,并新增各自输出。每个query都得到一行结果,整句没有在这里被池化成一个向量。

同一 E[bank],从本句读取不同线索。Shedepositedmoneyatthebank.当前 query:money本句 K/V · 全部可读q_money匹配 + value 汇总h_bank(保留)h_money · 新输出Shesatonthebankoftheriver.当前 query:river本句 K/V · 全部可读q_river匹配 + value 汇总h_bank(保留)h_river · 新输出

公式与算例详情

读取来源与输出归属

Cross-attention 的关键是来源不同。例如翻译时,目标侧表示 D 产生 $Q=DW_Q$,源编码器输出 H 产生 $K=HW_K$ 与 $V=HW_V$。目标位置查询源序列,所以输出行数由目标 query 数决定。

Self-attention 中,三组激活都由同一个输入序列 X 投影:$Q=XW_Q,K=XW_K,V=XW_V$。不同的投影参数使 Q、K、V 通常不相等。某个位置用自己的 q 去匹配所有合法 key,再得到自己的读出向量。若有 n 个 query,就得到 n 行输出;self-attention 本身不是把整句池化为一个向量。

画面并置 money 与 river 出现在 bank 周围的两句话,说明同一词在不同语境中可能需要读取不同来源。此时需求与候选来源都在本句;让每个位置各自产生 query,才得到一组属于各位置的输出。向量没有预先规定的人类语义职业,图也没有声称一个给定 head 已学会银行/河岸消歧。causal self-attention 进一步限制合法来源,但仍属于同一序列内部的读取。

参考与采用

原课页采用记录:M21 cross 到 self。页码均按PDF物理页计。

继续学习

若 bank 的输出与整句池化仍混淆,读从读取到词预测的“同一个词上的三类读取”,再按输出归属说明为 bank、money 等位置分别标出 Q 的来源与输出行。CLS 02“5 · 从逐步读取到 self-attention”承接这一转换;LAB 02 E 的多 query 计算中,核对一条 query 对应一行输出,并保留每行自己的来源分布。