宣傳一下最近的新工作,個人感覺是讀博以來做得最難最累但是成就感也最大的一個項目。它起源自一個很簡單的問題——自LLM誕生以來,我們見到了很多把LLM接到Vision Backbone后面的算法,那么有兩個自然的問題:
LLM的Transformer是否可以直接處理視覺Token?
LLM的Transformer是否可以提升處理視覺Token的Performance?
我們的工作回答了這兩個問題 (答案是Yes) 而且解釋了其中的原因:在語言模型中Pretrain的Transformer可以用作視覺任務的Encoder Layer。代碼已經開源,歡迎大家點贊關注我們的Paper和GitHub。
Frozen Transformers in Language Models Are Effective Visual Encoder Layers 代碼:github.com/ziqipang/LM4VisualEncoding
論文:https://arxiv.org/abs/2310.12973
1. LLM的Transformer可以處理視覺Token嗎?
在LLM的加持下,很多Vision-language Model 會直接把來自圖像的Embedding輸入給LLM,并讓LLM作為Decoder輸出文字、類別、檢測框等。但是在這些模型中,LLM并不會直接處理來自圖像的Token,它們更多地是 (1)?處理提前設計好的語義Token,例如CLIP中的cls token;(2)?處理被壓縮過的Token,例如BLIP里面經過information bottleneck的token。那么LLM是否可以直接作用于其它模態的Token呢,即LLM是否可以用作Encoder,而不只是Decoder呢?
1.1 實驗方法
驗證這個事情非常簡單,以ViT為例,我們只需要:
取出某一個LLM的Transformer Layer (例如LLaMA的最后一個Transformer),請注意這里只需要一個Transformer Block而不是整個LLM;
把它加入到最后一個Encoder Block后面,只需要額外兩個Linear Layers把Feature Dimensions拉齊;
凍結LLM的Transformer,但是正常訓練其它部分。
以ViT為例,我們的模型結構非常簡單,只需要額外兩個線性層
1.2 和現在的Vision-language Model的異同
是否需要Pretraining?我們的方法重在提升Encoding能力,所以我們既支持Train-from-scratch,也支持Finetune,而不是必須要依賴預訓練好的Backbones。
是否需要Language?雖然我們用的是LLM的Transformer,但是我們的Framework獨立于使用Language (比如Prompts或者Alignment),而不是像Vision-language Models一樣必須要Language。
可以處理多少模態?我們的Framework可以泛化到多個模態和任務,而不是只能處理圖像。
Encoder和Decoder有什么區別?Encoder需要直接和Visual tokens打交道,比如和HxW個圖像token的信息做Cross-attention去改變cls token。
現在已經有這么多Vision-language Models了,你們的研究有什么用?首先,我們的研究和現在的vision-language Models不矛盾而且互相補充——現在vision-language model研究如何把視覺embedding輸入給LLM,而我們的研究聚焦如何提供更好的embedding。
1.3 一個預訓練的LLaMA Transformer在許多不同模態、任務的Encoder上都有用
在論文中,我們發現把LLM的Transformer用作視覺Encoder可以泛化到極其多樣的場景。
2D語義:圖像分類 (image classification)
點云:點云分類 (point cloud classification)
視頻:動作識別 (action recognition)
無語義,回歸任務:軌跡預測 (motion forecasting)
2D多模態:2D VQA和圖像搜索 (2D VQA and Retrieval)
3D多模態:3D VQA
在這些任務中,我們的模型不只要處理圖像上像patch一樣的Token,還要處理
點云中無規則的3D點
視頻中形狀是TxHxW的長方體形狀的token
軌跡預測里面來自Agent和高精地圖的Polylines
多模態任務中混合了圖像和語言的Token
ImageNet, 圖像分類
2D/3D 語言多模態任務
自動駕駛,軌跡預測
2. 為什么預訓練的LLM Transformer有用:Information Filtering Hypothesis
雖然我們在許多任務和模態上都看到了性能的提升,但是如何解釋這一點呢?我們在研究的過程中感覺如果把加了LLM的提升都歸結于"LLM包含了可以泛化的知識",其實比較偷懶而且不一定正確。所以我們研究了Token在加LLM transformer前后的變化提出了Information Filtering假設:
LLM Transformer模塊能夠在訓練的過程中篩選和目標任務相關的Visual Tokens并且放大他們的貢獻。
這個結論是我們paper里面可能最重要的發現。
2.1 在ViT上的觀察 —— LLM Transformer篩選出了前景
為什么可以這么說呢?我們看下圖中我們對ViT的Token Activation的可視化:為了體現不同Token的貢獻,我們從本身Activation的大小(L2-norm)和頻率大小進行了可視化(做傅里葉變換后算角度的L2-norm)。
可以看到:在有了LLM Transformer之后,ViT的Activation能更干凈地集中到前景區域,而這個性質只有在無監督學習的ViT中(e.g. DINO)中可以見到,在監督學習的ViT中很少見。
另一方面,我們對比了有/沒有LLM transformer對于Attention weight的影響:普通的ViT的Attention Weight幾乎是完全Noisy的 (和DINO的觀察吻合),在加了LLMTransformer之后 (1) 有極少的Attention Head體現出了干凈的前景分割的樣子,但是 (2) 它們的數量較少不足以解釋Token Activation更顯著地好。
因此,我們觀察到的提升來自有用的Feature被放大了,這也是為什么我們稱之為information filtering hypothesis。
2.2 在其它任務的也可以篩選有用的Token
類似的“information filtering”現象不只在ViT和圖像分類上有,在其它任務上,LLM Transformer也有效地提升了對目標任務最有用的Token。這里我們舉兩個例子:
在動作識別中,加了LLaMA的Transformer可以更好地集中到前景的手和物體(low threshold),也更多地篩選出了手和物體有實際動作的幀(high threshold)。
在3D VQA中,我們可視化了點云Token的大小??梢钥吹?,那些真正和預測目標、或者問題相關的點得到了更大的關注:比如在左圖中,"behind me"的點云顯著得到了更大的Activation (顏色更亮了)。
3. 一點Ablation Study
那么我們觀察到的現象,即LLM的Transformer可以提升Visual Encoding,是否和不同的層、LLM有關呢?
多種LLM Transformer都可以提升Visual Encoding。例如用LLaMA和OPT的不同Transformer層都會有提升,而且不同層之間也會體現不同的規律。
只有足夠大的LLM才有提升Visual Encoding的效果。例如只有足夠大的OPT才會提升Visual Encoding的效果。
4. 后記
最后寫一些沒有寫在Paper里面的自己的感受和思考:
在論文中最讓我感到興奮的不是結合了LLM在很多Task上都有提升,而是在我們Information filtering假設的分析中看到了質變:神經網絡能夠更好地學習到那些和任務最相關的Token。
那么為什么會有這樣的效果?我猜測是LLM的Transformer的參數矩陣,例如FFN的矩陣,有一些很好的性質,例如在某些情況下是一個高通濾波器。我們可以從反面思考,如果一個參數矩陣是隨機初始化(低通濾波器),或者干脆就是一個單位矩陣,那么必然不可能去篩選出來有用的Token,并且放大他們的貢獻。
在嘗試解釋這個現象的時候,我們發現用transfer learning的工具來分析會非常有難度,因為我們不能保證vision和language確實在一層transformer之后就align了。最終,一個比較合理的直覺是受到了我本科同學許逸倫"A Theory of Usable Information Under Computational Constraints"這篇Paper的啟發:我們可以把LLM Transformer看作一種Decipher,它提升了Feature的有用性,使得一層MLP或者Decoder的有限計算資源可以把Feature映射到和真實結果Mutual Information更高的空間中。事實上,這也契合我們Information filtering的觀察。
編輯:黃飛
評論
查看更多