RNN循環神經網絡
RNN循環神經網絡,又稱為時間循環神經網絡。同樣縮寫是RNN的還有一種叫做遞歸神經網絡(結構循環時間網絡)。
1.基本循環神經網絡
其中U、V、W 均為權重值,圖片左邊的基本循環圖等價於右邊分解后的循環圖。從右圖中我們可以看出隱藏值St 取決於St-1 和 xt 。
所以可以寫出以下公式:其中 g()與 f() 為激活函數.
2.雙向循環神經網絡
一個參與正向計算的 A與一個參與反向計算的 A' 。所以這里就相當於又多了一個關系,即St 也與St+1有關。因此可以寫出以下公式:
3.深層循環神經網絡(多層隱藏層)
循環神經網絡的訓練
1.BPTT算法
流程:
- 前向計算每個神經元的輸出值;
- 反向計算每個神經元的誤差項值δ,它是誤差函數E對神經元j的加權輸入的偏導數;
- 計算每個權重的梯度。
- 使用梯度下降算法更新權重
前向計算:若寫成矩陣就是下面這樣的。
誤差計算
計算權重的梯度:
LSTM長短期記憶
因為在梯度的計算過程中是累乘的,所以當數值大於或小於1就會出現累乘為無窮(爆炸)或0(消失),LSTM解決RNN訓練中的梯度消失或者爆炸的方法。
LSTM的思路是這樣的,在原先的隱藏層中加入一個單元狀態C
正是使用這個狀態單元C,才能起到控制作用,其運作圖如下圖所示
三個重要的門:遺忘門 .輸入門 、輸出門
遺忘門:決定了上一時刻的單元狀態Ct-1 有多少保留到當前時刻Ct ;
輸入門:決定了當前時刻網絡的輸入Xt 有多少保存到單元狀態 Ct
輸出門:單元狀態Ct 有多少輸出到LSTM的當前輸出值 ht
上圖所示的LSTM的內部結構,內部結構中的與
表示分別乘和加。
遺忘門:,遺忘門用一個sigmoid函數區分哪些該遺忘,那些該記住。所以經過這個sigmoid函數的參數是前一個狀態S與當前的輸入X組成的向量與一個權重W進行乘積。由此確定那部分為0那部分為1,0表示忘記,1表示記住,於是與上一個C相乘的時候就可以做到把該忘記的忘記了。其中b表示置偏項。
輸入門:
it 挑選出當前狀態下需要記住的東西,然后計算當前的單元狀態 。最后整合前后的狀態C 進行跟新。
輸出門:
首先確定一下多少內容是需要輸出出去,所以先建立一個Ot ,然后利用這個Ot 從新得出的單元狀態C中計算得到 h
總結下就是下面這個圖:
參考原文:
https://zybuluo.com/hanbingtao/note/581764