G4.0 7 分鐘閱讀 2026年10月

G4.0 每個點都要讀同一份摘要嗎?

本篇重用1 篇

同一套規則,一定要給出同一份摘要嗎?

在 G3.3,PointNet 把同一份 global feature zz 送回每個點,讓它結合自己的資訊與整體形狀。現在我們想換一種讀取方式:判斷椅腳時,多參考其他支撐點;判斷椅背時,多參考上方那一片。

能不能直接讓每個點依自己的內容,決定要多參考誰,同時仍不依賴名單排列?

想像在旅行群組裡問「附近有什麼晚餐?」與「明天怎麼去機場?」。同一群人,餐廳與交通的資訊卻有不同參考價值。把名單換個順序,不應讓同一個人的建議突然變得不重要。

在 G3.2,線性層對不同點的影響共用同一組權重。這裡我們不再把權重固定成常數,而是讓它從內容算出來。共享的是計算權重的規則,不是每次算出的權重都相同。

權重可以改變,但要跟著同一對點搬動

用 HH 記整份 feature 表,vj=ν(hj)v_j=\nu(h_j) 是點 jj 提供的內容;所有點先用同一個 ν\nu 處理。想做的更新是

yi=∑jAij(H)vj.y_i=\sum_j A_{ij}(H)v_j.

AijA_{ij} 表示點 ii 這次多參考點 jj。名單重排成 H′=PHH'=PH 後,新第 ii 個詢問者是原本的 π(i)\pi(i),被參考者也換了編號。因此我們要求權重本身滿足

A(PH)ij=A(H)π(i),π(j),A(PH)=PA(H)P⊤.A(PH)_{ij}=A(H)_{\pi(i),\pi(j)}, \qquad A(PH)=PA(H)P^\top.

不是權重表原封不動,而是同一對人的參考關係搬到新格子。Values 也跟著變成 PVPV,兩者對齊後,輸出才會跟同一個詢問者搬動。

為了把權重讀成「參考比例」,我們另外選擇 Aij≥0A_{ij}\geq0、∑jAij=1\sum_jA_{ij}=1。這是加權摘要的設計,不是 permutation equivariance 自己要求權重一定非負。

先用同一套比較規則,再分配比例

同樣兩份內容,不能只因它們從第 2,52,5 列搬到第 4,14,1 列,就換一種比較方式。我們先選 pairwise score:每對點都用同一個函數 ss,

Sij=s(hi,hj).S_{ij}=s(h_i,h_j).

重新排列後,Sij′=s(hπ(i),hπ(j))=Sπ(i),π(j)S'_{ij}=s(h_{\pi(i)},h_{\pi(j)})=S_{\pi(i),\pi(j)},所以分數表已經照同一對點搬動。但分數可能為負,也不一定加總為一,還不能直接當比例。

可以先用同一個正值函數 ω\omega 把分數轉成正數,再對固定詢問者的整列正規化:

Aij=ω(Sij)∑ℓ=1nω(Siℓ),ω(r)>0.A_{ij}=\frac{\omega(S_{ij})}{\sum_{\ell=1}^n\omega(S_{i\ell})}, \qquad \omega(r)>0.

換排列只會換掉分母的加總順序,參考比例仍屬於同一對人。若選 ω(r)=er\omega(r)=e^r,這個操作就是 row-wise softmax。Shared pairwise score 與這種正規化,給出一種符合前面要求的內容加權方式;它們不是所有 equivariant layers 的唯一形式。

要怎麼比較內容?先分清三種角色

回到旅行群組,我們需要三份資訊:我現在想問什麼、對方有什麼可供比對的資訊、真正要讀取的內容。模型可以把它們分別編成 query、key、value。

一個簡單的實現,是讓各點都用相同的三組 linear maps:

Q=HWQ,K=HWK,V=HWV.Q=HW_Q,\qquad K=HW_K,\qquad V=HW_V.

