一文看盡深度學習RNN:為啥就它適合語音識別、NLP與機器翻譯?

AI科技大本營發表於2017-07-28

本文是機器學習大牛Jason Brownlee系統介紹RNN的文章,他在文中詳細對比了LSTM、GRU與NTM三大主流架構在深度學習上的工作原理及各自特性。讀過本文,你就能輕鬆GET迴圈神經網路在語音識別、自然語言處理與機器翻譯等當前技術挑戰上脫穎而出的種種原因。


作者 | Jason Brownlee

翻譯 | AI科技大本營(rgznai100)

參與 | reason_W


迴圈神經網路(RNN)是一種人造神經網路,它通過賦予網路圖附加權重來建立迴圈機制,以維持內部的狀態。

神經網路擁有“狀態”以後,便能在序列預測中明確地學習並利用上下文資訊,如順序或時間成分。

本文將一次性帶你瞭解RNN在深度學習中的各種應用。

讀完之後,你應該能弄懂:

  • 最先進的RNN是如何進行深度學習任務的,如LSTM(長短時記憶網路)、GRU(門控迴圈單元)與NTM(神經圖靈機)?

  • 最先進的RNN同人工神經網路中更廣泛的遞迴研究間的具體關係如何?

  • 為什麼RNN能在一系列有挑戰的問題上表現如此出色?

我們不可能面面俱到,把所有的迴圈神經網路細節都講一遍。因而,我們要把重點放在用於深度學習的迴圈神經網路上(LSTM,GRU和NTM),以及理解它們相關的必要背景知識。

讓我們進入正題。

一文看盡深度學習RNN:為啥就它適合語音識別、NLP與機器翻譯?

迴圈神經網路演算法深度學習之旅 Photo by Santiago Medem,權利保留。

概覽

我們首先來了解一下迴圈神經網路的研究背景。

接下來,我們會仔細研究LSTM,GRU和NTM在深度學習中的應用。

最後,我們還要了解一些同RNN用於深度學習相關的高階話題。

  • 迴圈神經網路

    • 完全遞迴網路

    • 結構遞迴神經網路

    • 神經歷史壓縮機

  • 長短期記憶網路(LSTM)

  • 門控迴圈單元神經網路

  • 神經圖靈機


迴圈神經網路

首先來了解一下RNN的研究背景。

普遍的看法是,迴圈在拓撲上賦予網路以記憶的特性。

但還有一種理解RNN的更好角度:將其看作訓練集包含了當前訓練樣本的一組輸入樣本。這就比較合乎“常規”了,比如一個傳統的多層感知機。

X(i)->y(i)

但將上一組樣本中的一組補充到訓練樣本中,則是“非常規”的。比如迴圈神經網路。

[X(i-1),X(i)]->y(i)

跟所有前饋網路的正規化一樣,這裡的問題是如何將輸入層連線到輸出層,包括反饋啟用,然後訓練網路的結構以令其收斂。

現在讓我們先從簡單的概念開始,來了解一下不同型別的迴圈神經網路。

完全遞迴網路

這個網路保留了多層感知器的層狀拓撲結構,但是網路中的每個神經元與其他神經元進行加權連線,並且有一個與其自身的反饋連線。

當然,並不是所有的連線都會被進行訓練,同時由於誤差導數出現極端非線性的情況,傳統的反向傳播將不再起作用,因此該網路採用隨時間反向傳播演算法(BPTT)或隨機梯度下降法(SGD)進行逼近。

更多資訊請參考:Bill Wilson的Tensor Product Networks(1991)

http://www.cse.unsw.edu.au/~billw/cs9444/tensor-stuff/tensor-intro-04.html

結構遞迴神經網路

結構遞迴神經網路是遞迴網路的線性架構變體。結構遞迴可以促進分級特徵空間中的分枝,並且使得網路架構可以模仿這個進行訓練。

訓練過程通過子梯度方法的梯度下降實現。

這在R. Socher等人,Paralsing Natural Scenes and Natural Language with Recursive Neural Networks,2011中有詳細描述。

http://machinelearning.wustl.edu/mlpapers/paper_files/ICML2011Socher_125.pdf

神經歷史壓縮機

1991年,Schmidhuber首次發表了這個非常深度的學習機,通過無監督RNNs層次結構的預訓練,能夠實現數百個神經層的信用分配(即表現好的元件分配權重就大一些,有利於實現目標)。

RNN通過無監督訓練預測下一次的輸入。然後只有存在誤差的輸入才能向前傳遞,將新的資訊傳送到層次結構中的下一個RNN,然後以較慢的自組織時間尺度進行處理。

