放棄幻想,全面擁抱 Transformer:自然語言處理三大特徵抽取器(CNN/...

2021-01-10 雷鋒網

雷鋒網 AI 科技評論按:本文作者是張俊林老師,他是中國中文信息學會理事,中科院軟體所博士,目前在新浪微博 AI Lab 擔任資深算法專家。在此之前,張俊林老師曾在阿里巴巴任資深技術專家並負責新技術團隊,也曾在百度和用友擔任技術經理及技術總監等職務。同時他是技術書籍《這就是搜尋引擎:核心技術詳解》(該書榮獲全國第十二屆優秀圖書獎)、《大數據日知錄:架構與算法》的作者。本文首發於知乎,經作者許可,雷鋒網(公眾號:雷鋒網) AI 科技評論進行轉載。

本部分為下篇。

華山論劍:三大特徵抽取器比較

結合 NLP 領域自身的特點,上面幾個部分分別介紹了 RNN/CNN/Transformer 各自的特性。從上面的介紹,看上去好像三大特徵抽取器在 NLP 領域裡各有所長,推想起來要是把它們拉到 NLP 任務競技場角鬥,一定是互有勝負,各擅勝場吧?

事實究竟如何呢?是三個特徵抽取器三花齊放還是某一個一枝獨秀呢?我們通過一些實驗來說明這個問題。

為了更細緻和公平地做對三者進行比較,我準備從幾個不同的角度來分別進行對比,我原先打算從以下幾個維度來進行分析判斷:句法特徵提取能力;語義特徵提取能力;長距離特徵捕獲能力;任務綜合特徵抽取能力。上面四個角度是從 NLP 的特徵抽取器能力強弱角度來評判的,另外再加入並行計算能力及運行效率,這是從是否方便大規模實用化的角度來看的。

因為目前關於特徵抽取器句法特徵抽取能力方面進行比較的文獻很少,好像只看到一篇文章,結論是 CNN 在句法特徵提取能力要強於 RNN,但是因為是比較早的文章,而且沒有對比 transformer 在句法特徵抽取方面的能力,所以這塊很難單獨比較,於是我就簡化為對以下幾項能力的對比:

語義特徵提取能力;

長距離特徵捕獲能力;

任務綜合特徵抽取能力;

並行計算能力及運行效率

三者在這些維度各自表現如何呢?下面我們分頭進行說明。

語義特徵提取能力


從語義特徵提取能力來說,目前實驗支持如下結論:Transformer 在這方面的能力非常顯著地超過 RNN 和 CNN(在考察語義類能力的任務 WSD 中,Transformer 超過 RNN 和 CNN 大約 4-8 個絕對百分點),RNN 和 CNN 兩者能力差不太多。

長距離特徵捕獲能力


在長距離特徵捕獲能力方面,目前在特定的長距離特徵捕獲能力測試任務中(主語-謂語一致性檢測,比如 we……..are…),實驗支持如下結論:原生 CNN 特徵抽取器在這方面極為顯著地弱於 RNN 和 Transformer,Transformer 微弱優於 RNN 模型 (尤其在主語謂語距離小於 13 時),能力由強到弱排序為 Transformer>RNN>>CNN; 但在比較遠的距離上(主語謂語距離大於 13),RNN 微弱優於 Transformer,所以綜合看,可以認為 Transformer 和 RNN 在這方面能力差不太多,而 CNN 則顯著弱於前兩者。

那麼為什麼 CNN 在捕獲長距離特徵方面這麼弱呢?這個我們在前文講述 CNN 的時候就說過,CNN 解決這個問題是靠堆積深度來獲得覆蓋更長的輸入長度的,所以 CNN 在這方面的表現與卷積核能夠覆蓋的輸入距離最大長度有關係。如果通過增大卷積核的 kernel size,同時加深網絡深度,以此來增加輸入的長度覆蓋。實驗證明這能夠明顯提升 CNN 的 long-range 特徵捕獲能力。但是儘管如此,CNN 在這方面仍然顯著弱於 RNN 和 Transformer。這個問題背後的原因是什麼呢(因為上述主語-謂語一致性任務中,CNN 的深度肯定可以覆蓋 13-25 這個長度了,但是表現還是很弱)?其實這是一個很好的值得探索的點。

對於 Transformer 來說,Multi-head attention 的 head 數量嚴重影響 NLP 任務中 Long-range 特徵捕獲能力:結論是 head 越多越有利於捕獲 long-range 特徵。在上頁 PPT 裡寫明的論文出來之前,有個工作(論文:Tran. The Importance of Being Recurrent for Modeling Hierarchical Structure)的結論和上述結論不一致:它的結論是在」主語-謂語一致性」任務上,Transformer 表現是弱於 LSTM 的。如果綜合這兩篇論文,我們看似得到了相互矛盾的結論,那麼到底誰是正確的呢?Why Self-attention 的論文對此進行了探索,它的結論是:這個差異是由於兩個論文中的實驗中 Transformer 的超參設置不同導致的,其中尤其是 multi-head 的數量,對結果影響嚴重,而如果正確設置一些超參,那麼之前 Trans 的論文結論是不成立的。也就是說,我們目前仍然可以維持下面結論:在遠距離特徵捕獲能力方面,Transformer 和 RNN 能力相近,而 CNN 在這方面則顯著弱於前兩者。

任務綜合特徵抽取能力

上面兩項對比是從特徵抽取的兩個比較重要的單項能力角度來評估的,其實更重要的是在具體任務中引入不同特徵抽取器,然後比較效果差異,以此來綜合評定三者的綜合能力。那麼這樣就引出一個問題:NLP 中的任務很多,哪些任務是最具有代表性的呢?答案是機器翻譯。你會看到很多 NLP 的重要的創新模型都是在機器翻譯任務上提出來的,這背後是有道理的,因為機器翻譯基本上是對 NLP 各項處理能力綜合要求最高的任務之一,要想獲得高質量的翻譯結果,對於兩種語言的詞法,句法,語義,上下文處理能力,長距離特徵捕獲等等更方面都需要考慮進來才行。這是為何看到很多比較工作是在機器翻譯上作出的,這裡給個背後原因的解釋,以避免被質疑任務單一,沒有說服力的問題。當然,我預料到那位「因為吃虧少…. 愛挑刺」的同學會這麼質問我,沒關係,即使你對此提出質疑,我依然能夠拿出證據,為什麼這麼講,請往後看。

那麼在以機器翻譯為代表的綜合特徵抽取能力方面,三個特徵抽取器哪個更好些呢?


先給出一個機器翻譯任務方面的證據,仍然是 why Self attention 論文的結論,對比實驗結果數據參考上圖。在兩個機器翻譯任務中,可以看到,翻譯質量指標 BLEU 證明了如下結論:Transformer 綜合能力要明顯強於 RNN 和 CNN(你要知道,技術發展到現在階段,BLEU 絕對值提升 1 個點是很難的事情),而 RNN 和 CNN 看上去表現基本相當,貌似 CNN 表現略好一些。

你可能覺得一個論文的結論不太能說明問題,那麼我再給出一個證據,不過這個證據只對比了 Transformer 和 RNN,沒帶 CNN 玩,不過關於說服力我相信你不會質疑,實驗對比數據如下:


上面是 GPT 論文的實驗結論,在 8 個不同的 NLP 任務上,在其它條件相同的情況下,只是把特徵抽取器從 Transformer 換成 LSTM,平均下來 8 個任務得分掉了 5 個點以上。這具備足夠說服力嗎?

其實還有其它機器翻譯方面的實驗數據,篇幅原因,不一一列舉了。如果你是個較真的人,實在還想看,那請看下一節,裡面有另外一個例子的數據讓來你服氣。如果歸納一下的話,現在能得出的結論是這樣的:從綜合特徵抽取能力角度衡量,Transformer 顯著強於 RNN 和 CNN,而 RNN 和 CNN 的表現差不太多,如果一定要在這兩者之間比較的話,通常 CNN 的表現要稍微好於 RNN 的效果。

當然,需要強調一點,本部分所說的 RNN 和 CNN 指的是原生的 RNN 和 CNN 模型,就是說你可以在經典的結構上增加 attention,堆疊層次等各種改進,但是不包含對本身結構特別大的變動,就是說支持整容,但是不支持變性。這裡說的原生版本指的是整容版本,我知道你肯定很關心有沒有變性版本的 RNN 和 CNN,我負責任地跟你說,有。你想知道它變性之後是啥樣子?等會你就看到了,有它們的照片給你。

並行計算能力及運算效率

關於三個特徵抽取器的並行計算能力,其實我們在前文分述三個模型的時候都大致提過,在此僅做個歸納,結論如下:

RNN 在並行計算方面有嚴重缺陷,這是它本身的序列依賴特性導致的,所謂成也蕭何敗也蕭何,它的這個線形序列依賴性非常符合解決 NLP 任務,這也是為何 RNN 一引入到 NLP 就很快流行起來的原因,但是也正是這個線形序列依賴特性,導致它在並行計算方面要想獲得質的飛躍,看起來困難重重,近乎是不太可能完成的任務。

而對於 CNN 和 Transformer 來說,因為它們不存在網絡中間狀態不同時間步輸入的依賴關係,所以可以非常方便及自由地做並行計算改造,這個也好理解。

所以歸納一下的話,可以認為並行計算能力由高到低排序如下:Transformer 和 CNN 差不多,都遠遠遠遠強於 RNN。

我們從另外一個角度來看,先拋開並行計算能力的問題,單純地比較一下三個模型的計算效率。可能大家的直觀印象是 Transformer 比較重,比較複雜,計算效率比較低,事實是這樣的嗎?

上圖列出了單層的 Self attention/RNN/CNN 的計算效率,首先要注意:上面列的是 Self attention,不是 Transformer 的 Block,因為 Transformer Block 裡其實包含了好幾層,而不是單層。我們先說 self attention,等會說 Transformer Block 的計算量。

從上圖可以看出,如果是 self attention/CNN/RNN 單層比較計算量的話,三者都包含一個平方項,區別主要是:self attention 的平方項是句子長度,因為每一個單詞都需要和任意一個單詞發生關係來計算 attention,所以包含一個 n 的平方項。而 RNN 和 CNN 的平方項則是 embedding size。那麼既然都包含平方項,怎麼比較三個模型單層的計算量呢?首先容易看出 CNN 計算量是大於 RNN 的,那麼 self attention 如何與其它兩者比較呢。可以這麼考慮:如果句子平均長度 n 大於 embedding size,那麼意味著 Self attention 的計算量要大於 RNN 和 CNN;而如果反過來,就是說如果 embedding size 大於句子平均長度,那麼明顯 RNN 和 CNN 的計算量要大於 self attention 操作。而事實上是怎樣?我們可以想一想,一般正常的句子長度,平均起來也就幾十個單詞吧。而當前常用的 embedding size 從 128 到 512 都常見,所以在大多數任務裡面其實 self attention 計算效率是要高於 RNN 和 CNN 的。

但是,那位因為吃虧吃的少所以喜歡挑刺的同學會繼續質問我:「哥,我想知道的是 Transformer 和 RNN 及 CNN 的計算效率對比,不是 self attention。另外,你能降低你腦袋裡發出的水聲音量嗎?」。嗯,這個質問很合理,我來粗略估算一下,因為 Transformer 包含多層,其中的 skip connection 後的 Add 操作及 LayerNorm 操作不太耗費計算量,我先把它忽略掉,後面的 FFN 操作相對比較耗時,它的時間複雜度應該是 n 乘以 d 的平方。所以如果把 Transformer Block 多層當作一個整體和 RNN 及 CNN 單層對比的話,Transformer Block 計算量肯定是要多於 RNN 和 CNN 的,因為它本身也包含一個 n 乘以 d 的平方,上面列出的 self attention 的時間複雜度就是多出來的計算量。這麼說起來,單個 Transformer Block 計算量大於單層 RNN 和 CNN,沒毛病。

上面考慮的是三者單層的計算量,可以看出結論是:Transformer Block >CNN >RNN。如果是考慮不同的具體模型,會與模型的網絡層深有很大關係,另外還有常見的 attention 操作,所以問題會比較複雜,這裡不具體討論了。

說完非並行情況的三者單層計算量,再說回並行計算的問題。很明顯,對於 Transformer 和 CNN 來說,那個句子長度 n 是可以通過並行計算消掉的,而 RNN 因為序列依賴的問題,那個 n 就消不掉,所以很明顯,把並行計算能力考慮進來,RNN 消不掉的那個 n 就很要命。這只是理論分析,實際中三者計算效率到底如何呢?我們給出一些三者計算效率對比的實驗結論。

論文「Convolutional Sequence to Sequence Learning」比較了 ConvS2S 與 RNN 的計算效率,證明了跟 RNN 相比,CNN 明顯速度具有優勢,在訓練和在線推理方面,CNN 比 RNN 快 9.3 倍到 21 倍。論文「Dissecting Contextual Word Embeddings: Architecture and Representation」提到了 Transformer 和 CNN 訓練速度比雙向 LSTM 快 3 到 5 倍。論文「The Best of Both Worlds: Combining Recent Advances in Neural Machine Translation」給出了 RNN/CNN/Transformer 速度對比實驗,結論是:Transformer Base 速度最快;CNN 速度次之,但是比 Transformer Base 比慢了將近一倍;Transformer Big 速度再次,主要因為它的參數量最大,而吊在車尾最慢的是 RNN 結構。

總而言之,關於三者速度對比方面,目前的主流經驗結論基本如上所述:Transformer Base 最快,CNN 次之,再次 Transformer Big,最慢的是 RNN。RNN 比前兩者慢了 3 倍到幾十倍之間。

綜合排名情況

以上介紹內容是從幾個不同角度來對 RNN/CNN/Transformer 進行對比,綜合這幾個方面的實驗數據,我自己得出的結論是這樣的:單從任務綜合效果方面來說,Transformer 明顯優於 CNN,CNN 略微優於 RNN。速度方面 Transformer 和 CNN 明顯佔優,RNN 在這方面劣勢非常明顯。這兩者再綜合起來,如果我給的排序結果是 Transformer>CNN>RNN,估計沒有什麼問題吧?那位吃虧….. 愛挑刺的同學,你說呢?

從速度和效果折衷的角度看,對於工業界實用化應用,我的感覺在特徵抽取器選擇方面配置 Transformer base 是個較好的選擇。

三者的合流:向 Transformer 靠攏

上文提到了,Transformer 的效果相對原生 RNN 和 CNN 來說有比較明顯的優勢,那麼是否意味著我們可以放棄 RNN 和 CNN 了呢?事實倒也並未如此。我們聰明的科研人員想到了一個巧妙的改造方法,我把它叫做「寄居蟹」策略(就是上文說的「變性」的一種帶有海洋文明氣息的文雅說法)。什麼意思呢?我們知道 Transformer Block 其實不是只有一個構件,而是由 multi-head attention/skip connection/Layer Norm/Feed forward network 等幾個構件組成的一個小系統,如果我們把 RNN 或者 CNN 塞到 Transformer Block 裡會發生什麼事情呢?這就是寄居蟹策略的基本思路。

那麼怎麼把 RNN 和 CNN 塞到 Transformer Block 的肚子裡,讓它們背上重重的殼,從而能夠實現寄居策略呢?


其實很簡單,參考上面兩張 PPT,簡而言之,大的方向就是把 self attention 模塊用雙向 RNN 或者 CNN 替換掉,Transformer Block 的其它構件依然健在。當然這只是說明一個大方向,具體的策略可能有些差異,但是基本思想八九不離十。

那麼如果 RNN 和 CNN 採取這種寄居策略,效果如何呢?他們還爬的動嗎?其實這種改造方法有奇效,能夠極大提升 RNN 和 CNN 的效果。而且目前來看,RNN 或者 CNN 想要趕上 Transformer 的效果,可能還真只有這個辦法了。

我們看看 RNN 寄居到 Transformer 後,效果是如何的。上圖展示了對原生 RNN 不斷進行整容手術,逐步加入 Transformer 的各個構件後的效果。我們從上面的逐步變身過程可以看到,原生 RNN 的效果在不斷穩定提升。但是與土生土長的 Transformer 相比,性能仍然有差距。

類似的,上圖展示了對 CNN 進行不斷改造的過程以及其對應效果。同樣的,性能也有不同幅度的提升。但是也與土家 Transformer 性能存在一些差距。

這說明什麼?我個人意見是:這說明 Transformer 之所以能夠效果這麼好,不僅僅 multi-head attention 在發生作用,而是幾乎所有構件都在共同發揮作用,是一個小小的系統工程。

但是從上面結果看,變性版本 CNN 好像距離 Transformer 真身性能還是比不上,有些數據集合差距甚至還很大,那麼是否意味著這條路也未必走的通呢?Lightweight convolution 和 Dynamic convolutions 給人們帶來一絲曙光,在論文「Pay Less Attention With LightweightI and Dynamic Convolutions」裡提出了上面兩種方法,效果方面基本能夠和 Transformer 真身相當。那它做了什麼能夠達成這一點呢?也是寄居策略。就是用 Lightweight convolution 和 Dynamic convolutions 替換掉 Transformer 中的 Multi-head attention 模塊,其它構件復用了 Transformer 的東西。和原生 CNN 的最主要區別是採用了 Depth-wise separable CNN 以及 softmax-normalization 等優化的 CNN 模型。

而這又說明了什麼呢?我覺得這說明了一點:RNN 和 CNN 的大的出路在於寄生到 Transformer Block 裡,這個原則沒問題,看起來也是他倆的唯一出路。但是,要想效果足夠好,在塞進去的 RNN 和 CNN 上值得花些功夫,需要一些新型的 RNN 和 CNN 模型,以此來配合 Transformer 的其它構件,共同發揮作用。如果走這條路,那麼 RNN 和 CNN 翻身的一天也許還會到來。

儘管如此,我覺得 RNN 這條路仍然不好走,為什麼呢,你要記得 RNN 並行計算能力差這個天生缺陷,即使把它塞到 Transformer Block 裡,別說現在效果還不行,就算哪天真改出了一個效果好的,但是因為它的並行能力,會整體拖慢 Transformer 的運行效率。所以我綜合判斷 RNN 這條路將來也走不太通。

2019 來自未來的消息:總結

很多年前的小學語文課本上有句話,是這麼說的:「張華考上了北京大學;李萍進了中等技術學校;我在百貨公司當售貨員:我們都有光明的前途」。我們小的時候看到這句話,對此深信不疑,但是走到 2019 的今天,估計已經沒有父母願意跟他們的孩子說這句話了,畢竟欺騙孩子是個挺不好的事情。如果套用這句話來說明 NLP 的三大特徵抽取器的前途的話,應該是這樣的:「Transformer 考上了北京大學;CNN 進了中等技術學校,希望有一天能夠考研考進北京大學;RNN 在百貨公司當售貨員:我們都有看似光明的前途。」

我們把上文的所有證據都收集起來進行邏輯推理,可以模仿曹雪芹老師,分別給三位 NLP 界佳麗未來命運寫一句判詞。當然,再次聲明,這是我個人判斷。

進退維谷的 RNN

為什麼說 RNN 進退維谷呢?有幾個原因。

首先,如果靠原生的 RNN(包括 LSTM,GRU 以及引入 Attention 以及堆疊層次等各種你能想到的改進方法,可以一起上),目前很多實驗已經證明效果比起 Transformer 有較大差距,現在看基本沒有迎頭趕上的可能,所以原生的 RNN 從效果來講是處於明顯劣勢的。

其次,原生的 RNN 還有一個致命的問題:並行計算能力受限制太嚴重。想要大規模實用化應用?目前看希望渺茫。我們前面說過,決定了 RNN 本身的根本特質是:T 時刻隱層節點對前向輸入及中間計算結果的序列依賴,因為它要線形序列收集前面的信息,這是 RNN 之所以是 RNN 的最主要特點。正是它的這個根本特質,使得 RNN 的並行計算能力想要獲得根本解決基本陷入了一個兩難的境地:要麼仍然保持 RNN 序列依賴的根本特性,這樣不論怎麼改造,因為這個根本還在,所以 RNN 依舊是 RNN,所謂「我就是我,是不一樣的煙火」,但是如果這樣,那麼其並行能力基本無法有力發揮,天花板很低;當然除此外,還有另外一條路可走,就是把這種序列依賴關係打掉,如果這樣,那麼這種打掉序列依賴關係的模型雖然看上去仍然保留了部分 RNN 整形前的樣貌,其實它骨子裡已經是另外一個人了,這已經不是你記憶中的 RNN 了。就是說,對 RNN 來說,要麼就認命接受慢的事實,躲進小樓成一統,管他春夏與秋冬,僅僅是學術界用來發表論文的一種載體,不考慮大規模實用化的問題。要麼就徹底改頭換面變成另外一個人,如果真走到這一步,我想問的是:你被別人稱為高效版本的 RNN,你自己好意思答應嗎?這就是 RNN 面臨的兩難境地。

再次,假設我們再樂觀一點,把對 RNN 的改造方向定位為將 RNN 改造成類似 Transformer 的結構這種思路算進來:無非就是在 Transformer 的 Block 裡,把某些部件,當然最可行的是把 Multi-head self attention 部件換成 RNN。我們就算退一步講,且將這種大幅結構改造的模型也算做是 RNN 模型吧。即使這樣,已經把自己整形成長得很像 Transformer 了,RNN 依然面臨上述原生 RNN 所面臨的同樣兩個困境:一方面即使這種連變性削骨都上的大幅度整容版本的 RNN,效果雖然有明顯提升,但是仍然比不過 Transformer;另外,一旦引入 RNN 構件,同樣會觸發 Transformer 結構的並行計算能力問題。所以,目前 Transformer 發動機看上去有點帶不動 RNN 這個隊友。

綜合以上幾個因素,我們可以看出,RNN 目前處於進退兩難的地步,我覺得它被其它模型替換掉只是時間問題,而且好像留給它的時間不多了。當然,這是我個人意見。我說這番話的時候,你是不是又聽到了水聲?

我看到網上很多人還在推 RNN 說:其實還是 RNN 好用。我覺得這其實是一種錯覺。之所以會產生這個錯覺,原因來自兩個方面:一方面是因為 RNN 發展歷史長,所以有大量經過優化的 RNN 框架可用,這對技術選型選擇困難症患者來說是個福音,因為你隨手選一個知名度還可以的估計效果就不錯,包括對一些數據集的前人摸索出的超參數或者調參經驗;而 Transformer 因為歷史太短,所以各種高效的語言版本的優秀框架還少,選擇不多。另外,其實我們對 Transformer 為何有效目前還不是特別清楚,包括相關的各種數據集合上的調參經驗公開的也少,所以會覺得調起來比較費勁。隨著框架越來越多,以及經驗分享越來越充分,這個不再會是問題。這是一方面。另外一方面,很多人反饋對於小數據集 RNN 更好用,這固然跟 Transformer 的參數量比較多有關係,但是也不是沒有解決辦法,一種方式是把 Block 數目降低,減少參數量;第二種辦法是引入 Bert 兩階段訓練模型,那麼對於小數據集合來說會極大緩解效果問題。所以綜合這兩方面看,RNN 貌似在某些場合還有優勢,但是這些所謂的優勢是很脆弱的,這其實反映的是我們對 Transformer 整體經驗不足的事實,隨著經驗越來越豐富,RNN 被 Transformer 取代基本不會有什麼疑問。

一希尚存的 CNN

CNN 在 14 年左右在 NLP 界剛出道的時候,貌似跟 RNN 比起來表現並不算太好,算是落後生,但是用發展的眼光看,未來的處境反而看上去比 RNN 的狀態還要佔優一些。之所以造成這個奇怪現象,最主要的原因有兩個:一個是因為 CNN 的天生自帶的高並行計算能力,這對於延長它的生命力發揮了很大作用。這就決定了與 Transformer 比起來,它並不存在無法克服的困難,所以仍然有希望;第二,早期的 CNN 做不好 NLP 的一個很大原因是網絡深度做不起來,隨著不斷借鑑圖像處理的新型 CNN 模型的構造經驗,以及一些深度網絡的優化 trick,CNN 在 NLP 領域裡的深度逐步能做起來了。而既然深度能做起來,那麼本來 CNN 做 NLP 天然的一個缺陷:無法有效捕獲長距離特徵的問題,就得到了極大緩解。目前看可以靠堆深度或者結合 dilated CNN 來一定程度上解決這個問題,雖然還不夠好,但是仍然是那句話,希望還在。

但是,上面所說只是從道理分析角度來講 CNN 的希望所在,話分兩頭,我們說回來,目前也有很多實驗證明了原生的 CNN 在很多方面仍然是比不過 Transformer 的,典型的還是長距離特徵捕獲能力方面,原生的 CNN 版本模型仍然極為顯著地弱於 RNN 和 Transformer,而這點在 NLP 界算是比較嚴重的缺陷。好,你可以說:那我們把 CNN 引到 Transformer 結構裡,比如代替掉 Self attention,這樣和 Transformer 還有一戰吧?嗯,是的,目前看貌似只有這條路是能走的通的,引入 depth separate CNN 可以達到和 Transformer 接近的效果。但是,我想問的是:你確認長成這樣的 CNN,就是把 CNN 塞到 Transformer Block 的肚子裡,你確認它的親朋好友還能認出它嗎?

當然,我之所以寫 CNN 一希尚存,是因為我覺得把 CNN 塞到 Transformer 肚子裡這種方案,對於篇章級別的 NLP 任務來說,跟採取 self attention 作為發動機的 Transformer 方案對比起來,是具有極大優勢的領域,也是適合它的戰場,後面我估計會出現一些這方面的論文。為什麼這麼講?原因下面會說。

穩操勝券的 transformer

我們在分析未來 NLP 的三大特徵抽取器哪個會勝出,我認為,起碼根據目前的信息來看,其實 Transformer 在很多戰場已經贏了,在這些場地,它未來還會繼續贏。為什麼呢?上面不是說了嗎,原生的 RNN 和 CNN,總有一些方面顯著弱於 Transformer(並行計算能力或者效果,或者兩者同時都比 Transformer 弱)。那麼他們未來的希望,目前大家都寄托在把 RNN 和 CNN 寄生在 Transformer Block 裡。RNN 不用說了,上面說過它的進退維艱的現狀。單說 CNN 吧,還是上一部分的那句話,我想問的是:你確認長成這樣的 CNN,就是把 CNN 塞到 Transformer Block 的肚子裡,你確認它的親朋還能認出它嗎?

目前能夠和 Transformer 一戰的 CNN 模型,基本都已經長成 Transformer 的模樣了。而這又說明了什麼呢?難道這是 CNN 要能戰勝 Transformer 的跡象嗎?這是一道留給您的思考題和辯論題。當然,我不參加辯論。

Transformer 作為一個新模型,並不是完美無缺的。它也有明顯的缺點:首先,對於長輸入的任務,典型的比如篇章級別的任務(例如文本摘要),因為任務的輸入太長,Transformer 會有巨大的計算複雜度,導致速度會急劇變慢。所以估計短期內這些領地還能是 RNN 或者長成 Transformer 模樣的 CNN 的天下(其實目前他倆這塊做得也不好),也是目前看兩者的希望所在,尤其是 CNN 模型,希望更大一些。但是是否 Transformer 針對長輸入就束手無策,沒有解決辦法呢?我覺得其實並不是,比如拍腦袋一想,就能想到一些方法,雖然看上去有點醜陋。比如可以把長輸入切斷分成 K 份,強制把長輸入切短,再套上 Transformer 作為特徵抽取器,高層可以用 RNN 或者另外一層 Transformer 來接力,形成 Transformer 的層級結構,這樣可以把 n 平方的計算量極大減少。當然,這個方案不優雅,這個我承認。但是我提示你一下:這個方向是個值得投入精力的好方向,你留意一下我這句話,也許有意想不到的收穫。(註:上面這段話是我之前早已寫好的,結果今天(1 月 12 日)看見媒體號在炒作:「Transforme-XL,速度提升 1800 倍」云云。看了新聞,我找來 Transformer-XL 論文看了一下,發現它解決的就是輸入特別長的問題,方法呢其實大思路和上面說的內容差不太多。說這麼多的意思是:我並不想刪除上面內容,為避免發出來後,那位「愛挑刺」同學說我拷貝別人思路沒引用。我決定還是不改上面的說法,因為這個點子實在是太容易想到的點子,我相信你也能想到。)除了這個缺點,Transformer 整體結構確實顯得複雜了一些,如何更深刻認識它的作用機理,然後進一步簡化它,這也是一個好的探索方向,這句話也請留意。還有,上面在做語義特徵抽取能力比較時,結論是對於距離遠與 13 的長距離特徵,Transformer 性能弱於 RNN,說實話,這點是比較出乎我意料的,因為 Transformer 通過 Self attention 使得遠距離特徵直接發生關係,按理說距離不應該成為它的問題,但是效果竟然不如 RNN,這背後的原因是什麼呢?這也是很有價值的一個探索點。

我預感到我可能又講多了,能看到最後不容易,上面幾段話算是送給有耐心的同學的禮物,其它不多講了,就此別過,請忽略你聽到的譁譁的水聲。

(完)

點擊查看本文上篇內容

雷鋒網 AI 科技評論經作者許可轉載。

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • NLP三大特徵提取器全梳理:RNN vs CNN vs Transformer
    機器之心原創編輯:陳萍在進行 NLP 模型訓練前,請先選擇一個好的特徵提取器。在上一篇文章中我們介紹了自然語言處理的基礎問題——文本預處理的常用步驟。本文將進階講述特徵提取方面的相關算法。因為 t 時刻的計算依賴 t-1 時刻的隱層計算結果,而 t-1 時刻的結果又依賴於 t-2 時刻的隱層計算結果……,因此用 RNN 進行自然語言處理時,只能逐詞進行,無法執行並行運算。為了解決上述問題,後來研究人員引入了 LSTM 和 GRU,獲得了很好的效果。
  • 模型壓縮95%,MIT韓松等人提出新型Lite Transformer
    雖然推出還不到 3 年,Transformer 已成為自然語言處理(NLP)領域裡不可或缺的一環。然而這樣流行的算法卻需要極高的算力才能實現足夠的性能,這對於受到算力和電池嚴格限制的移動端來說有些力不從心。
  • 自然語言處理必讀:5本平衡理論與實踐的書籍
    為了幫助你解決問題,我幫你選擇5本關於自然語言處理的書,不像其他的書單,除了第一本之外,這些書都不是免費的,但事實證明它們是值得投資的,希望能對大家有所幫助。1.應用Python進行自然語言處理(Natural Language Processing with Python)本書由Steven Bird, Ewan Klein 和 Edward Loper編寫,你可以從Python系統的角度學習自然語言處理的實用基礎知識,更適合初學者。
  • NLP攜手Transformer跨界計算機視覺,DETR:目標檢測新範式
    論文 1:End-to-End Object Detection with Transformers由於 Transformer 廣泛應用於序列數據的處理任務,尤其是在語言建模、機器翻譯等任務中表現出良好的性能,那麼在 NLP 領域表現良好的模型是否可以用到視覺領域?來自 Facebook AI 的研究者實現了這一功能。
  • 贈書| 新手指南——如何通過HuggingFace Transformer整合表格數據
    截至2020年9月,在通用語言理解評估(General Language Understanding Evaluation,GLUE)基準測試中表現最好的模型全部都是BERT transformer-based 模型。如今,我們常常會遇到這樣的情形:我們手中有了表格特徵信息和非結構化文本數據,然後發現,如果將這些表格數據應用到模型中的話,可以進一步提高模型性能。
  • Transformer靠什麼"基因",得以闖入CV界秒殺CNN?
    讀完這篇文章之後,你將能知道:  為什麼Transformers模型在NLP自然語言處理任務中能夠力壓群雄,變成SOTA模型的必備組件之一。  Transformers模型的計算原理。  為什麼說Transformers是對CNN的當頭棒喝,Transformers是怎麼針對CNN的各種局限性進行補全的。
  • 國內自然語言處理(NLP)研究組
    /natural-language-computing/www.microsoft.com百度自然語言處理百度自然語言處理 - 理解語言,擁有智能,改變世界nlp.baidu.com阿里巴巴達摩院語言技術實驗室
  • NLP/CV模型跨界,視覺Transformer趕超CNN?
    Transformer 架構早已在自然語言處理任務中得到廣泛應用,但在計算機視覺領域中仍然受到限制。在計算機視覺領域,注意力要麼與卷積網絡結合使用,要麼用來代替卷積網絡的某些組件,同時保持其整體架構不變。該研究表明,對 CNN 的依賴不是必需的,當直接應用於圖像塊序列時,transformer 也能很好地執行圖像分類任務。
  • PyTorch-Transformers:最先進的自然語言處理庫(附帶python代碼)
    .」 – Sebastian Ruder想像一下我們有能力構建支持谷歌翻譯的自然語言處理(NLP)模型,並且在Python中僅需幾行代碼來完成,這聽起來是不是讓人非常興奮。而現在我們就可以坐在自己的機器前實現這個了!藉助於被HuggingFace稱為PyTorch-Transformers目前最先進的NLP工具。
  • 華為北大等聯手打造的Transformer竟在CV領域超過了CNN
    但其實,這個在各種自然語言處理任務中「混跡」,強大的無監督預訓練模型,現在已經在「計算機視覺」的道路上越走越遠了。 這不最近,北京大學,聯合華為諾亞方舟實驗室、雪梨大學、鵬城實驗室提出了一個圖像處理Transformer(IPT)。
  • 人工智慧之自然語言處理初探
    編輯導讀:自然語言處理是人工智慧的一個細分領域,是一個龐大的系統的工程。本文將從自然語言處理的簡介、句法分析、發展現狀、話語分割、知識體系、指代消解六個方面展開分析,希望對你有幫助。
  • 自然語言處理學術會議AACL線上召開 聚焦亞太地區NLP技術進展
    同時,按照ACL年會慣例,此次亞太分會年會與第十屆國際自然語言處理聯席會議(International Joint Conference on Natural Language Processing, IJCNLP)聯合召開。會議匯集來自學界、業界的百餘位自然語言處理領域的專家大咖,圍繞語義表示與理解、知識圖譜、對話系統、信息抽取與文本挖掘、機器翻譯等前沿技術方向進行了深入交流與探討。
  • 自然語言處理之詞性標註
    從組合和聚合關係來說,一個詞類是指:在一個語言中,眾多具有相同句法功能、能在同樣的組合位置中出現的詞,聚合在一起形成的範疇。 詞性是語言學中的術語,是最普遍的語法的聚合。它是指在語言中以詞本身的特點(語法特徵、句法功能、形態變化等)、兼顧詞彙意義等對詞語進行劃分分類的依據,詞類即根據詞性進行劃分後的結果。
  • 適用於特殊類型自然語言分類的自適應特徵譜神經網絡
    1 引言 文本分類問題是自然語言處理領域一個十分常見的問題,文本分類應用非常廣泛,例如輿情分析、影評分析、新聞情感分析、新聞內容分類、垃圾郵件過濾、敏感信息自動屏蔽、社交軟體交流中對某句話的情感趨勢分析,以及購物網站中的「好評度」評估。
  • 熱門的模型跨界,Transformer、GPT做CV任務一文大盤點
    原創 Synced 機器之心機器之心原創作者:陳萍可能大家心裡都有一種錯誤認知,做自然語言處理任務的模型不能夠用來進行計算機視覺任務。更為具體的 DETR 架構如下:上圖給出了 DETR 中使用 transformer 的詳細說明,並在每個注意力層傳遞了位置編碼。來自 CNN 主幹的圖像特徵通過了 transformer 編碼器,並將空間位置編碼與添加到查詢和鍵處的空間編碼一起傳遞。
  • 從限定詞開始 - 詞性識別在人工智慧自然語言處理中的不足與改進
    詞性識別在人工智慧的自然語言處理領域具有極其重要的意義,可以說是更深層次分析和處理的主要基礎。* 自然語言處理:指的是在計算機和人工智慧領域中,利用電腦或人工智慧神經網絡來對人類語言進行理解、分析和其他進一步處理的一門科學。
  • 華為北大等聯手打造的Transformer竟在CV領域超過了CNN:多項底層...
    但其實,這個在各種自然語言處理任務中「混跡」,強大的無監督預訓練模型,現在已經在「計算機視覺」的道路上越走越遠了。這不最近,北京大學,聯合華為諾亞方舟實驗室、雪梨大學、鵬城實驗室提出了一個圖像處理Transformer(IPT)。它是一種處理底層視覺任務(如降噪、超分、去雨)的全新預訓練模型。
  • 環球網「報名大廳」:如何用深度學習做自然語言處理?安博特邀專家...
    自然語言處理(Natural LanguageProcessing, 簡稱NLP)是當前人工智慧方向最熱門的研究領域之一,其旨在賦予計算機理解文字、詞彙、句子、語段,以及文章的能力。在深度學習技術引入自然語言處理之前,自然語言處理所使用的數學工具跟語音、圖像、視頻處理所使用的數學工具截然不同,這些不同模態之間的信息流動存在巨大的壁壘。
  • 深2.5至4倍,參數和計算量卻更少,DeLighT Transformer是怎麼做到的?
    由於這些變換本質上是局部的,因此 DExTra 利用特徵 shuffling(類似於卷積網絡中的通道 shuffling)在不同組之間共享信息。這種寬且深的表示有助於用單頭注意力和輕量級前饋層替換 transformer 中的多頭注意力和前饋層,從而減少網絡參數量。重要的是,與 transformer 不同,DExTra 模塊可以獨立於輸入大小進行縮放。
  • CQC發表量子自然語言處理基礎科學論文
    IBM量子計算機實驗中利用的自然語言處理「本徵量子」屬性 英國劍橋2020年12月11日 -- Cambridge Quantum Computing(劍橋量子計算公司,CQC)今日宣布,其在「意義感知」量子自然語言處理(QNLP)取得的早期發展基礎上,確立QNLP是本徵量子,相對傳統計算機具有近期優勢。