新的算法理論不斷湧現的同時,各種深度學習框架也不斷出現在人們視野,比如Torch,Caffe等等。TensorFlow是Google開發的第二代機器學習係統,於2015年底開源,成為了新一代流行的機器學習的算法框架。這一章節美女直播全婐APP免费下载將學習循環神經網絡(RNN)的基本原理。循環神經網絡(RecurrentNeuralNetworks,RNNs)已經在眾多自然語言處理(NaturalLanguageProcessing,NLP)中取得了巨大成功以及廣泛應用。
PS:是因為最近來了帝都在導師那裏做畢設,是利用CNN做信息隱藏的,後期會公布源碼。帝都真的是人才濟濟,沒有真的本事可能真的沒有辦法在這個宇宙世界中心混下去。,願和大家共同成長,共同進步。
RNNs的基本介紹
不同於傳統的FNNs(Feed-forward Neural Networks,前向反饋神經網絡),RNNs引入了定向循環,能夠處理那些輸入之間前後關聯的問題。定向循環結構如下圖所示:

RNNs的目的使用來處理序列數據。在傳統的神經網絡模型中,是從輸入層到隱含層再到輸出層,層與層之間是全連接的,每層之間的節點是無連接的。但是這種普通的神經網絡對於很多問題卻無能無力。例如,你要預測句子的下一個單詞是什麽,一般需要用到前麵的單詞,因為一個句子中前後單詞並不是獨立的。RNNs之所以稱為循環神經網路,即一個序列當前的輸出與前麵的輸出也有關。具體的表現形式為網絡會對前麵的信息進行記憶並應用於當前輸出的計算中,即隱藏層之間的節點不再無連接而是有連接的,並且隱藏層的輸入不僅包括輸入層的輸出還包括上一時刻隱藏層的輸出。理論上,RNNs能夠對任何長度的序列數據進行處理。但是在實踐中,為了降低複雜性往往假設當前的狀態隻與前麵的幾個狀態相關,下圖便是一個典型的RNNs:


循環神經網絡進行展開成一個全神經網絡RNNs包含輸入單元(Inputunits),輸入集標記為{x0,x1,…,xt,xt+1,…},而輸出單元(Outputunits)的輸出集則被標記為{y0,y1,…,yt,yt+1.,..}。RNNs還包含隱藏單元(Hiddenunits),美女直播全婐APP免费下载將其輸出集標記為{s0,s1,…,st,st+1,…},這些隱藏單元完成了最為主要的工作。你會發現,在圖中:有一條單向流動的信息流是從輸入單元到達隱藏單元的,與此同時另一條單向流動的信息流從隱藏單元到達輸出單元。在某些情況下,RNNs會打破後者的限製,引導信息從輸出單元返回隱藏單元,這些被稱為“BackProjections”,並且隱藏層的輸入還包括上一隱藏層的狀態,即隱藏層內的節點可以自連也可以互連。例如,對一個包含5個單詞的語句,那麽展開的網絡便是一個五層的神經網絡,每一層代表一個單詞。對於該網絡的計算過程如下:
1.xt表示第t,t=1,2,3…步(step)的輸入。比如,x1為第二個詞的one-hot向量(根據上圖,x0為第一個詞)。
PS:使用計算機對自然語言進行處理,便需要將自然語言處理成為機器能夠識別的符號,加上在機器學習過程中,需要將其進行數值化。而詞是自然語言理解與處理的基礎,因此需要對詞進行數值化,詞向量便是一種可行又有效的方法。何為詞向量,即使用一個指定長度的實數向量v來表示一個詞。有一種種最簡單的表示方法,就是使用One-hotvector表示單詞,即根據單詞的數量|V|生成一個|V|*1的向量,當某一位為一的時候其他位都為零,然後這個向量就代表一個單詞。缺點也很明顯:
RNNs的目的使用來處理序列數據。在傳統的神經網絡模型中,是從輸入層到隱含層再到輸出層,層與層之間是全連接的,每層之間的節點是無連接的。但是這種普通的神經網絡對於很多問題卻無能無力。例如,你要預測句子的下一個單詞是什麽,一般需要用到前麵的單詞,因為一個句子中前後單詞並不是獨立的。RNNs之所以稱為循環神經網路,即一個序列當前的輸出與前麵的輸出也有關。具體的表現形式為網絡會對前麵的信息進行記憶並應用於當前輸出的計算中,即隱藏層之間的節點不再無連接而是有連接的,並且隱藏層的輸入不僅包括輸入層的輸出還包括上一時刻隱藏層的輸出。理論上,RNNs能夠對任何長度的序列數據進行處理。但是在實踐中,為了降低複雜性往往假設當前的狀態隻與前麵的幾個狀態相關,下圖便是一個典型的RNNs:
循環神經網絡進行展開成一個全神經網絡RNNs包含輸入單元(Inputunits),輸入集標記為{x0,x1,…,xt,xt+1,…},而輸出單元(Outputunits)的輸出集則被標記為{y0,y1,…,yt,yt+1.,..}。RNNs還包含隱藏單元(Hiddenunits),美女直播全婐APP免费下载將其輸出集標記為{s0,s1,…,st,st+1,…},這些隱藏單元完成了最為主要的工作。你會發現,在圖中:有一條單向流動的信息流是從輸入單元到達隱藏單元的,與此同時另一條單向流動的信息流從隱藏單元到達輸出單元。在某些情況下,RNNs會打破後者的限製,引導信息從輸出單元返回隱藏單元,這些被稱為“BackProjections”,並且隱藏層的輸入還包括上一隱藏層的狀態,即隱藏層內的節點可以自連也可以互連。例如,對一個包含5個單詞的語句,那麽展開的網絡便是一個五層的神經網絡,每一層代表一個單詞。對於該網絡的計算過程如下:
1.xt表示第t,t=1,2,3…步(step)的輸入。比如,x1為第二個詞的one-hot向量(根據上圖,x0為第一個詞)。
PS:使用計算機對自然語言進行處理,便需要將自然語言處理成為機器能夠識別的符號,加上在機器學習過程中,需要將其進行數值化。而詞是自然語言理解與處理的基礎,因此需要對詞進行數值化,詞向量便是一種可行又有效的方法。何為詞向量,即使用一個指定長度的實數向量v來表示一個詞。有一種種最簡單的表示方法,就是使用One-hotvector表示單詞,即根據單詞的數量|V|生成一個|V|*1的向量,當某一位為一的時候其他位都為零,然後這個向量就代表一個單詞。缺點也很明顯:
- 由於向量長度是根據單詞個數來的,如果有新詞出現,這個向量還得增加
- 主觀性太強
- 多單詞,人工打labor並且adapt,很不方便
- 難以計算單詞之間的相似性
現在有一種更加有效的詞向量模式,該模式是通過神經網或者深度學習對詞進行訓練,輸出一個指定維度的向量,該向量便是輸入詞的表達。如word2vec。
2.st為隱藏層的第t步的狀態,它是網絡的記憶單元。st根據當前輸入層的輸出與上一步隱藏層的狀態進行計算。st=f(Uxt+Wst−1),其中f一般是非線性的激活函數,如tanh或ReLU,在計算s0時,即第一個單詞的隱藏層狀態,需要用到s−1,但是其並不存在,在實現中一般置為0向量。
3.ot是第t步的輸出,如下個單詞的向量表示,ot=softmax(Vst)。
注意:
1.你可以認為隱藏層狀態st是網絡的記憶單元.st包含了前麵所有步的隱藏層狀態。而輸出層的輸出ot隻與當前步的st有關,在實踐中,為了降低網絡的複雜度,往往st隻包含前麵若幹步而不是所有步的隱藏層狀態。
2.在傳統神經網絡中,每一個網絡層的參數是不共享的。而在RNNs中,每輸入一步,每一層各自都共享參數U,V,W。其反應者RNNs中的每一步都在做相同的事,隻是輸入不同,因此大大地降低了網絡中需要學習的參數;這裏並沒有說清楚,解釋一下,傳統神經網絡的參數是不共享的,並不是表示對於每個輸入有不同的參數,而是將RNN是進行展開,這樣變成了多層的網絡,如果這是一個多層的傳統神經網絡,那麽xt到st之間的U矩陣與xt+1到st+1之間的U是不同的,而RNNs中的卻是一樣的,同理對於s與s層之間的W、s層與o層之間的V也是一樣的。
3.上圖中每一步都會有輸出,但是每一步都要有輸出並不是必須的。比如,美女直播全婐APP免费下载需要預測一條語句所表達的情緒,美女直播全婐APP免费下载僅僅需要關係最後一個單詞輸入後的輸出,而不需要知道每個單詞輸入後的輸出。同理,每步都需要輸入也不是必須的。RNNs的關鍵之處在於隱藏層,隱藏層能夠捕捉序列的信息。
RNNs的應用
RNNs已經被在實踐中證明對NLP是非常成功的。如詞向量表達、語句合法性檢查、詞性標注等。在RNNs中,目前使用最廣泛最成功的模型便是LSTMs(LongShort-TermMemory,長短時記憶模型)模型,該模型通常比vanilla RNNs能夠更好地對長短時依賴進行表達,該模型相對於一般的RNNs,隻是在隱藏層做了手腳。
語言模型與文本生成(Language Modeling and Generating Text)
給定一個單詞序列,根據前麵的單詞預測每一個單詞的可能性。然後根據前麵的可能性,語言模型能夠得到一個語句正確的可能性,這是機器翻譯的一部分,往往可能性越大,語句越正確。另一種應用便是使用生成模型預測下一個單詞的概率,從而生成新的文本根據輸出概率的采樣。語言模型中,典型的輸入是單詞序列中每個單詞的詞向量(如One-hotvector),輸出時預測的單詞序列。當在對網絡進行訓練時,如果ot=xt+1,那麽第t步的輸出便是下一步的輸入。
機器翻譯(Machine Translation)
機器翻譯是將一種源語言語句變成意思相同的另一種源語言語句,如將英語語句變成同樣意思的中文語句。與語言模型關鍵的區別在於,需要將源語言語句序列輸入後,才進行輸出,即輸出第一個單詞時,便需要從完整的輸入序列中進行獲取。機器翻譯如下圖所示:

