1. 介紹
自從自注意力機制被引入後,變壓器(Transformers)已成為自然語言處理(NLP)任務的首選。基於自注意力的模型具有高度的並行性,並且需要的參數大幅減少,使其計算效率更高,不容易過擬合,並且更容易針對特定領域的任務進行微調。此外,變壓器相較於過去的模型(如RNN、LSTM、GRU等神經網絡架構)最大的優勢在於它能夠處理任意長度的輸入序列而不會失去上下文,這是通過自注意力機制來實現的,該機制能夠專注於輸入序列的不同部分,以及這些部分如何在不同時間與序列的其他部分互動。正因為這些特性,變壓器使得訓練超大規模的語言模型成為可能,參數超過1000億,為當前最先進的模型如生成預訓練變壓器(GPT)和雙向編碼器表示(BERT)鋪平了道路。
然而,在計算機視覺領域,卷積神經網絡(CNN)仍然主導著大多數(如果不是全部)計算機視覺任務。雖然有越來越多的研究試圖將基於自注意力的架構應用於計算機視覺任務,但很少有研究能可靠地超越CNN並展現出良好的擴展性。將變壓器架構與圖像相關任務整合的主要挑戰在於,自注意力機制的設計使其在序列長度上具有二次時間複雜度,即O(n²)。這對於NLP任務來說通常不是問題,因為每個輸入序列的標記數量相對較少(例如,一段1000字的段落只有1000個輸入標記,或者如果使用子詞單位作為標記,則可能會多一些)。然而,在計算機視覺中,輸入序列(圖像)的標記數量可以比NLP輸入序列大得多。例如,一幅相對較小的300 x 300 x 3的圖像可以輕易地擁有多達270,000個標記,並在自注意力被簡單應用時需要高達729億個參數的自注意力圖。
因此,大多數試圖使用基於自注意力的架構來執行計算機視覺任務的研究,都是通過局部應用自注意力,使用變壓器塊與CNN層結合,或僅替換CNN架構中的特定組件,同時保持整體結構;而不是僅使用純變壓器。Dr. Dosovitskiy等人在其研究“圖像值16×16個單詞:用於大規模圖像識別的變壓器”中,目的是展示確實可以通過使用基本的變壓器編碼器架構來全局應用自注意力進行圖像分類,同時需要的計算資源顯著減少,並超越了最先進的卷積神經網絡如ResNet。
2. 變壓器
變壓器是在2017年由Vaswani等人發表的論文“注意力是你所需要的一切”中引入的,這是一類革命性的神經網絡架構,改變了各種自然語言處理和機器學習任務。其架構的高層次視圖如圖1所示。

自從引入以來,變壓器已經成為許多最先進的NLP模型的基礎,包括BERT、GPT等。基本上,它們旨在處理序列數據,如文本數據,而不需要循環或卷積層。它們通過大量依賴一種稱為自注意力的機制來實現這一點。
自注意力機制是這篇論文中引入的一項關鍵創新,它允許模型捕捉給定序列中不同元素之間的關係,通過根據其他元素的影響來加權每個元素的重要性。例如,假設你想翻譯以下句子:
“這隻動物沒有過馬路,因為它太累了。”
在這句話中,“它”指的是什麼?是指馬路還是動物?對我們人類來說,這可能是一個簡單的問題。但對於一個算法來說,這可能是一個複雜的任務。然而,通過自注意力機制,變壓器模型能夠估計每個單詞相對於句子中所有其他單詞的權重,讓模型能夠在給定的句子上下文中將“它”與“動物”聯繫起來。

2.1. 自注意力機制
變壓器通過將每個元素通過編碼器(或編碼器堆疊)和解碼器(或解碼器堆疊)塊並行傳遞來轉換給定的輸入序列。每個編碼器塊包含一個自注意力塊和一個前饋神經網絡。在這裡,我們只關注變壓器編碼器塊,因為這是Dosovitskiy等人在其視覺變壓器圖像分類模型中使用的組件。
與一般的NLP應用一樣,編碼過程的第一步是將每個輸入單詞轉換為向量,使用嵌入層將我們的文本數據轉換為表示我們單詞的向量,同時保留其上下文信息。然後,我們將這些單獨的單詞嵌入向量編譯成一個矩陣X,其中每一行i表示輸入序列中每個元素i的嵌入。接著,我們為輸入序列中的每個元素創建三組向量;即鍵(Key, K)、查詢(Query, Q)和數值(Value, V)。這些集合是通過將矩陣X與相應的可訓練權重矩陣WQ、WK和WV相乘得出的。

