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

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


做者 | Jason Brownlee

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

參與 | reason_W


循環神經網絡(RNN)是一種人造神經網絡,它經過賦予網絡圖附加權重來建立循環機制,以維持內部的狀態。算法

神經網絡擁有「狀態」之後,便能在序列預測中明確地學習並利用上下文信息,如順序或時間成分。數據庫

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

讀完以後,你應該能弄懂:架構

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

  • 最早進的RNN同人工神經網絡中更普遍的遞歸研究間的具體關係如何?分佈式

  • 爲何RNN能在一系列有挑戰的問題上表現如此出色?函數

咱們不可能面面俱到,把全部的循環神經網絡細節都講一遍。於是,咱們要把重點放在用於深度學習的循環神經網絡上(LSTM,GRU和NTM),以及理解它們相關的必要背景知識。學習

讓咱們進入正題。測試

循環神經網絡算法深度學習之旅 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)能力。

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

這些神經元會減小「輸入權重衝突」和「輸出權重衝突」的影響。

輸入權重衝突:若是輸入非零,則必須使用相同的輸入權重來存儲某些輸入並忽略其餘輸入,而後就會常常收到衝突的權重更新信號。

這些信號會嘗試讓權重參與存儲輸入並保護輸入。 這種衝突使得學習難度加大,而且須要一個對上下文更加敏感的機制來經過輸入權重來控制「寫入操做」。

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

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

這些衝突並非單單形成長時滯,也一樣可能形成短時滯。 值得注意的是,隨着滯後的增長,存儲的信息必需要確保不受擾動,特別是在學習的高級階段。

網絡架構:有關當前網絡狀態的有用信息,可能會經過不一樣類型的神經元進行傳遞。 例如,輸入門(輸出門)可使用來自其餘存儲單元的輸入來決定是否在其存儲單元中存儲(訪問)某些信息。

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

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

具備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是能夠經過梯度降低進行訓練的可微分計算機,這爲學習程序提供了很是實用的機制。

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/

相關文章
相關標籤/搜索