我們一開始認(rèn)為,時序問題(如語言、語音等等)天生就是 RNN 的地盤。然而現(xiàn)在這一觀點要成為過去式了。時間卷積網(wǎng)絡(luò)(Temporal Convolutional Nets, TCNs)作為 CNN 家族中的一員健將,擁有許多新特性,如今已經(jīng)在諸多主要應(yīng)用領(lǐng)域中擊敗了 RNN。看起來 RNN 可能要成為歷史了。
也就是從 2014、15 年起,我們基于深度神經(jīng)網(wǎng)絡(luò)的應(yīng)用就已經(jīng)在文本和語音識別領(lǐng)域達(dá)到 95% 的準(zhǔn)確率,可以用來開發(fā)新一代的聊天機(jī)器人、個人助理和即時翻譯系統(tǒng)等。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Nets, CNNs)是圖像和視頻識別領(lǐng)域公認(rèn)的主力軍,而循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Nets, RNNs)在自然語言處理領(lǐng)域的地位與其是相似的。
但二者的一個主要不同是,CNN 可以識別靜態(tài)圖像(或以幀分割的視頻)中的特征,而 RNN 在文本和語音方面表現(xiàn)出色,因為這類問題屬于序列或時間依賴問題。也就是說,待預(yù)測的后一個字符或單詞依賴于前面的(從左到右)字符或單詞,因此引入時間的概念,進(jìn)而考慮到序列。
實際上,RNN 在所有的序列問題上都有良好表現(xiàn),包括語音 / 文本識別、機(jī)器翻譯、手寫體識別、序列數(shù)據(jù)分析(預(yù)測),甚至不同配置下的自動編碼生成等等。
在很短的一段時期里,RNN 的改進(jìn)版本大行其道,其中包括 LSTM(long short term memory,長短期記憶網(wǎng)絡(luò))和 GRU(gated recurring units,門循環(huán)單元)。這二者都改進(jìn)了 RNN 的記憶范圍,令數(shù)據(jù)可以將距離其很遠(yuǎn)的文本信息利用起來。
解決“才怪”問題
當(dāng) RNN 從左到右按順序讀取字符時,上下文就成了一個重要問題。比如,對一條評論進(jìn)行情感分析時,剛開始的幾句話可能是正面的(例如,食物好,氣氛好)但以負(fù)面評論結(jié)束(如服務(wù)差,價格高),最后整條評論實際上是負(fù)面的。這其實在邏輯上等同于“才怪”的玩笑:“這個領(lǐng)帶看著不錯……才怪!”
這個問題的解決方案是使用兩個 LSTM 編碼器,同時從兩個方向讀取文本(即雙向編碼器)。這相當(dāng)于在現(xiàn)在掌握了(文本的)未來信息。這很大程度上解決了問題。精度確實提高了。
Facebook 和 Google 遭遇的一個問題
早些年,當(dāng) Facebook 和 Google 發(fā)布各自的自動語言翻譯系統(tǒng)時,他們意識到了一個問題——翻譯耗時太長了。
這實際上是 RNN 在內(nèi)部設(shè)計上存在的一個問題。由于網(wǎng)絡(luò)一次只讀取、解析輸入文本中的一個單詞(或字符),深度神經(jīng)網(wǎng)絡(luò)必須等前一個單詞處理完,才能進(jìn)行下一個單詞的處理。
這意味著 RNN 不能像 CNN 那樣進(jìn)行大規(guī)模并行處理(massive parallel processing,MPP),特別是在 RNN/LSTM 對文本進(jìn)行雙向處理時。
這也意味著 RNN 極度地計算密集,因為在整個任務(wù)運(yùn)行完成之前,必須保存所有的中間結(jié)果。
2017 年初,Google 和 Facebook 針對該問題提出了相似的解決方案——在機(jī)器翻譯系統(tǒng)中使用 CNN,以便將大規(guī)模并行處理的優(yōu)勢發(fā)揮出來。在 CNN 中,計算不依賴于之前時間的信息,因此每個計算都是獨立的,可以并行起來。
Google 的解決方案叫做 ByteNet,而 Facebook 的稱為 FairSeq(這是用 Facebook 內(nèi)部的人工智能研究團(tuán)隊 FAIR 來命名的)。FairSeq 的代碼已發(fā)布至 GitHub。
Facebook 稱他們的 FairSeq 網(wǎng)絡(luò)的運(yùn)行速度比基本的 RNN 快 9 倍。
基本工作原理
CNN 在處理圖像時,將圖像看作一個二維的“塊”(高度和寬度);遷移到文本處理上,就可以將文本看作一個一維對象(高度 1 個單位,長度 n 個單位)。
但 RNN 不能直接預(yù)定義對象長度,而 CNN 需要長度信息。因此,要使用 CNN,我們必須不斷增加層數(shù),直到整個感受野都被覆蓋為止。這種做法會讓 CNN 非常深,但是得益于大規(guī)模并行處理的優(yōu)勢,無論網(wǎng)絡(luò)多深,都可以進(jìn)行并行處理,節(jié)省大量時間。
特殊結(jié)構(gòu):選通 + 跳躍 = 注意力
當(dāng)然,具體的解決方案不會像上面所說的那樣簡單。Google 和 Facebook 還向網(wǎng)絡(luò)中添加了一個特殊結(jié)構(gòu):“注意力(Attention)”函數(shù)。
最初的注意力函數(shù)是去年由 Google Brain 和多倫多大學(xué)的研究者們提出的,命名為變換器(Transformer)。
原論文鏈接:
https://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf。
當(dāng)時,F(xiàn)acebook 和 Google 使用的函數(shù)幾乎一模一樣,因此該函數(shù)備受關(guān)注,被稱為“注意力”函數(shù)。該函數(shù)有兩個獨特的特征。
第一個特征被 Facebook 稱為“多跳躍”。和傳統(tǒng) RNN 方法的每個句子只“看”一次不同,多跳躍讓系統(tǒng)可以“瞥”一個句子“好多眼”。這種行為和人工翻譯更相似。
每“一瞥”可能會關(guān)注某個名詞或動詞,而這些詞并不一定是一個序列,因此在每一次迭代中可以更深入地理解其含義。每“瞥”之間可能是獨立的,也可能依賴于前面的“瞥”,然后去關(guān)注相關(guān)的形容詞、副詞或助動詞等。
上圖是 Facebook 給出的一個法英翻譯的例子,展示了第一次迭代的過程。該次迭代編碼了每一個法語單詞,然后用“多跳躍”的方法選擇最合適的英文翻譯。
第二個特征是選通(即門控制),用來控制各隱藏層之間的信息流。在上下文理解過程中,門通過對 CNN 的尺度控制,來判斷哪些信息能更好地預(yù)測下一個單詞。
不只是機(jī)器翻譯——時間卷積網(wǎng)絡(luò)(TCN)
至 2017 年中旬,F(xiàn)acebook 和 Google 已經(jīng)通過使用 CNN 和注意力函數(shù),完全解決了機(jī)器翻譯的時間效率問題。而更重要的一個問題是,這種技術(shù)大有用武之地,不能將其埋沒在加速機(jī)器翻譯的小小任務(wù)中。我們能否將其推廣到所有適用于 RNN 的問題?答案是,當(dāng)然可以。
2017 年,相關(guān)的研究發(fā)表了很多;其中有些幾乎是和 Facebook、Google 同時發(fā)表的。其中一個敘述比較全面的論文是 Shaojie Bai、J. Zico Kolter 和 Vladlen Koltun 發(fā)表的“An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling”。
原文鏈接:https://arxiv.org/pdf/1803.01271.pdf。
有些同仁將這種新架構(gòu)命名為時間卷積網(wǎng)絡(luò)。當(dāng)然隨著工業(yè)上的應(yīng)用,這個名稱有可能會被更改。
上述論文所做的工作是在 11 個不同的、非語言翻譯類的工業(yè)標(biāo)準(zhǔn) RNN 問題上,將 TCN 與 RNN、LSTM、GRU 進(jìn)行了直接比較。
研究的結(jié)論是:TCN 在其中的 9 個問題中,不僅速度更快,且精度更高;在 1 個問題中與 GRU 打了平手(下表中的粗體文字代表精度最高項。圖片截取自原論文)。
TCN 優(yōu)缺點
Shaojie Bai、J. Zico Kolter 和 Vladlen Koltun 還給出了下面這一實用的列表,列舉了 TCN 的優(yōu)缺點。
速度很重要。更快的網(wǎng)絡(luò)能使反饋環(huán)更短。由于在 TCN 中可以進(jìn)行大規(guī)模并行處理,網(wǎng)絡(luò)訓(xùn)練和驗證的時間都會變短。
TCN 為改變感受野大小提供了更多靈活性,主要是通過堆疊更多的卷積層、使用更大的膨脹系數(shù)及增大濾波器大小。這些操作可以更好地控制模型的記憶長短。
TCN 的反向傳播路徑和序列的時間方向不同。這避免了 RNN 中經(jīng)常出現(xiàn)的梯度爆炸或梯度消失問題。
訓(xùn)練時需要的內(nèi)存更少,尤其是對于長輸入序列。
然而,作者指出,TCN 在遷移學(xué)習(xí)方面可能沒有 CNN 的適應(yīng)能力那么強(qiáng)。這是因為在不同的領(lǐng)域,模型預(yù)測所需要的歷史信息量可能是不同的。因此,在將一個模型從一個對記憶信息需求量少的問題遷移到一個需要更長記憶的問題上時,TCN 可能會表現(xiàn)得很差,因為其感受野不夠大。
進(jìn)一步考慮TCN 已經(jīng)被應(yīng)用在很多重要領(lǐng)域,也獲得了極大成功,甚至幾乎可以解決一切序列問題。因此,我們需要重新考慮我們之前的看法。序列問題不再是 RNN 的專屬領(lǐng)域,而 TCN 應(yīng)該成為我們未來項目的優(yōu)先選項。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4776瀏覽量
100948 -
cnn
+關(guān)注
關(guān)注
3文章
353瀏覽量
22265
原文標(biāo)題:時間卷積網(wǎng)絡(luò)(TCN)在 NLP 多領(lǐng)域發(fā)光,RNN 或?qū)]落
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論