語音識別(Speech Recognition)
語音識別是指給一段聲波的聲音信號,預測該聲波對應的某種指定源語言的語句以及該語句的概率值。
圖像描述生成 (Generating Image Descriptions)
訓練RNNs的原理
對於RNN是的訓練和對傳統的ANN訓練一樣。同樣使用BP誤差反向傳播算法,不過有一點區別。如果將RNNs進行網絡展開,那麽參數W,U,V是共享的,而傳統神經網絡卻不是的。並且在使用梯度下降算法中,每一步的輸出不僅依賴當前步的網絡,並且還以來前麵若幹步網絡的狀態。比如,在t=4時,美女直播全婐APP免费下载還需要向後傳遞三步,已經後麵的三步都需要加上各種的梯度。該學習算法稱為BackpropagationThroughTime(BPTT)。但在vanillaRNNs訓練中,BPTT無法解決長時依賴問題(即當前的輸出與前麵很長的一段序列有關,一般超過十步就無能為力了),因為BPTT會帶來所謂的梯度消失或梯度爆炸問題(thevanishing/explodinggradientproblem)。當然,有很多方法去解決這個問題,如LSTMs便是專門應對這種問題的。
循環神經網絡(RNN)反向傳播算法(BPTT)理解
循環神經網絡的前向傳播算法:

RNN中前一時刻到當前時刻隻有一個權重矩陣,該權重矩陣與時間並沒有什麽關係。整個前向傳播算法與BP網絡的前向傳播算法的差別是多了一個前一時刻隱藏層的信息而已。在美女直播全婐APP免费下载這邊的前向傳播算法可能與大家平時看到的會有點出入,因為這個前向傳播算法將傳播過程中的各個階段都拆分開來表示。在進入激活函數前先用額外的兩個變量表示,分別是進入隱藏層激活函數e前的和進入輸出層激活函數g前的。
RNN的輸入數據與其他神經網絡如DNN的輸入數據不同的是,RNN的輸入數據樣本不能打亂,必須按時間進行輸入,而其他的神經網絡輸入數據可以打亂。所RNN與其他神經網絡的前向傳播算法和反向傳播算法的實現其實並沒有什麽特別之處,隻是多了幾個變量。因此RNN的關於時間的t循環可以看做,第t個訓練樣本(或者第t個批量訓練樣本),但是一定要保持先後順序,不然學習出來的可能沒有什麽用處。
接下來給出BPTT算法:

RNN中前一時刻到當前時刻隻有一個權重矩陣,該權重矩陣與時間並沒有什麽關係。整個前向傳播算法與BP網絡的前向傳播算法的差別是多了一個前一時刻隱藏層的信息而已。在美女直播全婐APP免费下载這邊的前向傳播算法可能與大家平時看到的會有點出入,因為這個前向傳播算法將傳播過程中的各個階段都拆分開來表示。在進入激活函數前先用額外的兩個變量表示,分別是進入隱藏層激活函數e前的和進入輸出層激活函數g前的。
RNN的輸入數據與其他神經網絡如DNN的輸入數據不同的是,RNN的輸入數據樣本不能打亂,必須按時間進行輸入,而其他的神經網絡輸入數據可以打亂。所RNN與其他神經網絡的前向傳播算法和反向傳播算法的實現其實並沒有什麽特別之處,隻是多了幾個變量。因此RNN的關於時間的t循環可以看做,第t個訓練樣本(或者第t個批量訓練樣本),但是一定要保持先後順序,不然學習出來的可能沒有什麽用處。
接下來給出BPTT算法:
LSTM(Long Short-Term Memory)長短期記憶網絡
原生的RNN會遇到一個很大的問題,叫做 The vanishing gradient problem for RNNs,也就是後麵時間的節點對於前麵時間的節點感知力下降,也就是記憶遺失,RNN解決這個問題用到的就叫LSTM,拿個小本子把事記上,好記性不如爛筆頭嘛,所以LSTM引入一個核心元素就是Cell。
Long Short Term 網絡—— 一般就叫做LSTM ——是一種 RNN 特殊的類型,可以學習長期依賴信息。
所有RNN都具有一種重複神經網絡模塊的鏈式的形式。在標準的RNN中,這個重複的模塊隻有一個非常簡單的結構,例如一個 tanh 層。

LSTM同樣是這樣的結構,但是重複的模塊擁有一個不同的結構。不同於單一神經網絡層,這裏是有四個,以一種非常特殊的方式進行交互。

圖中使用的各種元素的圖標

在上麵的圖例中,每一條黑線傳輸著一整個向量,從一個節點的輸出到其他節點的輸入。粉色的圈代表 pointwise的操作,諸如向量的和,而黃色的矩陣就是學習到的神經網絡層。合在一起的線表示向量的連接,分開的線表示內容被複製,然後分發到不同的位置。
Long Short Term 網絡—— 一般就叫做LSTM ——是一種 RNN 特殊的類型,可以學習長期依賴信息。
所有RNN都具有一種重複神經網絡模塊的鏈式的形式。在標準的RNN中,這個重複的模塊隻有一個非常簡單的結構,例如一個 tanh 層。
LSTM同樣是這樣的結構,但是重複的模塊擁有一個不同的結構。不同於單一神經網絡層,這裏是有四個,以一種非常特殊的方式進行交互。
圖中使用的各種元素的圖標
在上麵的圖例中,每一條黑線傳輸著一整個向量,從一個節點的輸出到其他節點的輸入。粉色的圈代表 pointwise的操作,諸如向量的和,而黃色的矩陣就是學習到的神經網絡層。合在一起的線表示向量的連接,分開的線表示內容被複製,然後分發到不同的位置。
LSTM 的核心思想
LSTM 的關鍵就是細胞狀態,水平線在圖上方貫穿運行。細胞狀態類似於傳送帶。直接在整個鏈上運行,隻有一些少量的線性交互。信息在上麵流傳保持不變會很容易。

LSTM有通過精心設計的稱作為“門”的結構來去除或者增加信息到細胞狀態的能力。門是一種讓信息選擇式通過的方法。他們包含一個 sigmoid 神經網絡層和一個 pointwise 乘法操作。

Sigmoid 層輸出 0 到 1 之間的數值,描述每個部分有多少量可以通過。0 代表“不許任何量通過”,1 就指“允許任意量通過”!LSTM 擁有三個門,來保護和控製細胞狀態。
LSTM有通過精心設計的稱作為“門”的結構來去除或者增加信息到細胞狀態的能力。門是一種讓信息選擇式通過的方法。他們包含一個 sigmoid 神經網絡層和一個 pointwise 乘法操作。
Sigmoid 層輸出 0 到 1 之間的數值,描述每個部分有多少量可以通過。0 代表“不許任何量通過”,1 就指“允許任意量通過”!LSTM 擁有三個門,來保護和控製細胞狀態。
逐步理解LSTM
在美女直播全婐APP免费下载 LSTM 中的第一步是決定美女直播全婐APP免费下载會從細胞狀態中丟棄什麽信息。這個決定通過一個稱為忘記門層完成。該門會讀取 h_{t-1} 和 xt,輸出一個在 0 到 1 之間的數值給每個在細胞狀態 C{t-1} 中的數字。1 表示“完全保留”,0 表示“完全舍棄”

下一步是確定什麽樣的新信息被存放在細胞狀態中。這裏包含兩個部分。第一,sigmoid 層稱 “輸入門層”決定什麽值美女直播全婐APP免费下载將要更新。然後,一個tanh層創建一個新的候選值向量,\tilde{C}t,會被加入到狀態中。

現在是更新舊細胞狀態的時間了,C{t-1} 更新為 C_t。
美女直播全婐APP免费下载把舊狀態與 f_t 相乘,丟棄掉美女直播全婐APP免费下载確定需要丟棄的信息。接著加上 i_t * \tilde{C}_t。這就是新的候選值,根據美女直播全婐APP免费下载決定更新每個狀態的程度進行變化。

最終,美女直播全婐APP免费下载需要確定輸出什麽值。這個輸出將會基於美女直播全婐APP免费下载的細胞狀態,但是也是一個過濾後的版本。首先,美女直播全婐APP免费下载運行一個 sigmoid 層來確定細胞狀態的哪個部分將輸出出去。接著,美女直播全婐APP免费下载把細胞狀態通過 tanh 進行處理(得到一個在-1到1之間的值)並將它和sigmoid門的輸出相乘,最終美女直播全婐APP免费下载僅僅會輸出美女直播全婐APP免费下载確定輸出的那部分。

下一步是確定什麽樣的新信息被存放在細胞狀態中。這裏包含兩個部分。第一,sigmoid 層稱 “輸入門層”決定什麽值美女直播全婐APP免费下载將要更新。然後,一個tanh層創建一個新的候選值向量,\tilde{C}t,會被加入到狀態中。
現在是更新舊細胞狀態的時間了,C{t-1} 更新為 C_t。
美女直播全婐APP免费下载把舊狀態與 f_t 相乘,丟棄掉美女直播全婐APP免费下载確定需要丟棄的信息。接著加上 i_t * \tilde{C}_t。這就是新的候選值,根據美女直播全婐APP免费下载決定更新每個狀態的程度進行變化。
最終,美女直播全婐APP免费下载需要確定輸出什麽值。這個輸出將會基於美女直播全婐APP免费下载的細胞狀態,但是也是一個過濾後的版本。首先,美女直播全婐APP免费下载運行一個 sigmoid 層來確定細胞狀態的哪個部分將輸出出去。接著,美女直播全婐APP免费下载把細胞狀態通過 tanh 進行處理(得到一個在-1到1之間的值)並將它和sigmoid門的輸出相乘,最終美女直播全婐APP免费下载僅僅會輸出美女直播全婐APP免费下载確定輸出的那部分。
星空人工智能美女福利导航網 倡導尊重與保護知識產權。如發現本站文章存在版權等問題,煩請30天內提供版權疑問、身份證明、版權證明、聯係方式等發郵件至1851688011@qq.com美女直播全婐APP免费下载將及時溝通與處理。!:首頁 > 新聞 » RNN網絡的原理