也就是從 201四、15 年起,咱們基於深度神經網絡的應用就已經在文本和語音識別領域達到 95% 的準確率,能夠用來開發新一代的聊天機器人、我的助理和即時翻譯系統等。網絡
卷積神經網絡(Convolutional Neural Nets, CNNs)是圖像和視頻識別領域公認的主力軍,而循環神經網絡(Recurrent Neural Nets, RNNs)在天然語言處理領域的地位與其是類似的。編碼
但兩者的一個主要不一樣是,CNN 能夠識別靜態圖像(或以幀分割的視頻)中的特徵,而 RNN 在文本和語音方面表現出色,由於這類問題屬於序列或時間依賴問題。也就是說,待預測的後一個字符或單詞依賴於前面的(從左到右)字符或單詞,所以引入時間的概念,進而考慮到序列。翻譯
實際上,RNN 在全部的序列問題上都有良好表現,包括語音 / 文本識別、機器翻譯、手寫體識別、序列數據分析(預測),甚至不一樣配置下的自動編碼生成等等。設計
在很短的一段時期裏,RNN 的改進版本大行其道,其中包括 LSTM(long short term memory,長短時間記憶網絡)和 GRU(gated recurring units,門循環單元)。這兩者都改進了 RNN 的記憶範圍,令數據能夠將距離其很遠的文本信息利用起來。視頻
解決「纔怪」問題blog
當 RNN 從左到右按順序讀取字符時,上下文就成了一個重要問題。好比,對一條評論進行情感分析時,剛開始的幾句話多是正面的(例如,食物好,氣氛好)但以負面評論結束(如服務差,價格高),最後整條評論其實是負面的。這其實在邏輯上等同於「纔怪」的玩笑:「這個領帶看着不錯……纔怪!」開發
這個問題的解決方案是使用兩個 LSTM 編碼器,同時從兩個方向讀取文本(即雙向編碼器)。這至關於在如今掌握了(文本的)將來信息。這很大程度上解決了問題。精度確實提升了。數據分析
Facebook 和 Google 遭遇的一個問題it
早些年,當 Facebook 和 Google 發佈各自的自動語言翻譯系統時,他們意識到了一個問題——翻譯耗時太長了。io
這其實是 RNN 在內部設計上存在的一個問題。因爲網絡一次只讀取、解析輸入文本中的一個單詞(或字符),深度神經網絡必須等前一個單詞處理完,才能進行下一個單詞的處理。
這意味着 RNN 不能像 CNN 那樣進行大規模並行處理(massive parallel processing,MPP),特別是在 RNN/LSTM 對文本進行雙向處理時。
這也意味着 RNN 極度地計算密集,由於在整個任務運行完成以前,必須保存全部的中間結果。
2017 年初,Google 和 Facebook 針對該問題提出了類似的解決方案——在機器翻譯系統中使用 CNN,以便將大規模並行處理的優點發揮出來。在 CNN 中,計算不依賴於以前時間的信息,所以每一個計算都是獨立的,能夠並行起來。