很明顯這個過程中不存在資訊丟失,只是進行壓縮。 RNN堆疊就是資料的“深度生成模型”。 資料可以從壓縮的形式進行重建。

參見J.Schmidhuber等人,Deep Learning in Neural Networks:An Overview,2014。

http://www2.econ.iastate.edu/tesfatsi/DeepLearningInNeuralNetworksOverview.JSchmidhuber2015.pdf

儘管聽起來不太可能,但因為誤差會通過較大拓撲向後傳播,增加非線性導數極值的計算量,使信用分配困難,所以反向傳播仍可能失敗。


長短時記憶網路

在傳統的時間反向傳播(BPTT)或實時迴圈學習(RTTL)演算法中,誤差訊號隨著時間流逝往往會爆炸或消失。

反向傳播誤差的時間演化指數般地依賴於權重大小。權重爆炸可能導致權重不穩定,而在梯度彌散(消失)時,會造成學習跨越長時間滯後,並且需要花費過多的時間,甚至根本不起作用。

  • LSTM是一種基於梯度學習演算法訓練而來的新型迴圈網路架構。

  • LSTM旨在克服誤差迴流問題。它可以學習跨越超過1000步的時間間隔。

  • 在有噪聲、不可壓縮的輸入序列情況下,該網路確實不會損失短程(lag)能力。

誤差的迴流問題是通過一種高效的、基於梯度的演算法來克服的,這種演算法網路結構通過特殊神經元的內部狀態讓誤差流變為常數(從而不會爆炸或消失)。

這些神經元會減少“輸入權重衝突”和“輸出權重衝突”的影響。

輸入權重衝突:如果輸入非零,則必須使用相同的輸入權重來儲存某些輸入並忽略其他輸入,然後就會經常收到衝突的權重更新訊號。

這些訊號會嘗試讓權重參與儲存輸入並保護輸入。 這種衝突使得學習難度加大,並且需要一個對上下文更加敏感的機制來通過輸入權重來控制“寫入操作”。

輸出權重衝突:只要神經元的輸出不為零,來自該神經元的輸出連線的權重就將吸引在序列處理期間產生的衝突權重更新訊號。

這些訊號將嘗試使輸出權重參與訪問儲存在處理單元中的資訊,並且在不同時間保護隨後的神經元免受前饋神經元的輸出的干擾。

這些衝突並不是單單造成長時滯,也同樣可能造成短時滯。 值得注意的是,隨著滯後的增加,儲存的資訊必須要確保不受擾動,特別是在學習的高階階段。

網路架構:有關當前網路狀態的有用資訊,可能會通過不同型別的神經元進行傳遞。 例如,輸入門(輸出門)可以使用來自其他儲存單元的輸入來決定是否在其儲存單元中儲存(訪問)某些資訊。

儲存單元包含門結構,並將門指定到他們要調解的連線。 輸入門用於消除輸入權重衝突,同時輸出門可以消除輸出權重衝突。

:具體來說,為了減輕輸入和輸出權重的衝突及擾動,需要引入乘法輸入門單元以保護儲存的內容不受干擾輸入的擾動,乘法輸出門單元通過儲存與當前不相關的儲存器內容保護其他單元免受干擾。

一文看盡深度學習RNN:為啥就它適合語音識別、NLP與機器翻譯?

具有8個輸入單元,4個輸出單元和2個大小為2的儲存單元塊的LSTM網路示例.in1標記輸入門,out1標記輸出門,cell1 = block1標記塊1的第一個儲存單元。(摘自Long Short-Term Memory,1997年)

同多層感知器相比,由於包含多樣的處理元件和反饋連線,LSTM的連線性更加複雜。

儲存單元塊:共享相同輸入門和相同輸出門的儲存單元所形成的結構,被稱為“儲存單元塊”。

儲存單元塊有助於資訊儲存; 跟傳統的神經網路一樣,在單個小區內對分散式輸入進行編碼並不容易。儲存單元塊在大小為1時將變成一個簡單的儲存單元。

學習:考慮可選擇的實時迴圈學習(RTRL)的變體,由於輸入和輸出門引起的乘法動態特性,要確保通過儲存器單元的內部狀態到達“儲存器單元網路輸入”的反向傳播的非衰減誤差不會在時間上被進一步反向傳播。

猜測:這種隨機方法可以勝過許多時滯演算法。 已經確定的是,先前的工作中使用的許多長時滯的任務,通過簡單的隨機權重猜測就能比通過提出的演算法更快地解決問題。

見S.Hochreiter和J.Schmidhuber,Long-Short Term Memory,1997。

