兜兜转转一个圈,到底What is all you need?
最近讀論文、看文章發現了兩件有意思的事情,今天有時間分享閑聊一下,其一是各種MLP的論文頻出,從各個方面對Transformer進行“圍攻”,這讓人有種“大道至簡”的感覺;其二是“XXX is all you need”的標題文章和論文層出,讓人有種“通貨膨脹”的感覺。
在Google大佬們一篇《Attention is all you need》引領了一波潮流之后,Transformer的在各大榜單上的席卷之勢也帶起了一大波創造熱潮,Attention和Transformer成了標題中的常客。而如今,MLP is all you need 的東風又由Google吹起,仿佛一個輪回。Transformer吊打一切之后,大道至簡的MLP又對Transformer來了一頓猛錘。
目前的諸多機器學習相關的問題,諸如推薦問題中的序列處理,時間序列的預測,文本分類等問題都會涉及到Attention函數的使用,Attention已經成為了這些問題在建模時的最為核心的模塊。它可以無視輸入和輸出之間的距離而對它們之間的相關性進行建模。
2017 年,Google 機器翻譯團隊發表的《Attention is All You Need》中,完全拋棄了RNN和CNN等網絡結構,僅僅采用Attention機制來進行機器翻譯任務,并取得了很好的效果,注意力機制也成了一個研究熱點。在煉丹筆記《Attention函數手冊》一文中,我們介紹了各種權重函數,A(Q,K)的計算方式包括Concat策略、Minus、Add、Dot Product、Bilinear Dot、Scaled-dot Product、Content-Based等,f(·)的兩種計算方式,Softmax函數和TopN Softmax等。
Attention是神經網絡中的一種機制。模型可以通過選擇性地關注給定的數據集來學習做出預測。Attention的個數是通過學習權重來量化的,輸出則通常是一個加權平均值。
Self-Attention是一種注意機制,模型利用對同一樣本觀測到的其他部分來對數據樣本的剩下部分進行預測。從概念上講,它感覺非常類似于non-local的方式。還要注意的是,Self-attention是置換不變的;換句話說,它是對集合的一種操作。
關于attention和self-attention存在非常多的形式,我們之前常見的Transformer是依賴于scaled-dot-product的形式,也就是:給定query矩陣Q, key矩陣K以及value矩陣V,那么我們的輸出就是值向量的加權和,其中,分配給每個值槽的權重由Quey與相應Key的點積確定。
而multi-head self-attention是Transformer的核心組成部分,和簡單的attention不同之處在于,Multihead機制將輸入拆分為許多小的chunks,然后并行計算每個子空間的scaled dot product,最后我們將所有的attention輸出進行拼接。
Transformer,很多時候我們也稱之為"vanilla Transformer", 它有一個encoder-decoder的結構,decoder的Transformer可以在語言建模的時候獲得非常好的效果。
從2020年,Transformer開始在CV領域大放異彩:圖像分類,目標檢測,語義分割,圖像生成等。而從深度學習暴發以來,CNN一直是CV領域的主流模型,而且取得了很好的效果,相比之下Transformer卻獨霸NLP領域,Transformer在CV領域的探索正是研究界想把Transformer在NLP領域的成功借鑒到CV領域。
在《霸榜各大CV任務榜單,Swin Transformer橫空出世》一文中,我們探討了將Transformer從NLP轉移到CV的策略,之前計算機視覺相關的任務主要被CNN所統治。
- 從AlexNet及其在ImageNet圖像分類挑戰方面的革命性表現,CNN架構已經通過更大的規模,更廣泛的連接,以及更復雜的卷積形式而逐漸壯大。
自然語言處理(NLP)中網絡體系結構的演變走了一條不同的道路,今天流行的體系結構取而代之的是Transformer。
- Transformer是為序列建模和轉換任務而設計的,因為它關注數據中的長期依賴性建模。它在語言領域的巨大成功促使研究人員研究它對計算機視覺的適應性,最近它在某些任務上顯示了不錯的結果,特別是圖像分類和聯合視覺語言建模。
Swin Transformer,它可以作為計算機視覺的通用backbone。將Transformer從語言轉到視覺的過程中所面臨的挑戰來自于兩個領域之間的差異,例如視覺實體的規模變化很大,圖像中的像素與文本中的單詞相比分辨率很高。為了解決這些差異,文章提出了一個層次化的Transformer,其表示是用移位窗口計算的。
沒錯,兜兜轉轉又回來了,我們陸續的經歷了:
- Attention is all you need
- Transformer is all you need
- Attention is not all you need
- MLP-Mixer: An all-MLP Architecture for Vision
- CNN is better than Transformer
- Pay Attention to MLPs
我們發現,從模型結構上MLP-Mixer和ViT非常類似,每個Mixer結構由兩個MLP blocks構成,其中紅色框部分是token-mixing MLP,綠色框部分是channel-mixing MLP。差別主要體現在Layers的不同,ViT采用的是Transformer layer,而MLP-Mixer采用的是mixer-layer,只包括兩個MLP。
MLP-Mixer用Mixer的MLP來替代ViT的Transformer,減少了特征提取的自由度,并且巧妙的可以交替進行patch內與Channel之間信息交流,省去了Transformer復雜的結構,變的更加簡潔。
谷歌原 ViT 團隊提出了一種不使用卷積或自注意力的 MLP-Mixer 架構,并且在設計上非常簡單,在 ImageNet 數據集上也實現了媲美 CNN 和 ViT 的性能。而《Pay Attention to MLPs》所給我們帶來的gMLP算是MLP-Mixer的增強版,整個模型具有空間門控單元(Spatial Gating Unit, SGU)的 gMLP 架構,由堆疊的具有相同的結構和大小的 L 塊組成。
潮流兜兜轉轉,一會兒流行這個騷操作,不一會兒又流行反向操作。
MLP->CNN->Attention->Transformer->MLP那么我們要不要緊跟這個潮流走向呢?不跟會不會被淘汰?
這里比較贊同蘇劍林的觀點,“沒必要投入多少精力進去,平時大致關注一下就行了。拋開前面說的優雅性問題不說,這些工作的實用性本身就值得商榷。像將Attention換成MLP的改進,最大的優點無非就是提速,沒錯,是會快一點,但理論復雜度還是O(n**2),這說明其實沒有本質改進,況且提速的同時通常還會降低一點性能。”
而怎么才能關注推薦搜索、深度學習領域的潮流走向呢?
兜兜轉轉一個圈,閑聊一下What is all you need?總結
以上是生活随笔為你收集整理的兜兜转转一个圈,到底What is all you need?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用XGBoost调XGBoost?我调我
- 下一篇: 大规模推荐Deep Retrieval