博客專欄

        EEPW首頁 > 博客 > 獨家 | 為什么在CV(視覺識別)領域,Transformers正在緩慢逐步替代CNN?

        獨家 | 為什么在CV(視覺識別)領域,Transformers正在緩慢逐步替代CNN?

        發布人:數據派THU 時間:2022-02-13 來源:工程師 發布文章

        作者:Pranoy Radhakrishnan

        翻譯:wwl

        校對:王可汗


        在認識Transformers之前,思考一下,為什么已經有了MLP、CNN、RNN,研究者還會對Transformers產生研究的興趣。

         

        Transformers起初是用于語言翻譯。相比于循環神經網絡(比如LSTM),Transformers支持模擬輸入序列元素中的長依賴,并且支持并行處理序列。

         

        Transformers利用同一個處理模塊,可以支持處理不同類型的輸入(包括圖像、視頻、文本、語音)。每個人都希望解決不同的問題都能有統一的模型,并且兼顧準確性和速度。和MLPs有通用的函數近似器一樣,transfomers模型在sequence-to-sequence問題上,有通用的解決函數。

         

        Transformers應用了注意力機制,首先我們學習注意力機制和自注意力機制。

         

        • 注意力機制


        注意力機制的作用是提高輸入數據中關鍵部分的重要性,降低其余部分的重要性。就像是你理解一個圖片的時候,你會聚焦在圖像中有意義的相關部分。注意力機制也是這樣做的。

         

        但是為什么我們需要注意力機制?畢竟CNNs已經在圖像特征提取上表現得很好了,不是嗎?

         

        圖片


        對于一個CNN,輸入的每個圖片都是一樣的操作。CNN不會對不同特征的相對位置進行編碼。如果想要對這些特征組合進行編碼,則需要大的卷積核。舉例來說,編碼鼻子和嘴巴上邊的眼睛這個信息,需要大的卷積核。

         

        在一個圖片里,如果要捕捉較大范圍的依賴關系的話,是需要大的感受野。提高卷積核的尺寸可以提高模型的表達能力,但這樣做也會失去使用局部卷積結構獲得的計算和統計效率。

         

        自注意力機制是注意力機制的一種,和CNN結合可以幫助擬合長距離的依賴關系且不以犧牲計算效率和統計效率為代價。自注意力模塊是卷積的補充,有助于在圖像區域內擬合遠距離、多層次的依賴關系。

         

        你可以看到,自注意力模塊替代了卷積層,現在模型中每個位置點可以和遠距離的像素點有相關關系。

         

        在最近的一項研究中,研究者執行了一系列ResNets實驗,分別用注意力模塊替代部分和全部的卷積層,結果顯示模型效果最好的實驗是在淺層用卷積層,在深層用注意力層。

         

        圖片

        圖 SAGAN使用的自我注意模塊


        • 自注意力


        自注意力機制是注意力機制的一種,作用是序列中的每個元素和序列中其他元素有交互,并發現應該更關注其他元素中的哪個。


        圖片


        自注意力的目標是捕捉所有實體的關系,是一個所有詞向量的帶權重的組合,可以捕捉序列中元素之間的長范圍的信息和依賴關系。

         

        從上圖可以看到,“it”指代的是“street”,而不是“animal”。自注意力是其他詞向量的帶權重的組合。這里“it”的詞向量是其他詞向量的加權的組合,其中單詞“street”的權重更高。

         

        如果想深入理解權重是如何得到的,參考這個視頻: 

        https://www.youtube.com/watch?v=tIvKXrEDMhk

         

        根本上,一個自注意力層會對輸入序列中的每個元素進行更新,更新的方式是對完整的輸入序列中的全部信息進行整合。

         

        因此,我們已經了解了像自注意這樣的注意力機制如何有效地解決卷積網絡的一些局限性。現在是否有可能用像Transformers這樣的基于注意力的模型完全取代CNN?

         

        在NLP領域,Transformers已經取代了LSTM。那么在計算機視覺領域,Transfomers可以取代CNN嗎?接下來我們深入了解下,在哪些方面,注意力的方法超越了CNN。

         

        • Transformer 模型


        Transformer模型最初是用來解決自然語言處理中的翻譯問題,包含encoder-decoder的模型結構。圖片中左邊表示編碼器,右邊表示****。編碼器和****中都包含自注意力機制、線性層和剩余的全連接層。

         

        圖片

        備注:在卷積神經網絡中,特征增強和特征轉換是自發進行的(通過非線性的卷積層),在Transformer模型中,特征增強和特征轉換是分開進行的,舉例來講,自注意力層僅實現特征增強,前饋網絡實現特征轉換。

         

        • 編碼器


        以翻譯為例,編碼其中的自注意力是幫助輸入序列中的words產生交互,從而對每個word產生一個包含和序列中其他word的語義相似性的特征表示。


        • ****


        ****的工作是一次輸出一個已翻譯的單詞,基于到目前為止生成的輸入詞嵌入和輸出。

         

        ****輸出翻譯后的單詞,是通過對編碼器的輸出中的特定部分以及對之前****的輸出。為了確保編碼器只用到了已經生成的之前的輸出,不包含訓練中未來的輸出。Mask Self Attention機制用于****。它只是掩蓋了訓練期間****輸入給出的未來單詞。

         

        自注意力并不關心位置。比如說,這個句子“Deepak is the son of Pradeep”,對于單詞“son”,自注意力會給單詞“Deepak”更多權重。如果我們順序改變得到,“Pradeep is the son of Deepak”,對單詞“son”,自注意力還是會給單詞”Deepak”更多權重,但其實這里我們希望如果句子中單詞順序改變,對單詞“son”來說,自注意力機制可以給“Pradeep”更多權重。

         

        這是因為,編碼單詞“son”的時候,自注意力機制是對其他所有單詞的詞向量進行了加權組合且不考慮位置關系。所以打亂句子中的單詞順序并不會有任何不同。換句話說自注意力機制是位置無關的。除非,在把子向量輸入自注意力模塊之前,給每個單詞增加了位置信息。

          

        • Vision Transformer


        Vision Transformer是用Transformer替換卷積層。

         

        圖片

        圖 Vision Transformer


        Transformer一般是應用在序列數據中,因此我們把圖片切分成圖像塊(patches),然后把每個patch展開為一個向量。從現在開始,我會把這個圖像塊稱為一個元素(token),因此我們現在就得到了一個由這樣的元素構成的序列。

         

        自注意力機制是位置無關(permutation invariance)的。它對不同注意力向量的加權求和是“泛化的”匯總。

         

        這里permutation Invariance的意思是指,如果輸入序列是[A, B, C, D],自注意力網絡得到的輸出結果和輸入序列為[A, C, B, D]是一樣的,以及任何其他的序列中元素位置發生改變后的序列,輸出結果都是一樣的。


        圖片

         圖 如果不向patch中添加位置編碼,這兩個序列對于Transformer來說看起來是一樣的

         

        因此,在輸入之前增加位置信息,增加位置信息有助于Transformer理解序列中元素的相對位置。在這里,學習位置編碼,而不是使用標準編碼。如果沒有增加位置編碼的話,對于Transformer來說這些序列都一樣。

         

        最后,Transformer的輸出作為后續的MLP分類器的輸入。

         

        從零訓練Transformers,比CNN需要更多的數據。這是因為CNN可以編碼圖像的先驗知識比如平移不變性(translational equivariance)。但是Transformers需要從給定的數據中獲得這個信息。

         

        平移不變性是卷積層的一種特性,如果我們將圖像中的對象向右移動,則特征層的激活(提取的特征)也將向右移動。但它們“實際上是相同的表示”。

         

        • ConViT


        Vision Transformer,通過可以在patch上實現自注意力機制,學習到卷積歸納偏置(例如:等變)。缺點是,它們需要大量數據才能從頭開始學習所有內容

        .

        CNN有強歸納偏置性,所以在小數據集上表現更好。但如果有大量的數據可用,CNN的強歸納偏置性反而會限制模型的能力。

         

        那么,是否有可能既擁有在小數據集上的強歸納偏置性,并且在大數據集上也不受限呢?

         

        方案是引入區域自注意力機制(Positional Self Attention Mechanism(PSA) ),如果需要的話,它支持模型起卷積層的作用。我們只是用PSA替換了一些自注意層。

         

        我們知道,由于自注意力是有位置無關性質的,因此位置的信息通常是會增加到圖像塊上。我們并不是在嵌入階段添加的位置信息,而是用PSA替代原始的自注意層。

         

        在PSA中,注意力的權重是用相對位置編碼(r)和經過訓練的詞向量(v)。這里相對位置編碼(r)僅僅依賴于像素間的距離。

         

        圖片


        這些具有可學習的相對位置編碼的多頭 PSA層可以表達任意卷積層。

         

        因此,我們并沒有將CNN和注意力機制做整合,而是應用PSA層,通過調整參數可以使得它具有卷積層的效果。在小數據集場景,PSA可以幫助模型更好的推廣,而到了大數據集場景,如果需要的話,PSA依然可以保留它的卷積性質。

         

        • 總結


        這里我們展示了,最初用于機器翻譯的Transformer在圖像領域表現出了很好的效果。在圖像分類上,ViTs超過CNN是一個重大的突破。但是,ViTs需要在額外的大數據集上的預訓練。在ImageNet數據集上,ConViT超過了ViTs,并且在效率上有所提升。這些都證明了,Transformers具有在圖像領域超越CNN的實力。


        • 參考文獻


        Transformers in Vision —https://arxiv.org/pdf/2101.01169.pdfConViT — https://arxiv.org/pdf/2103.10697.pdf
        原文鏈接:https://becominghuman.ai/Transformers-in-vision-e2e87b739fe原文題目:Why Transformers are Slowly Replacing CNNs in Computer Vision?


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 铜山县| 武胜县| 定西市| 龙里县| 饶河县| 山阴县| SHOW| 鄢陵县| 定结县| 广州市| 金阳县| 抚远县| 常宁市| 阆中市| 长武县| 哈尔滨市| 大竹县| 舞阳县| 松阳县| 玉山县| 铜陵市| 固阳县| 塘沽区| 蓝田县| 应城市| 太和县| 达日县| 余庆县| 菏泽市| 屯留县| 蓝山县| 宜兰县| 巨野县| 简阳市| 马公市| 乌兰察布市| 夏津县| 四平市| 大田县| 江都市| 资溪县|