ICCV2021 | Vision Transformer中相對位置編碼的反思與改進
前言
在計算機視覺中,相對位置編碼的有效性還沒有得到很好的研究,甚至仍然存在爭議,本文分析了相對位置編碼中的幾個關鍵因素,提出了一種新的針對2D影象的相對位置編碼方法,稱為影象RPE(IRPE)。
本文來自公眾號CV技術指南的
關注公眾號CV技術指南 ,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。
程式碼:https://github.com/microsoft/Cream/tree/main/iRPE
Background
Transformer的核心是self-attention,它能夠按順序對tokens之間的關係進行建模。然而,self-attention有一個固有的缺陷-它不能捕獲輸入tokens的順序。因此,合併位置資訊的顯式表示對於Transformer特別重要,因為模型在其他方面完全不受序列排序的影響,這對於對結構化資料進行建模是不可取的。
transformer位置表示的編碼方法主要有兩類。一個是絕對的,另一個是相對的。
絕對方法將輸入tokens的絕對位置從1編碼到最大序列長度。也就是說,每個位置都有單獨的編碼向量。然後將編碼向量與輸入Tokens組合,以將位置資訊輸入給模型。
相對位置方法對輸入tokens之間的相對距離進行編碼,並學習tokens之間的成對關係。相對位置編碼(relative position encoding, RPE)通常通過具有與self-attention模組中的 query 和 key 互動的可學習引數的查詢表來計算。這樣的方案允許模組捕獲Tokens之間非常長的依賴關係。
相對位置編碼在自然語言處理中被證明是有效的。然而,在計算機視覺中,這種效果仍然不清楚。最近很少有文獻對其進行闡述,但在Vision Transformer方面卻得出了有爭議的結論。
例如,Dosovitski等人觀察到相對位置編碼與絕對位置編碼相比沒有帶來任何增益。相反,Srinivaset等人發現相對位置編碼可以誘導明顯的增益,優於絕對位置編碼。此外,最近的工作聲稱相對位置編碼不能和絕對位置編碼一樣好用。這些工作對相對位置編碼在模型中的有效性得出了不同的結論,這促使我們重新審視和反思相對位置編碼在Vision Transformer中的應用。
另一方面,語言建模採用原始相對位置編碼,輸入資料為一維單詞序列。但對於視覺任務,輸入通常是2D影象或視訊序列,其中畫素具有高度空間結構。目前尚不清楚:從一維到二維的擴充套件是否適用於視覺模型;方向資訊在視覺任務中是否重要?
Contributions
本文首先回顧了現有的相對位置編碼方法,然後針對二維影象提出了新的編碼方法。做了以下貢獻。
1.分析了相對位置編碼中的幾個關鍵因素,包括相對方向、上下文的重要性、query、key、value和相對位置嵌入之間的互動以及計算代價。該分析對相對位置編碼有了全面的理解,併為新方法的設計提供了經驗指導。
2.提出了一種高效的相對編碼實現方法,計算成本從原始O()降低到O(nkd)(其中k<<n),適用於高解析度輸入影象,如目標檢測、語義分割等Tokens數可能非常大的場合。
3.綜合考慮效率和通用性,提出了四種新的vision transformer的相對位置編碼方法,稱為image RPE(IRPE)。這些方法很簡單,可以很容易地插入self-attention層。實驗表明,在不調整任何超引數和設定的情況下,該方法在ImageNet和COCO上分別比其原始模型DeiTS和DETR-ResNet50提高了1.5%(top-1ACC)和1.3%(MAP)。
4.實驗證明,在影象分類任務中,相對位置編碼可以代替絕對編碼。同時,絕對編碼對於目標檢測是必要的,其中畫素位置對於目標定位是重要的。
Methods
首先,為了研究編碼是否可以獨立於輸入嵌入,論文引入了兩種相對位置模式:偏置模式(Bias Mode)和上下文模式(Contextual Mode)。與傳統的裁剪函式(Clip function)不同,論文提出了一種分段函式(Piecewise function)來將相對位置對映到編碼。之後,為了研究方向性的重要性,論文設計了兩種非定向方法和兩種定向方法。
Bias Mode和Contextual Mode
以前的相對位置編碼方法都依賴於輸入嵌入。它帶來了一個問題,即編碼是否可以獨立於輸入?論文引入了相對位置編碼的偏置模式和上下文模式來研究這一問題。前者與輸入嵌入無關,後者考慮與query、key或value的互動。
用一個統一的公式來表示,即
其中b_ij是2D相對位置編碼,用來定義偏置或上下文模式。
對於偏置模式,b_ij = r_ij,其中r_ij是可學習標量,並且表示位置i和j之間的相對位置權重。
對於上下文模式,
其中r_ij是與query嵌入互動的可訓練向量。上下文模式有多個變體,這裡不一一例舉,有需要者請看論文。
Piece Index Function
在描述二維相對位置權值之前,首先引入一個多對一函式,將一個相對距離對映為有限集合中的一個整數,然後以該整數為索引,在不同的關係位置之間共享編碼。這樣的索引函式可以極大地減少長序列(例如高解析度影象)的計算成本和引數數量。
儘管在[18]中使用的裁剪函式h(X)=max(−β,min(β,x))也降低了成本,但是將相對距離大於β的位置分配給相同的編碼。這種方法不可避免地遺漏了遠端相對位置的上下文資訊。
論文引入了一個分段函式g(x):R→{y∈Z|−β≤y≤β},用於索引到相應編碼的相對距離。該函式基於一個假設,即較近的鄰居比較遠的鄰居更重要,並通過相對距離來分配注意力。它表示為
其中[·]是舍入運算,Sign()確定數字的符號,即正輸入返回1,負輸入返回-1,反之返回0。α確定分段點,β控制輸出在[−β,β]範圍內,γ調整對數部分的曲率。
將分段函式h(X)與剪裁函式h(X)=min(−β,max(β,x))進行比較。在圖2中,裁剪函式h(X)分佈均勻的注意力,省略遠距離的位置,但分段函式g(x)根據相對距離分佈不同的注意力水平。作者認為應該保留遠端位置的潛在資訊,特別是對於高解析度影象或需要遠端特徵依賴的任務,因此選擇g(X)來構造對映方法。
2D相對位置計算
1.歐氏距離方法(Euclidean Method):計算兩個相對位置的歐氏距離,將距離通過一個可學習的偏置標量或上下文向量對映到相應的編碼。
2.量化方法(Quantization Method ):在上述歐氏距離方法中,較近的兩個相對距離不同的鄰居可以對映到同一個索引中,例如二維相對位置(1,0)和(1,1)都對映到索引1中,而應該將最近的鄰居分開。因此,需要將歐式距離量化,即不同的實數對映成不同的整數。
quant(·)將一組實數{0,1,1.41,2,2.24,...}對映為一組整數{0,1,2,3,4,...}。此方法也是非定向的。
3.交叉法(Cross Method)。畫素的位置方向對影象也很重要,因此提出了有向對映方法。這種方法被稱為Cross方法,它分別在水平和垂直方向上計算編碼,然後對它們進行彙總。該方法如下給出,
其中p˜xi(i,j)和p˜yi(i,j)在偏置模式下都是可學習標量,或者在上下文模式下都是可學習向量。與SASA中的編碼類似,相同的偏移量在x軸或y軸上共享相同的編碼,但主要區別在於我們使用分段函式根據相對距離來分配注意力。
4.乘積法(Product Method)。如果一個方向上的距離相同,無論是水平距離還是垂直距離,交叉方法都會將不同的相對位置編碼到同一嵌入中。此外,交叉法帶來額外的計算開銷。為了提高效率和包含更多的方向性資訊,論文設計了乘積方法,其公式如下
一個高效的實現方法
在上下文模式中,以上所有的方法都有一個共同的部分:。
計算這個部分需要時間複雜度O(),其中n和d分別表示輸入序列的長度和特徵通道的數目。由於I(i,j)的多對一特性,集合I(i,j)的大小K通常小於vision transformer。因此,論文提供如下高效實現:
它花費O(nkd)的時間複雜度預計算所有的z_i,t,然後通過對映t=i(i,j)將zi_,t賦給那個共同表示式。賦值運算的時間複雜度為O(N^2),其代價比預計算過程小得多。因此,相對位置編碼的計算成本也從原來的 O() 降低到 O(nkd)。
Conclusion
1. 四種方法的兩種模式之間的比較。
在vision transformer中,有向方法(交叉和乘積)通常比無向方法(歐式距離和量化)表現得更好。這一現象說明了方向性對於vision transformer是很重要的,因為影象畫素具有高度的結構化和語義相關性。
無論使用哪種方法,上下文模式都實現了優於偏置模式的效能。潛在的原因可能是上下文模式改變了帶有輸入特徵的編碼,而偏置模式保持靜態。
2.相對位置編碼可以在不同頭部之間共享或不共享的結果比較。
對於偏置模式,當在頭部之間共享編碼時,準確度會顯著下降。相比之下,在上下文模式下,兩個方案之間的效能差距可以忽略不計。這兩種方法的平均TOP-1準確率都達到了80.9%。
論文推測,不同的頭部需要不同的相對位置編碼(RPE)來捕捉不同的資訊。在上下文模式下,每個頭部可以通過公式計算自己的RPE。當處於偏置模式時,共享RPE強制所有頭部對patches給予相同的關注。
3.分段函式和裁剪函式的比較
在影象分類任務中,這兩個函式之間的效能差距非常小,甚至可以忽略不計。然而,在目標檢測任務中,裁剪函式比分段函式差。其根本原因在於,當序列長度較短時,這兩個函式非常相似。分段函式是有效的,特別是當序列大小遠遠大於buckets的數量時。(注:作者把P_I(i,j)作為一個bucket(桶),用於儲存相對位置權重)
與分類相比,目標檢測使用解析度高得多的輸入,導致輸入序列長得多。因此,推測當輸入序列較長時,應該使用分段函式,因為它能夠將不同的注意力分配到距離相對較大的位置,而當相對距離大於β時,裁剪函式分配相同的編碼。
4.在ImageNet上與其它SOTA模型的比較
歡迎關注公眾號 CV技術指南 ,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。
在公眾號中回覆關鍵字 “入門指南“可獲取計算機視覺入門所有必備資料
其它文章