Transformer涉及到了Transformer的工作,自然首先會簡單提一下Transformer。Transformer [2] 開啟了一個預訓練模型的新時代,其后續(xù)工作BERT [5],GPT,ERNIE [4]等都是NLP領域經(jīng)典的工作,在工業(yè)界也得到了廣泛應用。作為NLP領域的一個創(chuàng)新之作,Transformer舍棄了常用的RNN,CNN結(jié)構(gòu),單純采用自注意力機制 (self-attention)和全連接層(FCN)實現(xiàn)了時序建模。后續(xù)的一些工作如BERT等,設計了多種多樣的預訓練任務,開啟了預訓練的大時代。我們本章只對Transformer進行簡單介紹,具體的代碼解析等留后文講解。
Transformer用自注意力作為組織語句token之間依賴關系的方式,而不是傳統(tǒng)的CNN或者LSTM等。如Fig 1.1所示,通過自注意力可以學習到一句話中某個token與另一個token之間的關系強度。
Fig 1.1 基于自注意力機制對語句中token進行依賴強度分析。在Transformer中用式子(1.1)進行自注意力的計算
其中的Q表示query,K表示Key而V表示Value,這個式子意味著:以某種形式,將原始輸入轉(zhuǎn)換成類似于搜索系統(tǒng)中的的檢索詞(Q),以及一個字典,字典存在有鍵(K)和值(V)。這意味著,當前的某個token將會以某種形式,轉(zhuǎn)換成Query,去匹配字典中的每個鍵Key,然后形成每個匹配的相似度,然后按照相似度從鍵值Value中加權(quán)。這個是式子(1.1)的解釋。那么其中的是根據(jù)Key的數(shù)量進行歸一化;而
是對查字典的相似度進行歸一化,變?yōu)橐粋€概率分布。文中談到的『以某種形式』,通常是用FC層進行映射,如式子(1.2)所示。
其中的 就是token的嵌入式表征(embedding),也可稱之為分布式表征或者語義表征,見筆者之前博客 [3]。通常實踐中是提供一個表
,其中N是token的總數(shù)(包括特殊字符和控制字符如[CLS]等),而D是嵌入表征的維度,M是當前輸入序列的token數(shù)量,通過查表實現(xiàn)從token的ID到表征的過程。其中的
是將token的嵌入式特征映射為Query,Key和Value的過程,注意到不需要偏置bias。當然,實踐中會采用多頭注意力(Multi-Head Attention,MHA)本文只是簡單介紹,因此不深入討論。
通過這種形式可以將視為是注意力mask,而V 則是原始輸入,這也就是被稱之為『自注意力』的原因。整個結(jié)構(gòu)圖如Fig 1.2所示。
得到了注意力后的序列并不是就完成了,還需要用FC層進行特征變換,在Transformer中將這層疊的FC層稱之為Feed Forward Network (FFN),如式子(1.3)所示。
此時的Transformer還無法區(qū)分序列的位置信息,對于此時的Transformer而言,以下兩句話沒有區(qū)別。
I eat an apple.
An apple eat me.
這種類似于詞袋(BoW)的結(jié)構(gòu)顯然不夠合理,不能捕捉到序列的時序信息。為了讓模型能夠考慮到不同位置的區(qū)別,需要加入位置編碼,我們記為 ,我們暫時不考慮怎么對這個位置編碼進行設計。我們最后的輸入應該是如式子(1.4)所示,也即是用token的嵌入式特征加上位置的編碼。
以上我們對Transformer進行了簡單扼要的介紹,當然還是遺漏了很多細節(jié),不過已經(jīng)足夠讓我們理解Vision Transformer的設計了。
Vision TransformerVision Transformer(ViT)出自論文[1],是一篇考慮將Transformer用在圖片任務的工作。ViT的想法很樸素,直接對原圖片進行等塊分割并且拉直(flatten),然后通過FC層將原圖像素直接映射到初級特征,然后直接輸入到Transformer中,如Fig 2.1所示。這種思路相當于將每個小塊按照順序,視為文本輸入中的token輸入到Transformer。
Fig 2.1 Vision Transformer的網(wǎng)絡示意圖。
可以用公式進行形式化描述,令原圖為,假設每一塊的尺寸都是
,那么每一小塊為
,其中N = H W / P 2 N = HW/P^2N=HW/P 2 是總的分塊數(shù)。為了實現(xiàn)分類,還需要在序列開頭添加分類token,表示為[CLS],如BERT一樣。在編碼后,[CLS]對應位置的編碼就是作為整張原圖的特征表達,供給下游任務使用。為了將原圖像素映射到初級特征,需要用FC層進行處理,這一步類似于NLP任務中的嵌入式特征提取。那么最終的輸入如(2.1)所示,
后續(xù)的處理就如同在Transformer中一樣,自注意力mask計算,然后用FFN進行特征映射。這里還是涉及到了位置編碼,ViT采用了不同的位置編碼進行實驗,最終選擇了2D形式的位置編碼。2D形式編碼考慮了圖片的x坐標和y坐標,對于某個塊而言,其二維空間序為( i , j ) ,那么會在x方向和y方向分別查表,其中x方向的表記為D
,其中L x = H / P , L y = W / P L_x = H/P,L_y = W/PL x? =H/P,L y? =W/P表示兩個方向上塊的數(shù)量。通過查表能得到兩個維度上的嵌入式特征,維度都為d / 2 d/2d/2,拼接后得到最終的維度為d dd的位置編碼。在這種設計下,不同位置編碼具有位置信息,如Fig 2.2所示,對于第( i , j ) 塊可以計算出位置編碼
,那么遍歷所有的塊,有
,對于第( i , j ) 塊的編碼
,與D計算余弦相似度,就能得到一個矩陣,這個矩陣表征了第( i , j ) 塊與其他塊的編碼之前的相近程度。
Fig 2.2 根據(jù)不同位置的塊的位置編碼,計算余弦相似度ViT直接用像素經(jīng)過FC的特征進行輸入,本文還對比了混合模型,即是先用若干層CNN對圖片進行特征圖提取,然后對特征圖進行切割,隨后輸入到Transformer中。除了混合模型,作者同時對比了CNN網(wǎng)絡Big Transfer(BiT) [6]的實驗結(jié)果。如Fig 2.3所示,ViT無論是在P = 14 還是P = 16 時都比CNN模型在諸多圖片數(shù)據(jù)集上表現(xiàn)更為突出,而且預訓練時間少了很多(見TPUv3-core-days)
Fig 2.3 ViT和BiT等的橫向?qū)Ρ取?/p>
論文還從實驗上對比了個有趣的指標,作者仿照感知野的概念,造出了個『attention distance』的概念,衡量當前的注意力范圍大小,越大代表當前的注意力感知野越大。如Fig 2.4所示,作者對比了純ViT和Resnet特征+ViT(也即是混合模型)的不同層的mean attention distance。從對比圖中,我們發(fā)現(xiàn)在混合模型中,因為引入了CNN的先驗知識(比如局部感知,圖像的局部性等),使得其注意力感知野從淺層就比較大,范圍從[ 40 , 120 ] ;而ViT方案因為采用的是純Transformer,一開始的FC沒有任何的先驗知識,因此從左圖可以明顯看出其感知野分布從0~120都有,說明了先驗知識的不足。但是即便ViT的先驗知識不足,在層數(shù)足夠多,而且預訓練足夠的情況下,在20層以上時候仍然可以得到足夠大的注意力感知野。
Fig 2.4 對比ViT模型和混合模型的mean attention distance。
在Fig 2.5實驗中,作者讓ViT和BiT分別在不同數(shù)量級的數(shù)據(jù)集上進行預訓練,然后對比下游分類任務的效果,可以看出,即便ViT模型在小數(shù)據(jù)集上預訓練時候效果不如BiT模型,在大型的JFT-300M數(shù)據(jù)集上進行預訓練后,模型的效果可以趕上甚至超越BiT模型,并且預訓練時間少很多。
Fig 2.5 BiT和ViT模型在不同大小的數(shù)據(jù)集上進行預訓練。
當然,本文還有很多實驗和分析都設計的很精彩,值得讀者進一步細細品味。不過對于筆者來說,該文的意義在于,指明了Transformer即便不用CNN的加持,通過足夠大的數(shù)據(jù)集進行預訓練(可以是強監(jiān)督的預訓練,也可以是類似于BERT的自監(jiān)督預訓練),也可以達到甚至超過傳統(tǒng)CNN網(wǎng)絡,并且速度更加快。這意味著Transformer的適用范圍遠遠不只是局限于NLP,在圖片,視頻等視覺領域也許也可以成為一個通用的基礎架構(gòu),而基于此的預訓練將可以讓大數(shù)據(jù)物盡所用。在多模態(tài)領域,Transformer將會有著更為廣闊的應用空間,那是我們的后話了。
Reference
[1]. Dosovitskiy, Alexey, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani et al. “An image is worth 16x16 words: Transformers for image recognition at scale.” arXiv preprint arXiv:2010.11929 (2020).
[2]. Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, ?ukasz Kaiser, and Illia Polosukhin. Attention is all you need. In NIPS, 2017
[3]. https://fesian.blog.csdn.net/article/details/114958239
[4]. Sun, Yu, Shuohuan Wang, Yukun Li, Shikun Feng, Xuyi Chen, Han Zhang, Xin Tian, Danxiang Zhu, Hao Tian, and Hua Wu. “Ernie: Enhanced representation through knowledge integration.” arXiv preprint arXiv:1904.09223 (2019).
[5]. Devlin, Jacob, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. “Bert: Pre-training of deep bidirectional transformers for language understanding.” arXiv preprint arXiv:1810.04805 (2018).
[6]. Alexander Kolesnikov, Lucas Beyer, Xiaohua Zhai, Joan Puigcerver, Jessica Yung, Sylvain Gelly, and Neil Houlsby. Big transfer (BiT): General visual representation learning. In ECCV, 2020.