天天看點

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

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

循環神經網絡(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年-http://dl.acm.org/citation.cfm?id=1246450

同多層感覺器相比,由于包含多樣的處理元件和回報連接配接,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能在一系列有挑戰的問題上表現如此出色的原因在哪裡

原文釋出時間為:2017-08-11

本文作者:Jason Brownlee

本文來自雲栖社群合作夥伴“資料派THU”,了解相關資訊可以關注“資料派THU”微信公衆号

繼續閱讀