然後,我們對K和Q進行矩陣乘法,將結果除以K的維度的平方根,然後應用softmax函數來正規化輸出並生成介於0和1之間的權重值。我們將這個中間輸出稱為注意力因子。這個因子表示序列中每個元素對當前位置(正在處理的單詞)計算注意力值的貢獻。softmax操作的想法是放大模型認為與當前位置相關的單詞,並減弱那些不相關的單詞。例如,在圖3中,輸入句子“他後來去報告馬來西亞一年”被傳入BERT編碼單元,以生成熱圖,說明每個單詞之間的上下文關係。我們可以看到,被認為在上下文中相關的單詞在其各自的單元格中產生較高的權重值,以深粉色表示,而與上下文無關的單詞則具有低權重值,以淺粉色表示。

最後,我們將注意力因子矩陣乘以數值矩陣V,以計算這一層的聚合自注意力值矩陣Z,其中Z中每一行i代表我們輸入序列中單詞i的注意力向量。這個聚合值本質上將其他單詞提供的“上下文”融入到當前正在處理的單詞中。注意力方程有時也被稱為縮放點積注意力。
2.2 多頭自注意力
在Vaswani等人的論文中,自注意力塊進一步增強了一種稱為“多頭”自注意力的機制。其想法是,模型不僅依賴單一的注意力機制,而是使用多個並行的注意力“頭”(在論文中,Vaswani等人使用了8個並行注意力層),每個注意力頭學習不同的關係,並提供對輸入序列的獨特視角。這在兩個重要方面提高了注意力層的性能:
首先,它擴展了模型在序列中專注於不同位置的能力。根據初始化和訓練過程中的多種變化,給定單詞的計算注意力值可能會被其他某些不相關的單詞或短語,甚至是該單詞本身所主導。通過計算多個注意力頭,變壓器模型有多次機會捕捉正確的上下文關係,從而對輸入中的變化和模糊性變得更加穩健。其次,由於我們的Q、K、V矩陣在所有注意力頭中都是隨機獨立初始化的,訓練過程會產生幾個Z矩陣,這使得變壓器擁有多個表示子空間。例如,一個頭可能專注於語法關係,而另一個頭可能關注語義意義。通過這樣,模型能夠捕捉數據中的更多多樣性關係。

3. 視覺變壓器
視覺變壓器(ViT)的基本創新在於,圖像可以被視為標記的序列,而不是像素的網格。在傳統的CNN中,輸入圖像是通過滑動卷積濾波器分析的重疊瓷磚,然後通過一系列卷積和池化層進行分層處理。相反,ViT將圖像視為一組不重疊的補丁,這些補丁被視為標準變壓器編碼器單元的輸入序列。

通過將變壓器的輸入標記定義為不重疊的圖像補丁而不是單個像素,我們能夠將注意力圖的維度從⟮𝐻 𝓍 𝑊⟯²減少到⟮𝑛𝑝ℎ 𝓍 𝑛𝑝𝑤⟯²,給定𝑛𝑝ℎ ≪ 𝐻和𝑛𝑝𝑤 ≪ 𝑊;其中𝐻和𝑊是圖像的高度和寬度,而𝑛𝑝ℎ和𝑛𝑝𝑤是相應軸上的補丁數量。這樣,模型能夠處理不同大小的圖像,而無需進行大量的架構更改。
這些圖像補丁然後被線性嵌入到較低維度的向量中,類似於第2.1部分中生成矩陣X的單詞嵌入步驟。由於變壓器不包含循環或卷積,因此它們缺乏編碼輸入標記的位置信息的能力,因此對排列不變。因此,正如在NLP應用中所做的那樣,在輸入變壓器模型之前,將位置嵌入附加到每個線性編碼的向量上,以編碼補丁的空間信息,確保模型理解每個標記相對於圖像中其他標記的位置。此外,還添加了一個額外的可學習分類器嵌入cls。所有這些(每個16 x 16補丁的線性嵌入、額外的可學習分類器嵌入及其相應的位置嵌入向量)都通過標準變壓器編碼器單元,如第2部分所述。對應於添加的可學習cls嵌入的輸出然後用於通過標準的MLP分類器頭進行分類。
4. 結果
在論文中,兩個最大的模型ViT-H/14和ViT-L/16都在JFT-300M數據集上進行了預訓練,並與最先進的CNN進行了比較,如表II所示,包括Big Transfer (BiT),它使用大型ResNet進行監督轉移學習,以及Noisy Student,一個使用半監督學習在ImageNet和JFT-300M上訓練的大型EfficientNet,沒有標籤。在這項研究發表時,Noisy Student在ImageNet上保持最先進的地位,而BiT-L則在論文中使用的其他數據集上表現良好。所有模型均在TPUv3硬件上訓練,並記錄了訓練每個模型所需的TPUv3核心天數。

