前言
2021年4月,距離論文“Attention is all you need”問市過去快4年了。這篇論文的引用量正在沖擊2萬大關。
筆者所在的多個學習交流群也經常有不少同學在討論:transformer是什么?transformer能干啥?為什么要用transformer?transformer能替代cnn嗎?怎么讓transformer運行快一點?以及各種個樣的transformer技術細節問題。
解讀以上所有問題不再本文范疇內,但筆者也將在后續文章中繼續探索以上問題。本文重點關注:我們用transformer干啥?
我們用transformer干啥?筆者突然發現這句話有兩種理解(orz中文博大精深),希望我的語文不是體育老師教的。
疑問句:
我們使用transformer在做什么?
解決什么深度學習任務?
反問句:
我們用用transformer干啥?
為啥不用LSTM和CNN或者其他神經網絡呢?
疑問句:用transformer干啥?
谷歌學術看一眼。
為了簡潔+有理有據回答這個問題(有缺失之處忘大家指出),筆者首先在谷歌學術上搜尋了一下“Attention is all you need”看了一下被引,到底是哪些文章在引用transformer呢?
“Attention is all you need”被引:19616次。
先看一下前幾名引用的被引:
最高引用的“Bert:Pre-training of deep bidirectional transformers for language understanding“被引:17677次。BERT在做自然語言處理領域的語言模型。
第2和4名:“Squeeze and Excitaion Networks”被引用6436次,“Non-local neural networks”。計算機視覺領域,但還沒有直接用transformer。
第3名:“Graph attention networks”被引用3413,一種圖神經網絡,該文也不是直接使用transformer的,但使用了attention。
第5和6名:“Xlnet:Generalized autoregressive pretraining for language undersstanding“ 2318次和 ”Improving language understanding by generative pretraining“ 1876次。自然語言處理領域預訓練/語言模型/生成模型。
第7名“self-attention generative adversarial networks” 1508次?;趕elf-attetnion的生成對抗網絡。
第8、9、10都屬于自然語言處理領域,一個是GLUE數據集,一個做multi-task learning。
從Top的引用已經看出自然語言處理領域肯定是使用transformer的大頭了。隨后筆者對熟悉的深度學習任務關鍵詞搜了一下被引用:
計算機視覺領域vision前2的被引用:“Vibert”和“Stand-alone self-attetnion in vision model”分別為385和171次。
語音信號處理領域speech:“state-of-the-art speech recognition with sequence-to-sequence model” 被引710次。
多模態任務modal:“Unicoder-Vl:
A universal encoder for vision and language by cross-model pre-training。
檢索領域etrieval:“multilingual universal sentence encoder for semantic retrieval”被引73次
推薦領域recommendation:驚訝的我發現居然只有10篇文章orz。
初步結論:transformer在自然語言處理任務中大火,隨后是語音信號領域和計算機視覺領域,然后信息檢索領域也有所啟航,推薦領域文章不多似乎剛剛起步。
執著的筆者擴大搜索范圍直接谷歌搜索了一下,找到了這篇文章BERT4Rec(被引用128):”BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer“。
Github上搜一搜。
排名第1的是HuggingFace/transformers代碼庫。筆者對這個庫還算熟悉,但最近瘋狂新增的模型缺失還沒有完全跟進過,于是也整理看了一下。
圖1 HuggingFace/transformers代碼庫關系圖
如圖1所示,左邊展示了Huggingface/transformers代碼庫能處理的各種深度學習任務,中間展示的是處理這些任務的統一流水線(pipeline),右邊展示的是與任務對應的transformers模型名稱,下方表示用transformers解決這些深度學習任務可以在cpu或者gpu上進行,可以使用tensorflow也可以使用pytorch框架。
那么根據谷歌和github結果基本可以得到這個核心結論啦:transformer能干啥?目前已有的transformer開源代碼和模型里自然語言處理任務占大頭(幾乎覆蓋了所有自然語言處理任務),隨后是計算機視覺和語音信號處理,最后自然而然進行多模態信號處理啦,推薦系統中的序列建模也逐步開始應用transformer啦。
有一點值得注意:自然語言處理里,所有研究同學的詞表庫基本統一,所有谷歌/facebook在大規模語料上預訓練的transformer模型大家都可以使用。推薦系統不像自然語言處理,各家對user ID,Item ID或者物品類別ID的定義是不一樣的,所以各家的pretrain的模型基本也沒法分享給其他家使用(哈哈哈商業估計也不讓分享),也或許也是為什么transformer的開源推薦系統較少的原因之一吧,但不代表各大廠/研究機構用的少哦。
反問句:用transformer干啥?
為什么非要使用transformer呢?
筆者從一個散修(哈哈修仙界對修煉者的一種稱呼)的角度聊一聊自己的看法。
不得不用。
首先谷歌/Facebook一眾大廠做出來了基于transformer的BERT/roberta/T5等,刷新了各種任務的SOTA,還開源了模型和代碼。
注意各種任務啊,啊這,咱們做論文一般都得在幾個數據集上驗證自己的方法是否有效,人家都SOTA了,咱得引,得復現呀,再說,站在巨人的肩上創下新SOTA也是香的。
的確好用。
Transformer是基于self-attetion的,self-attention的確有著cnn和lstm都沒有的優勢:
比如比cnn看得更寬更遠,比lstm訓練更快。
重復累加多層multi-head self-attetion還在被不短證明著其強大的表達能力!
改了繼續用。
如果不說transformer的各種優點,說一個大缺點自然就是:
參數量大、耗時耗機器。
但這些問題又被一眾efficient transformers再不斷被解決。
比如本來整型數運算的硬件開發板無法使用transformers,隨后就有INT-BERT說我們不僅可以用,還能更快更好。
上手就用。
以Huggingface/Transformers為例子,一個代碼庫包含多種深度學習任務,多個開源的transfromer模型,各種預訓練transformer模型,以至于各種深度學習任務上手就來,十分方便。
筆者似乎并沒有看到其他模型結構有如此大的應用范圍和規模了。
未來還要用。
從上一章節可以看出,transformer這股風已經從自然語言處理領域吹出去了,其他領域的SOTA也在不斷被transformer打破,那么以為這,自然語言處理領域的歷史逐漸在其他領域復現(當然只是筆者個人觀點哈)。
原文標題:我們用transformer干啥?
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
Transforme
+關注
關注
0文章
12瀏覽量
8794 -
深度學習
+關注
關注
73文章
5503瀏覽量
121192
原文標題:我們用transformer干啥?
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論