注意力圖(attention map)
注意力圖是一張「Transformer 在看哪裡」的圖。在每個注意力層裡,每個詞元都對其他每個詞元指派一個權重——它從每一個那裡汲取多少。對影像而言這些權重是空間性的,所以你可以把它們疊回原圖、做成熱圖:詞元注意得強的地方亮、忽略的地方暗。最常見的版本是問:對類別詞元而言,它對每個圖塊付出多少注意力,再把它顯示成一張顯著性覆蓋圖,揭露模型做決定時倚賴了哪些區域。
形式上,注意力權重就是 softmax(QKᵀ/√d_k) 矩陣的各列——對每個查詢詞元,是一個對所有鍵詞元的機率分布。挑一個查詢(常是類別詞元),把它的 N 個權重重塑回圖塊格、再上採樣到影像尺寸,就得到某一個頭的圖;你可以對各頭取平均、檢視個別頭、或跨層比較。因為這個矩陣是每張影像在執行時即時算出的,注意力圖是一扇免費、內建、能窺探模型的窗,而卷積網路原生並不提供。
它們確實有用,但它們不是忠實的解釋,這正是核心陷阱。原始注意力權重忽略了把資訊繞過注意力的殘差連接、忽略了決定實際被搬運內容的值向量、也忽略了 MLP——而且它們跨層以非線性方式複合,所以單一層的圖可能誤導人。注意力滾動(attention rollout,跨層相乘注意力矩陣並把殘差計入)與以梯度為基礎的歸因,能給出較可信的圖。教訓是:高注意力權重意味著「這個詞元在此處被加重」,未必意味著「這個區域造成了輸出」。
即便如此,注意力圖仍帶來了驚人的發現。在 DINO 裡,一個以自監督訓練的 ViT 會自發地產生類別詞元的注意力圖,乾淨地把主要物體分割出來,而完全沒有用到任何分割標註——這是模型學到了物體結構的鮮明證據。這類結果讓注意力圖成了健全性檢查、除錯假相關、以及溝通視覺 Transformer 學到了什麼的標準工具。
別把注意力圖等同於因果解釋。模型可以注意某區域卻仍然不用它,也可以一邊注意別處、一邊透過殘差/值的路徑使用某區域。為了問責或除錯,應以擾動測試或梯度歸因來佐證注意力圖。