從表中可以看出,預訓練在JFT-300M數據集上的視覺變壓器模型在所有數據集上都超越了基於ResNet的基線模型;同時,預訓練所需的計算資源(TPUv3核心天數)顯著減少。還有一個次要的ViT-L/16模型也在較小的公共ImageNet-21k數據集上進行了訓練,並顯示出相對良好的表現,同時相比最先進的對手減少了多達97%的計算資源。
圖6顯示了BiT和ViT模型之間的性能比較(使用ImageNet Top1準確度指標),在不同大小的預訓練數據集上。我們看到,ViT-Large模型在像ImageNet這樣的小數據集上的表現不如基準模型,而在ImageNet-21k上表現大致相當。然而,當在更大的數據集如JFT-300M上進行預訓練時,ViT明顯超越了基準模型。

進一步探索數據集的大小如何與模型性能相關,作者在JFT數據集的各種隨機子集上訓練了模型——9M、30M、90M和完整的JFT-300M。在較小的子集中未添加額外的正則化,以評估內在模型屬性(而不是正則化的影響)。圖7顯示,ViT模型在較小數據集上過擬合的情況比ResNets更嚴重。數據顯示,ResNets在較小的預訓練數據集上表現更好,但較早達到平穩;而ViT則在較大的預訓練數據集上超越了前者。作者得出結論,在較小的數據集上,卷積誘導偏見在CNN模型性能中起著關鍵作用,而ViT模型則缺乏這一點。然而,隨著數據量的增大,直接學習相關模式的優勢超過了誘導偏見,這是ViT的強項。

最後,作者分析了模型在JFT-300M上的轉移性能與分配的總預訓練計算資源之間的關係,如圖8所示。在這裡,我們看到,視覺變壓器在相同計算預算下超越了ResNets。ViT使用的計算量約為ResNet的2-4倍,以達到類似的性能。實施混合模型確實提高了較小模型的性能,但對於較大模型,這一差異消失,這讓作者感到驚訝,因為最初的假設是卷積局部特徵處理應該能夠幫助ViT,無論計算大小如何。

4.1 ViT模型學到了什麼?
為了理解ViT如何處理圖像數據,分析其內部表示是很重要的。在第3部分中,我們看到從圖像生成的輸入補丁被送入線性嵌入層,將16×16的補丁投影到較低維度的向量空間,其結果嵌入表示然後附加位置嵌入。圖9顯示,模型確實學會了編碼圖像中每個補丁的相對位置。作者使用了補丁之間學習到的位置嵌入的餘弦相似度。高餘弦相似度值出現在位置嵌入矩陣中對應於補丁的相似相對區域;例如,右上角的補丁(行1,列7)在位置嵌入矩陣的右上區域具有對應的高餘弦相似度值。

同時,圖10(左)顯示了應用於原始圖像補丁的學習嵌入濾波器的主要成分。令人有趣的是,這與從卷積神經網絡中獲得的學習隱藏層表示非常相似,圖中右側顯示了AlexNet架構的示例。

根據設計,自注意力機制應該允許ViT在整個圖像中整合信息,即使在最低層,這有效地使ViT在開始時就具有全局感受野。我們可以在圖10中看到這一效果,學習到的嵌入濾波器捕捉了較低層次的特徵,如線條和網格,以及結合線條和顏色塊的較高層次模式。這與CNN的情況形成對比,因為CNN在最低層的感受野大小非常小(因為卷積操作的局部應用僅關注由濾波器大小定義的區域),並且隨著更深的卷積進一步提取上下文,感受野才會擴大。作者進一步通過測量注意力距離來測試這一點,這是根據“基於注意力權重在圖像空間中整合信息的平均距離”計算的。結果如圖11所示。

