當前位置:
首頁 > 新聞 > 放棄幻想,全面擁抱 Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較(下篇)

放棄幻想,全面擁抱 Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較(下篇)

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

本部分為下篇。

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

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

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

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

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


  • 語義特徵提取能力;

  • 長距離特徵捕獲能力;

  • 任務綜合特徵抽取能力;

  • 並行計算能力及運行效率

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

語義特徵提取能力

放棄幻想,全面擁抱 Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較(下篇)

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

長距離特徵捕獲能力

放棄幻想,全面擁抱 Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較(下篇)

在長距離特徵捕獲能力方面,目前在特定的長距離特徵捕獲能力測試任務中(主語-謂語一致性檢測,比如 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 各項處理能力綜合要求最高的任務之一,要想獲得高質量的翻譯結果,對於兩種語言的詞法,句法,語義,上下文處理能力,長距離特徵捕獲等等更方面都需要考慮進來才行。這是為何看到很多比較工作是在機器翻譯上作出的,這裡給個背後原因的解釋,以避免被質疑任務單一,沒有說服力的問題。當然,我預料到那位「因為吃虧少…. 愛挑刺」的同學會這麼質問我,沒關係,即使你對此提出質疑,我依然能夠拿出證據,為什麼這麼講,請往後看。

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

放棄幻想,全面擁抱 Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較(下篇)

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

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

放棄幻想,全面擁抱 Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較(下篇)

上面是 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 比較重,比較複雜,計算效率比較低,事實是這樣的嗎?

放棄幻想,全面擁抱 Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較(下篇)

上圖列出了單層的 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 的肚子里,讓它們背上重重的殼,從而能夠實現寄居策略呢?

放棄幻想,全面擁抱 Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較(下篇)

放棄幻想,全面擁抱 Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較(下篇)

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

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

放棄幻想,全面擁抱 Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較(下篇)

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

放棄幻想,全面擁抱 Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較(下篇)

類似的,上圖展示了對 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 科技評論經作者許可轉載。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

金融風控的難題怎麼解?這裡有三份大咖的「答卷」
專訪360副總裁郭愛娣,科技品牌如何有溫度地溝通「安全感」?

TAG:雷鋒網 |