03.01 機器學習乾貨-TensorFlow循環神經網絡(1)

由於卷積神經網絡不擅長處理語音數據、翻譯語句等有先後順序的數據結構。隨之而來的循環神經網絡(Recurrent Natural Network,RNN)它特別適合處理序列數據,RNN已經成功應用於自然語言處理(Neuro-Linguistic Programming)、語音識別、圖像標註、智能翻譯等場景中。

機器學習乾貨-TensorFlow循環神經網絡(1)

RNN網絡結構的應用

隨著深度學習的不斷髮展和網絡結構的優化,循環神經網絡出現其他衍生網絡模型,如長短期記憶模型LSTM(Long Short-Term Memory)、門控循環單元GRU(Gated Recurrent Unit)和雙向循環神經網絡Bi-RNN(Bidirectional Recurrent Neural Networks)等。首先從循環神經網絡入手,該部分內容由3部分構成:

1)循環神經網絡RNN模型介紹;

2)前向傳播和隨時間反向傳播;

3)梯度消失和梯度爆炸問題。

由於篇幅本文先針對循環神經網絡RNN模型做介紹。

循環神經網絡模型介紹

循環神經網絡模型是一種經典網絡結構,它包括輸入層、隱含層、輸出層,它的最大特點在於它有自循環結構,即表示神經元之間還有關聯,這是傳統神經網絡、卷積神經網絡所沒有的。

(a)傳統神經網絡

機器學習乾貨-TensorFlow循環神經網絡(1)

傳統神經網絡結構

上圖中,第1列圓圈代表輸入層,第2列圓圈就是神經網絡的中間層,這裡的中間層只有一層,輸出層與邏輯迴歸的輸出層一致。在神經網絡中,輸入層是已知的,是用戶輸入的數據,因此不將輸入層看出神經網絡的網絡層,上圖的神經網絡只包含一層隱藏層和一層輸出層,又稱為雙層神經網絡。為了區分神經元在神經網絡中的位置,我們分別用上標[l]和下標[i]代表神經網絡所處的網絡層次l和在該層中的位置i。

單隱層中的神經元也包括了以上兩個處理步驟,以此圖為例, 其流程為:

機器學習乾貨-TensorFlow循環神經網絡(1)

網絡參數說明

(由於不能輸入公式只能截圖了!)

隱藏層中的可以是任意的激活函數,例如ReLu函數,tanh函數,PReLu函數及Sigmoid函數,輸出層在二分類問題中經常採用sigmoid函數。

(b)循環神經網絡

機器學習乾貨-TensorFlow循環神經網絡(1)

循環神經網絡模型

U是輸入層到隱含層的權重矩陣,W是狀態到隱含層的權重矩陣,s為狀態,V是隱含層到輸出層的權重矩陣。從上圖中可以看出共享參數各個時間節點對應的U、V、W都是不變的,這個機制與卷積神經網絡的過濾器機制一樣,通過參數共享,降低了參數量。

隱藏層詳細介紹:

機器學習乾貨-TensorFlow循環神經網絡(1)

RNN隱藏層詳細示意圖

該網絡在每一時間都t有相同的網絡結構,假設輸入x為n維向量,隱含層的神經元個數為m,輸出層神經元個數為r,則U為nxm維,W是上一次的為這一次輸入的權重矩陣,大小為mxm維;V是輸出層的權重矩陣,大小為mxr維。其中x(t),a(t),o(t)均為向量,編程含義如下:

x(t):為時刻t的輸入;

a(t):為時刻t的隱藏層狀態。它即是網絡的記憶,基於前一時刻的隱層狀態和當前時刻的輸入進行計算,即,函數f通常是非線性的,如tanh或者ReLU,位前一時刻的隱藏層狀態,初始化時值一般為0。

o(t):為時刻t的輸出。

機器學習乾貨-TensorFlow循環神經網絡(1)

網絡記憶

a(t)被認為是網絡的記憶狀態,可以捕獲之前所有時刻發生的信息,輸出的計算僅僅是依賴於時刻t的記憶。循環神經網絡最大的特點就是隱藏層狀態,它可以捕獲一個序列的信息。

TensorFlow中這樣的循環體結構叫做cell,用tf.nn.rnn_cell.BasicRNNCell,其參數定義如下:

<code>tf.nn.rnn_cell.BasicRNNCell(num_units,activation=None,reuse=None,name=None)/<code>

參數說明:

num_units:int類型,必選參數,表示有多少個cell結構單元;

activation:string類型,激活函數,默認為tanh;

reuse:bool類型,代表是否重新使用scope中的參數;

name:string類型,名稱。

下一篇繼續講《前向傳播和隨時間反向傳播》內容。


分享到:


相關文章: