2018年7月4日 星期三

.人工智慧之循環神經網路(RNN)

A friendly introduction to Recurrent Neural Networks


瀚錸科技代理「ForceShield」,採用革命性的「動態應用安全架構」




來源AI 優化生活



前言:人工智慧機器學習有關算法內容,人工智慧之機器學習主要有三大類:1)分類;2)回歸;3)聚類。今天我們重點探討一下循環神經網路(RNN)算法。

循環神經網路(RNN)現已成為國際上神經網路專家研究的重要對象之一。它是一種節點定向連接成環的人工神經網路,最初由Jordan,Pineda.Williams,Elman等於上世紀80年代末提出的一種神經網路結構模型。

引領循環神經網RNN研究的主要是JuergenSchmidhuber和他的學生——其中包括SeppHochreiter,他發現了高深度網路所遇到的梯度消失問題,後來又發明長短期記憶(LSTM)循環網路;還有Alex Graves,他目前在DeepMind任職。另外兩位比較著名的研究者分別是:Felix Gers,他發明LSTM遺忘門;Justin Bayer,他發明可以讓LSTM拓撲結構,根據具體問題,進行自動演化的方法。

RNN概念:

循環神經網路RNN(Recurrent NeuronNetwork)的內部狀態可以展示動態時序行為。不同於前饋神經網路的是,RNN可以利用它內部的記憶,來處理任意時序的輸入序列,這讓它可以更容易處理如不分段的手寫辨識、語音辨識等。


blob.png



循環神經網路(RNN)可以實現並行和序列計算,原則上可以計算任何傳統電腦所能計算的東西。但和傳統電腦不同的是,RNN與人類大腦有相似之處;人腦是一種由神經元相互聯結組成的大型前饋網路,可以借由某種方式,學會將長達人的一生的感覺信號,輸入流轉換為一個有效的運動輸出序列。人腦是一個傑出的模範,因為它能解決許多電腦尚且力所不及的問題。

RNN特徵:
循環神經網路RNN的本質特徵,是在處理單元之間,既有內部的反饋連接又有前饋連接。從系統觀點看,它是一個反饋動力系統,在計算過程中體現過程動態特性,比前饋神經網路具有更強的動態行為和計算能力。

RNN分類:
1)完全遞歸網路(Fully recurrent network)

2)Hopfield網路(Hopfield network)

3)Elman networks and Jordannetworks

4)回聲狀態網路(Echo state network)

5)長短記憶網路(Long short term memery network)

6)雙向網絡(Bi-directional RNN)

7)持續型網路(Continuous-time RNN)

8)分層RNN(Hierarchical RNN)

9)復發性多層感知器(Recurrent multilayer perceptron)

10)二階遞歸神經網路(Second Order Recurrent Neural Network)

11)波拉克的連續的級聯網路(Pollack's sequential cascaded networks)

RNN與FNN區別:
循環神經網路RNN和前饋神經網路FNN的最大區別,在於有一個反饋循環。另外,兩者的記憶模式完全不同。在定型之後,前饋神經網路會生成已學習數據的靜態模型,然後接受新的樣例,進行準確的分類或聚類。

而循環神經網路RNN則會生成動態模型,即會隨時間推移變化的模型,即將第n-1步的輸出反饋給神經網路,對第n步的輸出產生影響,之後的每一步也都以此類推。這種變化可以讓模型依據輸入樣例的上下文,來進行準確的分類

RNN模型與記憶:
循環神經網RNN包含了決定同個序列中的,前一次分類結果的隱藏狀態。以後每一步,這一隱藏狀態會與新一步的輸入數據相加,生成一個新的隱藏狀態,再得出一個新的分類結果。每個隱藏狀態都會被循環利用,生成經過調整的後續隱藏狀態

人類的記憶模式同樣能考慮上下文,循環利用對於過往狀態的認知,來恰當地解讀新數據。人類會受到短期記憶先前感覺的影響,保留了不同的「隱藏狀態」。


RNN基本結構:


blob.png



RNN是一種對序列數據建模的神經網,即一個序列當前的輸出與前面的輸出也有關。具體的表現形式為網路,會對前面的資訊進行記憶,並應用於當前輸出的計算中,即隱藏層之間的節點,不再無連接而是有連接的,並且隱藏層的輸入,不僅包括輸入層的輸出,還包括上一時刻隱藏層的輸出。下面是一個RNN模型的示例圖,其中:

xt是t時刻的輸入;

st是t時刻的隱狀態(memory),基於上一時刻的隱狀態和當前輸入得到:st=f(Uxt+Wst?1),其中f一般是非線性的激活函數,在計算s0時,需要用到s?

1。ot表示t時刻的輸出,ot=softmax(Vst);

在RNN中,所有層次均共享同樣的參數。其反應出RNN中的每一步都在做相同的事,只是輸入不同,因此大大地降低了網路中需要學習的參數。


blob.png



RNN允許對向量的序列進行操作:輸入可以是序列,輸出也可以是序列,在最一般化的情況下輸入輸出,都可以是序列。輸出序列理解為RNN,關於序列下一個狀態預測的信心程度。

RNN參數訓練:
循環神經網路RNN的參數訓練,可以透過隨時間進行反向傳播(Back propagation Through Time,BPTT)算法,BPTT算法是針對循環層的訓練算法,包含三個步驟:

1)前向計算每個神經元的輸出值;

2)反向計算每個神經元的誤差項值,它是誤差函數E,對神經元j的加權輸入的偏導數;


3)計算每個權重的梯度,最後再用隨機梯度下降算法更新權重


blob.png



RNN優點:
1)分布式表達;

2)能在序列預測中,明確地學習和利用背景資訊;

3)具有長時間範圍內學習,和執行數據的複雜轉換能力。

RNN缺點:
1)會造成梯度消失問題;

2)會造成梯度爆炸問題;

RNN改進方案:
1)選擇其他的激活函數,比如ReLU;

2)引入改進網路結構的機制,比如LSTM,GRU;


3)自然語音處理上應用十分廣的就是LSTM。


blob.png



RNN應用場景:
循環神經網路RNN是一類,功能強大的人工神經網路算法,特別適用於處理聲音、時間序列(傳感器)數據,或書面自然語言等序列數據。DeepMind在自動代理玩遊戲的研究中,就使用了一種循環網路。


循環神經網路RNN,也適用於聚類和異常狀態檢測。可以應用於可穿戴式設備生成的醫療保健數據、恆溫器等智慧設備生成的家居環境數據、股票及指數變動生成的市場數據、賬戶交易活動生成的個人財務數據(可用於檢測欺詐或洗錢行為)等。


blob.png



目前,循環神經網路RNN在自然語言處理、機器翻譯、圖像辨識、語音辨識等領域迅速得到大量應用。

RNN已在實踐中證明對自然語言處理,是非常成功的,如詞向量表達、語句合法性檢查、詞性標注等。

結語:
循環神經網路RNN是一類功能強大的,人工神經網路算法,其模型是目前人工神經網路應用中,最為廣泛的一類模型。特別適用於處理聲音、時間序列(傳感器)數據,或書面自然語言等序列數據。

DeepMind在自動代理玩遊戲的研究中,就使用了一種循環網路。RNN算法在人工智慧之機器學習、自然語言處理、機器翻譯、圖像辨識、語音辨識、時間序列數據、股票交易數據和氣象觀測數據等領域有著廣泛應用。






沒有留言:

張貼留言