H∈Rn×dH\in\mathbb R^{n\times d};Q,K∈Rn×dkQ,K\in\mathbb R^{n\times d_k},V∈Rn×dvV\in\mathbb R^{n\times d_v}。第 ii 列 qiq_i 是 query,第 jj 列 kjk_j 是供比較的 key,vjv_j 是被加權讀取的 value。前面的 ν\nu,在這裡選成共享的 linear map WVW_V。

現在還差一個比較函數。Vaswani 等人 [1] 選擇 scaled dot product:

Sij=qi⊤kjdk,S=QK⊤dk.S_{ij}=\frac{q_i^\top k_j}{\sqrt{d_k}}, \qquad S=\frac{QK^\top}{\sqrt{d_k}}.

它比較的是內容,不是列號;dot product 也方便把全部配對寫成一次矩陣乘法。再選剛才的 softmax,得到

Y=AV=softmax⁡row(QK⊤dk)V.Y=AV=\operatorname{softmax}_{\mathrm{row}} \left(\frac{QK^\top}{\sqrt{d_k}}\right)V.

這就是 scaled dot-product attention。三份資訊都來自 HH,所以稱為 self-attention;queries 若來自另一份資料,則是 cross-attention。這裡先處理同一批點。

三個對象,真的算一次

考慮 dk=1d_k=1。某個 query 與三個 keys 比較後,分數是 (0,log⁡2,0)(0,\log2,0),三個 values 是 (10,20,40)(10,20,40)。Exponentials 是 (1,2,1)(1,2,1),所以

(Ai1,Ai2,Ai3)=(14,12,14),yi=14(10)+12(20)+14(40)=22.5.(A_{i1},A_{i2},A_{i3})=\left(\frac14,\frac12,\frac14\right), \qquad y_i=\frac14(10)+\frac12(20)+\frac14(40)=22.5.

第二個對象被參考得最多,但輸出仍混合了三份內容。換一個 query,分數會改,它收到的摘要也會改。

補充為什麼除以 √dₖ?

作為尺度的說明,若 qq、kk 各分量彼此獨立、平均為零、variance 為一,q⊤k=∑rqrkrq^\top k=\sum_r q_rk_r 的 variance 是 dkd_k。除以 dk\sqrt{d_k} 後才是同一個量級,避免維度變大時分數容易把 softmax 推得過度尖銳。這是原論文的尺度理由,不是說訓練後 features 必然符合這些獨立假設。

補充Symmetry 並不唯一決定 Transformer

排列要求限制的是運算如何隨重排改變。許多 pairwise scoring functions 都可能符合;dot product、softmax 與 head 數量仍是設計選擇。Vaswani 等人 [1] 使用這個運算建立 Transformer,Lee 等人 [2] 則將 attention 用於 Set Transformer;我們是在構造一種可行方法,不是說 symmetry 只容許它。

Query 比較 keys 產生分數,row-wise softmax 產生權重,再讀取 values。
Query 比較 keys 產生分數,row-wise softmax 產生權重,再讀取 values。

課堂提問

點 ii 很參考點 jj,是否表示點 jj 也同樣參考點 ii?

先想一想,再展開看整理後的答案

不一定。qi⊤kjq_i^\top k_j 與 qj⊤kiq_j^\top k_i 一般不同;即使分數碰巧對稱,每列的 softmax 分母也可能不同。詢問需求與提供的資訊不是同一種角色。

動手看一次

切換詢問者與溫度,對照 heatmap 的一列與加權輸出。Demo 使用固定的 projection,展示這條式子如何計算;它不是訓練好的語言模型。

快速回顧一下

想一想哪個量最後被加權相加?

想一想Softmax 在這裡沿哪個方向算?

想一想排列等變要求是否唯一決定 dot product 與 softmax?

參考文獻

  1. Vaswani 等人(2017),Attention Is All You Need
  2. Lee 等人(2019),Set Transformer