論文筆記:Causal Attention for Vision-Language Tasks


論文筆記:Causal Attention for Vision-Language Tasks

Paper: Causal Attention for Vision-Language Tasks, CVPR 2021

Code: https://github.com/yangxuntu/lxmertcatt

概述

本文的主要工作就是利用因果理論對 attention 機制進行建模,然后從因果的角度分析了目前 attention 機制存在的問題,同時利用因果理論中的一些工具來解決。

因果模型的最大好處是它能解決數據分布不一致的問題,即訓練集和測試集分布不一致,這對於傳統的機器學習模型是很難克服的(通常得對采樣特殊處理或者數據增強之類的),因果模型提供了一套比較好的方法去解決這樣的問題(當然前提是你得先能構建出因果圖)。

最近看了挺多張含望老師他們組的工作,見https://mreallab.github.io/,基本上都是針對cv領域的各種數據分布帶來 bias 的問題,建立了各種各樣的因果圖進行分析並解決,個人覺得挺有意思的,所以最近想嘗試入一下坑。

Try to accomplish

Attention 機制現在廣泛應用在各領域和各模型之中,attention 涉及到了 Q-K-V 操作,想法是用 Q 去查找 K 中跟自己相似的成分,然后獲得新的表示,具體做法就是先用 Q 和 K 求一個相似度作為權重,然后利用相似度對 V 進行加權獲得一個新的表示,這個新的表示就融合了 Q 和 K 的相似度信息。

論文里用 image caption 舉例說明了 vision-language 領域里兩種使用 attention 的方式,如下圖所示:

image

主要用到了兩種 attention 模塊,一種是 self-attention,另一種是 top-down attention。輸入 X 包含了句子特征以及圖像特征(RoI 特征),由於Q 與 K、V 相同,經過 self-attention 得到的新的特征表示,蘊含了圖像特征之間的關聯,例如上圖中新的特征可能學到了人與馬之間的關系。第二步就是 top-attention 模塊,這里把 Q 換成了句子特征,當用 Q 與 K 求權重的時候,其實就是在求圖像特征中哪些成分與句子特征更相關,例如根據“man”可能就會認為人所在的區域的圖像特征權重更大,然后再用這個權重對圖像特征加權后,所得到的新特征就是與句子相關的視覺特征。最后我們根據這個句子相關的視覺特征來做預測效果就會更好,因為它融入了兩個模態相似度的信息。

那么這里面存在什么問題呢?

image

比如上面最左邊的圖,問題中關鍵字是“What sport”、“on screen”,但經過訓練后的 attention 卻把注意力放在了人身上(紅色框),即提取到的句子相關的視覺特征是那兩個人的區域,最后得到了錯誤的答案“Dancing”,而我們希望的是模型能夠將注意力放在圖像的屏幕區域,是什么導致了錯誤的 attention 呢?

作者認為是在訓練集中,“Sport+Man”的出現次數遠遠高於“Sport+Screen”的次數,這樣的偏倚讓 attenion 學習的時候,會把“Sport”和人所在區域的圖像特征聯系起來,認為它們二者具有高相關性。但如果在測試集中,“Sport”和人所在區域的圖像特征並沒有這么高的相關性時(即訓練集和測試集的分布不一致),那么在測試集中預測的時候帶上這樣的偏倚,很可能就會做出錯誤的預測。

Key element

因果圖

如上面分析,數據集帶來了 bias,從而產生了一些虛假的相關性(“Sport”和人圖像特征),而建模和消除虛假相關性正是因果理論擅長的事,現在來看看作者是怎么對整個 vision-language 進行因果建模的,當然這是作者自己的想法,因果圖並不是唯一確定的東西。

image

首先如第一張圖所示,X 表示輸入的數據,即原始的句子以及圖像特征,Z 代表了句子相關的圖像知識,X 和 Z 之間就存在着一個 X->Z 的因果關系,因為 Z 是 X 通過 attention 機制生成的嘛。然后利用 Z 去對最終結果 Y 做預測,顯然這里也存在着 Z->Y,所以第一張圖說明了從 X->Z->Y 的一條因果路徑,即 X 通過 attention 機制做出的預測,這也是本文的重點研究目標。

如果只有這一條路徑顯然就不存在虛假的相關性,那么下一步作者就對為什么會產生虛假相關性這一點進行了建模,如下圖所示:

image

這里 C 表示常識,C->X 表明視覺數據或者特征本質上是由常識生成的,例如第一張圖中人騎馬的圖可以認為是常識“人可以騎馬”生成的。M 表示 {person, horse} 的 object 集,它也是從圖像中提取出來的(例如使用 Faster R-CNN),而它本身的值域也是由常識 C 決定的,最后對詞的預測是根據 object 集做出的預測,所以是 M->Y。

從因果角度看 Attention

有了因果圖后,首先先從因果角度看下 attention 機制,即 X->Z->Y 這條因果路徑,傳統的模型是基於相關性

\[\begin{matrix} P(Y|X)= \underbrace{\sum_z P(Z=z|X)} P(Y|Z=z) \\ IS-Sampling \end{matrix} \]

這里是只考慮 X->Z->Y 因果圖下的公式,還是比較直觀的,P(Y|Z=z)表示知識對 Y 的預測,P(Z=z|X)表示根據 X 來選擇相關的知識,不同的知識重要程度不同。按照我的理解,z 就是 attention 機制里的 K 和 V,P(Z=z|X) 其實就是 Q 和 K 求到的權重 \(\alpha\)