http://dl.acm.org/citation.cfm?id=1246450

LSTM迴圈神經網路最有趣的應用是語言處理工作。更全面的描述請參閱Gers的論文:

F. Gers and J. Schmidhuber, LSTM Recurrent Networks Learn Simple Context Free and Context Sensitive Languages, 2001.

ftp://ftp.idsia.ch/pub/juergen/L-IEEE.pdf

F. Gers, Long Short-Term Memory in Recurrent Neural Networks, Ph.D. Thesis, 2001. http://www.felixgers.de/papers/phd.pdf

LSTM的不足

  • LSTM的高效截斷版本並不能很輕鬆的解決“強延遲異或”類的問題。

  • LSTM的每個儲存單元塊需要一個輸入門和一個輸出門,而這在其他的迴圈方法中並不是必需的。

  • 常數誤差流通過儲存單元內部的“Constant Error Carrousels”,能夠跟傳統的前饋架構一樣,產生與整個輸入串相同的效果。

  • LSTM與其他前饋方法一樣,在“regency”的概念上有缺陷。 如果需要精密時間步長計數,可能還需要額外的計數機制。

LSTM的優勢

  • 記憶體單元中反向傳播的常數誤差,賦予該架構橋接長時滯的演算法的能力。

  • LSTM可近似於噪聲問題域、分散式表示和連續值。

  • LSTM概述了要考慮的問題域。這一點很重要,因為一些任務對於已經建立的迴圈網路來說很棘手。

  • 在問題域上不需要微調網路引數。

  • 在每個權重和時間步長更新的複雜性方面,LSTM基本上等同於BPTT。

  • LSTM在機器翻譯等領域取得了當前最先進的結果,顯示出強大的能力。


門控迴圈單元神經網路

與LSTM一樣,門控迴圈神經網路已成功應用在了順序和時間資料的處理上,尤其是在語音識別、自然語言處理和機器翻譯等長序列問題領域,它都表現得十分良好。

該網路在LSTM的基礎上考慮了門控,並且還涉及一個生成訊號的門控網路,該訊號用於控制當前輸入和先前儲存器如何用於更新當前啟用,從而更新當前的網路狀態。

門自身被賦予了權重,並且在整個學習階段根據演算法選擇性地更新。

門網路以增加的複雜性的形式引入增加的計算花銷,因此需要進行引數化。

LSTM RNN架構使用簡單RNN的計算作為內部儲存器單元(狀態)的中間候選。 門控迴圈單元(GRU)RNN將LSTM RNN模型中的門控訊號減少到兩個。這兩個門分別稱為更新門和復位門。

GRU(和LSTM)RNN中的選通機制與RNN的引數化相似。 使用BPTT隨機梯度下降來最小化損失函式,以更新對應於這些門的權重。

每個引數更新都將涉及與整個網路的狀態有關的資訊。 這可能會產生不利影響。

該網路在門控的概念上進行了進一步的探索,並擴充套件了三種新的變數門控機制。

已經考慮的三個門控變數分別是:

  • GRU1,其中每個門僅使用先前的隱藏狀態和偏差來計算;

  • GRU2,其中每個門僅使用先前的隱藏狀態計算;

  • GRU3,其中每個門僅使用偏置來計算。

引數的顯著降低可以通過GRU3產生的最小數量觀察出來。

這三個變數和GRU RNN均使用來自MNIST資料庫的手寫數字和IMDB電影評論資料集的資料進行了基準測試。

結果從MNIST資料集生成了兩個序列長度,從IMDB資料集生成了一個。

門的主要驅動訊號似乎是(迴圈)”狀態”,因為”狀態”包含了和其他訊號有關的基本資訊。

隨機梯度下降的使用隱含地攜帶有相關網路狀態的資訊。 這可能可以解釋在門訊號中單獨使用偏置的相對成功,因為其自適應更新攜帶了有關網路狀態的資訊。

門控變數對門控機制進行了探索和擴充套件,並對拓撲結構進行了有限的評估。

更多相關資訊,請參閱:

R. Dey and F. M. Salem, Gate-Variants of Gated Recurrent Unit (GRU) Neural Networks, 2017. https://arxiv.org/ftp/arxiv/papers/1701/1701.05923.pdf

J. Chung, et al., Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling, 2014.

https://pdfs.semanticscholar.org/2d9e/3f53fcdb548b0b3c4d4efb197f164fe0c381.pdf


神經圖靈機

