正面剛CNN,Transformer居然連犯錯都像人類
本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。
這是你眼里的一只貓:
這是CNN眼里的一只貓:

這是ViT (Vision Transformer)眼里的一只貓:
從去年起,Transformer忙著跨界CV,如ViT在圖像分類上準確率已超過CNN,大有取代之勢。
這背后的原因是什么?
最近普林斯頓的一項研究認為,Transformer的運作方式更接近人類,連犯錯的方式都和人類一樣。
研究團隊在圖像分類的準確率之外,增加了對錯誤類型的分析。
結果發現,與CNN相比,ViT更擅長判斷形狀。
此前在ICLR2019上發表的一篇論文提出,用ImageNet訓練的CNN模型更傾向于通過紋理分類圖像。
如下圖中混合了大象皮膚紋理的貓被判斷成了大象。
△來自arXiv:1811.12231
雖然說這更可能和ImageNet的數據紋理信息更豐富有關。
但ViT模型,使用相同數據集訓練,就傾向于通過形狀分類圖像,并且表現比CNN更好。
用形狀分類物體也是人類的傾向。不信的話,試試回答下圖的問題:右面的三個物體中哪個與左邊的是同類?
△來自DOI: 10.1016/0749-596X(92)90040-5
這意味著,使用ViT不僅能建立更高效的視覺神經網絡,甚至對理解人類視覺的運作方式都有幫助。
這么神奇?
下面來看看CNN與Transformer與人腦的聯系分別在哪里。
CNN:從貓身上獲得靈感
大腦的不同區域對視覺信息有不同的處理方式,CNN主要模仿的是“腹側流 (Ventral Stream)”在物體識別、分類上的運作方式。

1981年獲得諾貝爾生理和醫學獎,由神經科學家Hubel和Wiesel發現貓的視覺皮層中有簡單細胞和復雜細胞兩種。
每個簡單細胞對一個特定角度的長條物體反應最強烈,而復雜細胞接受許多個簡單細胞傳出的信號,就能做到將不同角度的長條物體識別成同一個。

在CNN中,這兩種細胞的工作被分配給了卷積層和池化層。
卷積層中的神經元像簡單細胞一樣,僅和上一層的部分區域相連接,學習局部特征。
而最大池化 (Max Pooling)操作就是模仿復雜細胞,對簡單細胞中信號最強的作出反應。

這就是CNN從動物視覺中學到的第一個重要特性“局部連接”。
在卷積層和池化層中使用局部連接,僅在最后輸出結果前加入全連接層,使CNN獲得了“平移不變性”。
也就是把圖像稍微挪動位置,也可以識別成相同的特征。

另外,與全連接的神經網絡相比,局部連接的方式還大大減少了需要的參數量,降低訓練成本。
為了進一步節省資源、提高效率,CNN在此基礎上發展出另一個特性“權重共享”。
隱藏層中的每個神經元都使用相同的過濾器,也就是卷積核。
就像這樣:
卷積核中的相同的參數使用在每一次卷積操作中,進一步降低了需要的參數量。
不過,與生物視神經的不同之處也隨之出現了。
ViT: 擁有多個注意力中心
讓我們再來看看人眼的注意力機制。
人是不能同時看清視野左右兩端邊緣上的物體的。
當你把目光聚焦到一邊時,另一邊只能模糊地感覺到有無物體存在,看不清具體的形狀或顏色。
不信的話現在就可以試一試。
這是因為感光細胞在視網膜上的分布并是不均勻的。
人眼的感光細胞分為視桿細胞(Rods)和視錐細胞(Cones)兩種。

視桿細胞主要負責感知光的亮度,不能很好地分辨細節。
而在光亮度足夠時能分辨顏色和形狀的視錐細胞,集中分布在視網膜中心處。
只有在目光聚焦的位置上可以看清細節,所以我們觀察時要不停地轉動眼球,將目光聚焦在視野上的不同位置,這就產生了注意力機制。

不過比人眼更先進的是,神經網絡可以擁有多個注意力,被稱為多頭注意力(Multi-Head Attention)機制。
一句話是一個序列
在NLP任務中,Transformer將文本作為一個序列來處理。
有了注意力機制,就可以在長序列中注意到每個詞與其他詞間的關系,實現上下文關聯的機器翻譯。
一張圖也是一個序列
谷歌大腦團隊進一步提出,圖像在分解成小塊之后,再配合位置編碼,也可以當作一個序列來處理。
就像在NLP領域Transformer可以有效注意到一個詞與上下文的關系一樣,在CV領域也可以匯總圖像的全局特征進行學習。
用于圖像分類的ViT就此誕生,開啟了Transformer的跨界刷屏之旅。
犯錯的方式都和人一樣
在普林斯頓大學對比CNN和ViT的這篇論文中,還建立了錯誤一致性這個指標來對各個模型進行評判。
從WordNet中選取了16個概念(如飛機、熊、鍵盤等)來衡量CNN和ViT犯錯的類型。

從結果可以看出,ViT和人類一樣,更傾向于通過形狀判斷物體。
未來趨勢
ViT問世之初來勢洶洶,以至于很多人都在問,注意力機制這是要取代卷積嗎?
從最近的趨勢看來,Transformer在CV領域的應用,反倒是刺激了二者的結合和統一。
卷積擅長提取細節,要掌握全局信息往往需要堆疊很多個卷積層。
注意力善于把握整體,但又需要大量的數據進行訓練。
如果把兩者結合起來,是不是能夠取長補短?
把注意力引入CNN的有谷歌推出的BoTNet就是簡單把ResNet的最后瓶頸塊中的3x3卷積替換成全局自注意力,沒有別的改變,就在減少開銷的情況下提高了性能。

之后麥吉爾大學和微軟又把卷積引入Transformer架構的CvT(Convolutional vision Transformers),去除了Transformer中的位置編碼,提升對于高分辨率視覺任務的效果。

最近,谷歌大腦Quoc Le團隊利用簡單的相對注意力把兩大架構自然地統一起來,提出了混合模型CoAtNet。
看來,強強聯合果然不錯。
這還沒結束,除了卷積與注意力的協作以外,甚至有人從更高的層面開始嘗試將二者統一。
上海交大和華為的研究,用對卷積特征的變換操作達到近似自注意力的效果,提出全新的算子X-Volution,可以在任何現代神經網絡結構中使用。

港中文提出更是將CNN、Transformer以及MLP都統一在一起,提出了用于多頭上下文聚合的通用結構Container,取得了超越三大架構及混合架構的成績。

ViT:
https://arxiv.org/abs/2010.11929
ViT比CNN更像人類:
https://arxiv.org/abs/2105.07197
CNN紋理偏差的來源:
https://arxiv.org/abs/1911.09071
BoTNet:
https://arxiv.org/abs/2101.11605
CvT:
https://arxiv.org/abs/2103.15808
CoAtNet:
https://arxiv.org/abs/2106.04803
X-Volution:
https://arxiv.org/abs/2106.02253
Container:
https://arxiv.org/abs/2106.01401