但公式里是根據這個 P(Z=z|X) 對每個 z 對 Y 的預測結果 P(Y|Z=z) 求期望,也就是 IS-Sampling 操作,而 attention 是先根據 \(\alpha\) 對 z 求了個期望,用這個期望的 z 再去做預測。這個細微的區別我看了幾遍論文才看出來,按照作者的意思這兩個是等價的,而且由於 attention 是先對輸入求了期望,然后光把這個期望值丟進網絡 forward 一邊,肯定要比把所有輸入全部 forward 然后在期望代價要小得多。

論文第 7 部分的公式 (19) 有類似的推導,即公式 (19) 的最后一行,本來按照前面的推導求期望應該停留在 g 外面,一開始不知道為啥作者的推導直接塞到函數的輸入里了,后來我覺得應該是反正還不知道擬合結果怎樣,那不如就先對輸入求個期望,然后對期望 forward 之后的結果,讓它和這兩個操作反過來(先 forward 再期望)的結果一樣不就行了。

總之,attention 的 Q-K-V 操作可以和這個條件概率公式對應起來了。

消除偏倚

正如前面構建的因果圖,如果直接擬合 P(Y|X) 會帶來 bias,bias 產生的原因是 C 這個 confounder,即 X<-C->M->Y 這條非因果路徑,由於我們又沒有 C 的數據,所以 back-door 是別想了。而我們想求的是 X->Z->Y 這條因果路徑事實上也不需要 C 的數據。首先看 X->Z,X 和 Z 之間唯一能讓信息流動的就只有這一條,別的路徑統統被 M->Y<-Z 給對撞沒了,所以 X 和 Z 之間沒有混雜。

關鍵是 Z 和 Y 之間存在混雜,不過幸運地是這個混雜可以通過對 X 進行 adjust 給消除掉,而 X 的數據是我們有的,所以接下來就簡單了,如下進行 back-door (關於 back-door 可以參考下別人的講解的,簡單來說就是分情況討論,在不同的 X 下,P(Y|X=x,Z) 是該情況下 Z 對 Y 的因果效應,那么根據 X 的不同情況求個平均即可):

\[\begin{matrix} P(Y|do(Z))= \underbrace{\sum_{x'} P(X=x')} P(Y|X=x',Z) \\ CS-Sampling \end{matrix} \]

CS-Sampling跟上面的IS-Sampling一樣也是求期望的操作,區別在於前者是來自於不同的樣本,后者僅來自於當前樣本。同時為了和 do(X) 里的 X 區分開,這里換成 \(x'\)。在后面會看到作者也和 attention 里的做法類似,直接把 CS-Sampling 丟給輸入 Z 了。

有了 X 對 Z 因果以及 Z 到 Y 的因果,那么自然就能得到 X 到 Y 的因果(通過 Z)。結合兩個公式,即把 P(Y|X) 展開式里的 P(Y|Z) 替換為 P(Y|do(X)),得到

\[\begin{matrix} P(Y|do(X))= & \underbrace{\sum_z P(Z=z|X)} & \underbrace{\sum_{x'} P(X=x')} & P(Y|X=x',Z) \\ & IS-Sampling & CS-Sampling & \end{matrix} \]

即去偏倚后的 attention 比原來多了一個求期望的步驟。

IS-ATT 和 CS-ATT

本論文核心就是要實現上面這個 \(P(Y|do(X))\),首先我們先構造一個函數 \(g(\cdot)\) 來擬合 \(P(Y|Z,X)\),為了表示分布在 \(g\) 外面套一個 softmax,如下

\[P(Y|Z,X)= Softmax [g(Z,X)] \]

最終結果 \(P(Y|do(X))\) 就是 \(P(Y|Z,X)\) 計算了兩次期望(IS-Sampling 以及 CS-Sampling),然后如前面所說,為了減少數據 forward 次數,直接把這兩個求期望塞到最原始的輸入那里去做(具體推導可以見論文第 7 部分),總之這里直接放結果

\[P(Y|do(X))\approx Softmax[g(\boldsymbol{\hat{Z}}, \boldsymbol{\hat{X}})], \\ IS-Sampling: \boldsymbol{\hat{Z}}=\sum_z P(Z=z|h(X))z, \\ CS-Sampling: \boldsymbol{\hat{X}}=\sum_x P(X=x|f(X))x. \]

依據這個推導,作者提出了兩個 attention,一個就對應了原來的 attention,即 IS-ATT,另一個就是 CS-ATT,如下圖

image

未完

碎碎念

因為本論文使用的是 front-door adjustment,所以只要再找一個 confounder,且這個 confounder 不會有一條到 Z 的因果路徑都能使用 front-door,我比較困惑的是作者對虛假相關性這部分建模的時候引入了又一條 X 到 Y 的因果路徑,即 X->M->Y,這樣就會導致實際上 P(Y|do(X)) 計算的其實是有這條路徑的信息在里面的,而 X->M 又被 C 給 confound 了,所以這應該沒法用 front-door 才對。

但作者依然對 X->Z->Y 這條路徑用了 front-door 的公式,事實上計算的就不是 P(Y|do(X)) 了,而僅僅是 X 通過 Z 對 Y 對因果效應。當然這也是本文的核心所在,研究純純的因為 attention 的影響,所以好像也沒啥毛病,只不過寫 P(Y|do(X)) 可能就有點小問題了,起碼在論文里給出的因果圖我覺得是有些問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM