選單

Transformer 眼中世界 Vs. CNN 眼中世界

消失人口迴歸系列,嗯,這段時間也一直在從事反捲事業。

最近幫朋友看畢業 Report,主要對比視覺識別比較前沿的兩個模型,

ViT

Vi

sion

T

ransformer) 和 EfficientNet。 需要視覺化解釋一下這兩模型對同一任務的不同之處。

EfficientNet 主要元件是 CNN 還好,CNN 在視覺化各位大佬都做了,但 ViT 的 Transformer 在影象方面,說實話都不知道視覺化哪部分,開頭 patch 的轉換部分或者 attention map 還行。

剛好看到這篇論文Do Vision Transformers See Like Convolutional Neural Networks?時不時莫名其妙在想什麼問題時,突然蹦出相關論文,可能是老天想讓我動動了。

ViT 和 ResNet 回顧

這篇論文如果只是想看結論,直接跳到第三小節就行。這裡簡單介紹一下要對比的模型 ViT 和 ResNet。

ViT 全稱 Vision Transformer,即 Transformer 模型用在視覺領域,於去年年底谷歌論文An Image is Worth 16x16 Words中提出,當看到該來的還是來了,大家緊跟著趕緊各種魔改,最近也不少相關論文。

主要點還是

怎麼將圖片作為 token 輸入

。之前比較粗暴點就是直接畫素作為 token 輸入,或者如 OpenAI 先訓VAE 給圖片轉成離散 token 接著輸入。而 ViT 是給圖片切成一塊塊小方塊(patch) ,經過線性投影成一個 embedding 表示,然後輸入 Transformer 進行互動。

Transformer 眼中世界 Vs. CNN 眼中世界

方法不難,但效果很不錯,直接 SOTA 了。關於 ViT 各個版本變好主要就是模型大小和切塊大小,比如16就是16x16的切塊。

之後 ResNet 沒有太多要介紹了,太經典了。

這篇 Transformer 和 CNN 對比論文,主要就是給 ViT 模型和 ResNet 模型中的表徵抽取出來,然後進行分析。

CKA 向量相似計算介紹

其中用到最主要的分析方法就是 CKA 向量相似度分析法。

CKA(Centered Kernel Alignment)

12年就提出來了,但在神經網路表徵相似度計算的推廣還要多虧 Hinton 團隊19年那篇Similarity of neural network representations revisited。

要計算神經網路表徵在模型不同層,或不同模型間的相似度。因為特徵是分散在大量神經元中,還有分佈順序和 scaling 問題,還是有些困難的。

CKA 方法,就是先選定兩個要對比的表徵層,比如說 ViT 的第2層和 ResNet 的第10層,那麼取一些樣本,輸入兩個模型,就能從對應層拿到兩份表徵。

先分別對著兩份表徵計算 Gram matrix(就是計算向量兩兩之間內積組成的矩陣,相當於計算了各個資料點pair對之間的相似度)

分別獲得

,之後再來計算它們的

Hilbert-Schmidt independence criterion

(HSIC,Hilbert-Schmidt獨立性指標,用於計算兩個分佈的統計學獨立性),這裡兩個分佈就是

,具體計算過程如下,先構建一箇中心矩陣

接著用

來給

分別中心化

接著就可以直接計算 HSIC 了

最後 Normalize 一下就是 CKA 了

CKA 最大的優點是

對矩陣正交變換後獲得的結果也是不變的

(比如排列不同),所以一個相同模型因為隨機種子不同,表徵順序不同也沒關係;而且 Normalization 後

對不同 Scaling 也可以進行對比

結論:這倆眼中的世界灰常的不同

講完技術部分,就直接看實驗結論吧。

ViT 內層間表徵結構和 ResNet 內層間表徵結構有很大不同

在 ViT 和 ResNet 模型內,對每層之間表徵進行 CKA 分析

可清晰看到分別的熱度圖結構有很大的差別,對於

ViT 模型所有層之間會學到高度相似的表徵

,而

對於 ResNet 則底層和高層網路學到的表徵有很大不同

ViT 和 ResNet 間表徵對比也有很大不同

對不同模型表徵之間進行相似度計算,看看 ViT 和 ResNet 學到的表徵是不是有相似的。

Transformer 眼中世界 Vs. CNN 眼中世界

結果發現,

ResNet 低層有很多層和 ViT的低層比較像

,之後往上走點 ResNet 和 ViT 中間層的表徵比較像,而沒有特徵和 ViT 的頂層相似,也就是說

ViT 頂層學到的表示和 ResNet 所有層學到的表示都差很多

可能跟 ViT 最後輸出用 [CLS] token,而 ResNet 用的 Global Pooling 有關,後面也有相關對比。

ViT 和 ResNet 表徵中的區域性和全域性資訊學習

對 ViT 每層各個頭進行分析,每層各個頭算 attention 的平均距離,排序畫圖,如下

Transformer 眼中世界 Vs. CNN 眼中世界

發現,對於 ViT 模型,

在底層就已經是區域性和全域性資訊都混在一起了,而上層則基本都是全域性資訊

。和 ResNet 差別在於,因為 CNN 本身特性,底層只利用區域性資訊。之後作者們用 ResNet 學到的特徵和 ViT 裡注意力頭特徵做 CKA 分析,發現 ResNet 學到的和學習區域性資訊頭學到的特徵更相似。

此外,當用

少量資料訓練 ViT

的時候,發現

底層的頭是學習不到區域性資訊的

Transformer 眼中世界 Vs. CNN 眼中世界

而這也導致了模型效能不是很好,所以

視覺模型需要表現好,底層一般都需要學習到區域性資訊,這也是符合解剖學裡麵人類視覺神經結構的。

關於區域性和全域性資訊,最近 Transformer 在視覺方面模型幾個改進也都和這相關,比如最近的Focal Transformer。

殘差連線對 ViT 表徵傳播影響大些

有觀察到 ViT 模型表徵在各個層都近似,所以作者也有做關於殘差連線對錶徵影響的實驗。

Transformer 眼中世界 Vs. CNN 眼中世界

提到 ViT 模型很明顯的有兩個階段,在

前一個階段殘差連線主要保留 CLS token 的資訊,之後階段就主要是其他 token 的資訊

。這個之前看文字方面 Transformer 的分析好像也有類似結論。

這個還不夠直觀,最直觀的是直接給其中一些殘差連線去掉,然後做個對比

Transformer 眼中世界 Vs. CNN 眼中世界

能明顯看到去掉殘差連線後,不同層表示之間相似度的變化。

最後一層空間資訊的學習和 Pooling 相關

發現 ViT 高層比起 ResNet 能保留更多的空間位置,但作者猜想和 ViT 訓練用 CLS 做 Pooling 有關,而 ResNet 是直接Global Pooling 取特徵相關。

當對 ViT 也直接Global Pooling 取特徵之後,就發現之前提到現象少了很多。

在遷移學習上 Scaling

發現對於ViT模型,大模型加大資料可以獲得明顯更好的中間表示,正常結論。