神經圖靈機通過將神經網路耦合到外部儲存器資源來擴充套件神經網路的能力,它們可以通過attention 的過程進行互動。所謂的NTM,其實就是使用NN來實現圖靈機計算模型中的讀寫操作。其模型中的元件與圖靈機相同。

這個組合的系統類似於圖靈機(Turing Neumann)或馮諾依曼(Von Neumann)結構,但是它可以端對端,通過梯度下降進行有效的訓練。

初步結果表明,神經圖靈機可以從輸入和輸出示例中推匯出簡單的演算法,如複製、排序和聯想性回憶。

RNN對長時間資料學習和進行資料轉換的能力讓他們從其他機器學習方法中脫穎而出。此外,因為RNN已經被證明是圖靈完備的,因此只需適當地佈線就能模擬任意程式。

擴充套件標準RNN的能力可以簡化演算法任務的解決方案。 因此,這種擴充套件主要是通過一個龐大的可定址記憶,通過類比圖靈通過無限的儲存磁帶來擴充套件有限狀態機,並被稱為“神經圖靈機”(NTM)。

與圖靈機不同,NTM是可以通過梯度下降進行訓練的可微分計算機,這為學習程式提供了非常實用的機制。

一文看盡深度學習RNN:為啥就它適合語音識別、NLP與機器翻譯?

NTM架構如上所示。 在每個更新週期期間,控制器網路接收來自外部環境的輸入並作為響應發出輸出。 它還通過一組並行讀寫頭讀取和寫入儲存器矩陣。 虛線表示NTM電路與外界的劃分。摘自Neural Turing Machines,2014年

至關重要的是,架構的每一個組成部分都是可微分的,直接用梯度下降訓練。 這是通過定義“模糊”讀寫操作來實現的,這些操作與記憶體中的所有元素或多或少地相互作用(而不是像正常的圖靈機或數字計算機那樣處理單個元素)。

有關更多資訊,請參閱:

A. Graves, et al., Neural Turing Machines, 2014. - https://arxiv.org/pdf/1410.5401.pdf

R. Greve, et al., Evolving Neural Turing Machines for Reward-based Learning, 2016. - http://sebastianrisi.com/wp-content/uploads/greve_gecco16.pdf


NTM實驗

複製任務可以用來測試NTM是否可以儲存和呼叫長序列的任意資訊。該測試中,網路被以隨機二進位制向量的輸入序列,後跟分隔符標誌的形式呈現。

網路需要進行訓練來複制8位隨機向量的序列,其中序列長度為1和20之間的隨機數。目標序列僅僅是輸入序列的拷貝(沒有分隔符標誌)。

通過要求網路將複製的序列輸出指定次數來重複複製任務擴充套件副本,然後發出序列結束標記。該過程的主要目的是看看NTM是否可以學習一個簡單的巢狀函式。

網路接收隨機二進位制向量的隨機長度序列,隨後接受出現在單獨輸入通道上的表示所需份數的標量值。

聯想性回憶任務涉及到組織“間接”產生的資料,即一個資料項指向另一個資料項。構建專案列表來使用其中一個專案查詢網路返回後續專案的要求。

接下來定義一個由分隔符符號左右限制的二進位制向量序列。在將多個專案傳播到網路之後,通過顯示隨機專案檢視網路,並檢視網路是否可以產生下一個專案。

動態N-gram任務用來測試是否NTM可以通過使用記憶體作為可重寫表來快速適應新的預測分佈,它可以用於保持轉換統計資料,從而模擬常規的N-Gram模型。

考慮二進位制序列中所有可能的6-gram分佈的集合。給定所有可能的長度五位二進位制的歷史,每個6-gram分佈可以表示為32個數字的表格,分別指定下一位將為1的概率。通過使用當前查詢表繪製200個連續位來生成特定的訓練序列。網路一次觀察一位序列,然後會預測下一位。

優先排序任務測試NTM的排序能力。 首先將隨機二進位制向量序列與每個向量的標量優先順序一起輸入到網路中。 優先順序在[-1,1]範圍內均勻分佈。 目標序列包含了根據優先順序排序後的二進位制向量。

NTM有一個元件正是LSTM的前饋架構。

總結

讀完本文,你應該已經理解了迴圈神經網路在深度學習上的用法,具體來說有以下幾點:

  • LSTM、GRU與NTM這些最先進的迴圈神經網路,是如何進行深度學習任務的

  • 這些迴圈神經網路同人工神經網路中更廣泛的遞迴研究間的具體關係是怎樣的

  • RNN能在一系列有挑戰的問題上表現如此出色的原因在哪裡

原文連結

http://machinelearningmastery.com/recurrent-neural-network-algorithms-for-deep-learning/


相關文章