本篇重用1 篇
算得出權重,還要確認它沒有讀取編號
在 G4.0,我們先要求權重表跟著詢問者與被參考者重排,再用共享的比較與正規化構造 attention。現在把選好的 Q/K/V 公式逐項代入:這些運算是否真的保留了我們一開始提出的要求?
我們不只看最後的輸出,也要追蹤中間的分數與 softmax 分母,確認每個 index 仍對應同一個點。
想像圖書館重新排了書架。若書的索引與內容一起搬動,同一個問題應找到同樣的內容,只是它出現在新的位置。
先追蹤三份 features
沿用 H′=PH。因為 projection 作用在 feature 維度,而 P 作用在 rows,
Q′=PHWQ=PQ,K′=PK,V′=PV.
接著看分數表:
S′=dkQ′(K′)⊤=dkPQK⊤P⊤=PSP⊤.
左邊的 P 搬動詢問者,右邊的 P⊤ 搬動被參考者。兩邊都要換,才還是同一份「誰參考誰」的關係。
Softmax 的分母會不會改?
令重排後第 i 列來自原本第 π(i) 列,也就是 (PH)i=hπ(i)。固定詢問者後,
Aij′=∑ℓ=1nexp(Sπ(i),π(ℓ))exp(Sπ(i),π(j)).
π(ℓ) 只是把全部 keys 各走過一次,分母因此等於
∑r=1nexp(Sπ(i),r)。所以 Aij′=Aπ(i),π(j),寫成矩陣就是
A′=PAP⊤.
最後把 values 搬動的結果代入:
Y′=A′V′=PAP⊤PV=PAV=PY,
其中 P⊤P=I。這層 self-attention 的逐點輸出是 permutation-equivariant,不是所有點共用一個 invariant 答案。
如果任務只要整群點一個答案呢?
像 G3.1 一樣接對稱 pooling。例如
z(H)=i∑yi,z(PH)=i∑yπ(i)=z(H).
再用 ψ(z) 分類,就得到 permutation-invariant output。Lee 等人 [2] 的 Set Transformer 也把 equivariant encoder 與 invariant 的 attention pooling 分開設計;這裡的 sum 是最簡單可直接驗證的 readout。
補充用一個固定 query 讀集合,也能得到 invariant 摘要
令固定 query q 比較全部 keys,得到一列權重 a。重排資料時 K′=PK、V′=PV,query 不動,因此 a′=aP⊤,輸出 a′V′=aV。注意這個 query 是讀取者,不是資料集合裡一個需要被一起重排的點。這與讓所有資料點各自當 query 的 self-attention 是不同的 output action。
重排 queries 與 keys 後,分數變成 PSPᵀ,輸出則跟著點變成 PY。
課堂提問
重排後 heatmap 的數字位置改了,是否代表 attention 沒有保留 symmetry?
先想一想,再展開看整理後的答案
不代表。我們預期它變成 PAP⊤,不是原封不動的 A。先把詢問者與被參考者的編號對齊,再比較同一對點的權重。
動手看一次
按「重排名單」。Heatmap 的兩個軸都會改順序,但下方的輸出比較會按照點的身分對齊。Defect 量的是 Y(PH) 與 PY(H) 的差,不是直接比較不同點。
快速回顧一下
參考文獻
- Vaswani 等人(2017),Attention Is All You Need
- Lee 等人(2019),Set Transformer