從圖中可以看出,即使在網絡的非常低層中,一些頭部已經注意到大部分圖像(如數據點在網絡深度較低的地方的平均注意力距離值高所示);因此證明了ViT模型在最低層也能全局整合圖像信息的能力。
最後,作者還計算了從輸出標記到輸入空間的注意力圖,使用注意力回滾通過平均ViT-L/16中所有頭的注意力權重,然後遞歸地乘以所有層的權重矩陣。這產生了一個漂亮的可視化,顯示了在分類之前輸出層注意的內容。

5. 那麼,ViT是計算機視覺的未來嗎?
由Dosovitskiy等人在這篇研究中介紹的視覺變壓器(ViT)是一種突破性的計算機視覺任務架構。與以往引入圖像特定偏見的方法不同,ViT將圖像視為一系列補丁,並使用標準變壓器編碼器進行處理,就像在NLP中使用變壓器一樣。這種簡單但可擴展的策略,加上在大型數據集上的預訓練,產生了令人印象深刻的結果。視覺變壓器(ViT)在許多圖像分類數據集上要麼匹配,要麼超越最先進的技術,並且在預訓練中保持成本效益。
然而,與任何技術一樣,它也有其局限性。首先,為了表現良好,ViTs需要大量的訓練數據,而不是每個人都能夠獲得所需的規模,尤其是與傳統的CNN相比。論文的作者使用了JFT-300M數據集,這是一個由Google管理的有限訪問數據集。應對這一問題的主要方法是使用在大型數據集上預訓練的模型,然後將其微調到較小的(下游)任務。然而,第二,與可用的預訓練CNN模型相比,目前可用的預訓練ViT模型仍然非常少,這限制了這些較小的、更具特定性的計算機視覺任務的轉移學習好處。第三,根據設計,ViTs將圖像處理為標記的序列,這意味著它們不自然地捕捉空間信息。雖然添加位置嵌入有助於彌補這一缺乏空間上下文的問題,但在圖像定位任務中,ViTs的表現可能不如CNN,因為CNN的卷積層在捕捉這些空間關係方面非常出色。
展望未來,作者提到需要進一步研究將ViTs擴展到其他計算機視覺任務,如圖像檢測和分割,以及其他訓練方法,如自監督預訓練。未來的研究可能會專注於使ViTs更高效和可擴展,例如開發更小和更輕量的ViT架構,仍然能夠提供相同的競爭性能。此外,通過創建和共享更廣泛的預訓練ViT模型以適應各種任務和領域,可以進一步促進這項技術的發展。
參考文獻
N. Pogeant, “變壓器 – NLP革命,” Medium, https://medium.com/mlearning-ai/transformers-the-nlp-revolution-5c3b6123cfb4(訪問日期:2023年9月23日)。
A. Vaswani等人。“注意力是你所需要的一切。”NIPS 2017。
A. Dosovitskiy等人。“一幅圖像值16×16個單詞:用於大規模圖像識別的變壓器,”ICLR 2021。
X. Wang, G. Chen, G. Qian, P. Gao, X.-Y. Wei, Y. Wang, Y. Tian, 和W. Gao,“大規模多模態預訓練模型:綜合調查,”機器智能研究,卷20,第4期,447–482頁,2023年,doi: 10.1007/s11633-022-1410-8。
H. Wang,“解決基於語法的語義補全:將實體和軟依賴約束納入隱喻解析”,ResearchGate上的科學圖形。可從:https://www.researchgate.net/figure/Attention-matrix-visualization-a-weights-in-BERT-Encoding-Unit-Entity-BERT-b_fig5_359215965(訪問日期:2023年9月24日)
A. Krizhevsky等人。“使用深度卷積神經網絡進行ImageNet分類,”NIPS 2012。
C. Sun等人。“重新考慮深度學習時代數據的不合理有效性,”Google Research,ICCV 2017。
* ChatGPT,適度用於重新表述某些段落以改善語法和更簡潔的解釋。報告中的所有想法均屬於我,除非另有說明。聊天參考:https://chat.openai.com/share/165501fe-d06d-424b-97e0-c26a81893c69
本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!