循環核&循環層


1.卷積神經網絡與循環神經網絡簡單對比

CNN: 借助卷積核(kernel)提取特征后,送入后續網絡(如全連接網絡 Dense)進行分類、目標檢測等操作。 CNN 借助卷積核從空間維度提取信息,卷積核參數空間共享

RNN: 借助循環核(cell)提取特征后, 送入后續網絡(如全連接網絡 Dense)進行預測等操作。 RNN 借助循環核從時間維度提取信息,循環核參數時間共享。 

 什么是卷積核參數空間共享?

給一張輸入圖片,用一個filter去掃這張圖,filter里面的數就叫權重,這張圖每個位置是被同樣的filter掃的,所以權重是一樣的,也就是共享。

2.循環核

                                            

循環核具有記憶力,通過不同時刻的參數共享,實現了對時間序列的信息提取。每個循環核有多個記憶體,對應圖中的多個小圓柱記憶體內存儲着每個時刻的狀態信息ht,這里ht=tanh(xtwxh+ht-1whh+bh)。其中,wxh、whh為權重矩陣,bh為偏置,xt為當前時刻的輸入特征,ht-1為記憶體上一時刻存儲的狀態信息,tanh為激活函數。

 當前時刻循環核的輸出特征yt=softmax(htwhy+by),其中why為權重矩陣,by為偏置,softmax為激活函數,其實就相當於一層全連接層。我們可以設定記憶體的個數從而改變記憶容量,當記憶體的個數被指定,輸入xt輸出yt維度被指定,周圍這些帶訓練參數的維度也就被限定了。

在前向傳播時,記憶體內存儲的狀態信息ht在每個時刻都被刷新,而三個參數矩陣wxh、whh、why和兩個偏置項bh和by自始至終都是固定不變的。

反向傳播時,三個參數和偏置項有梯度下降法更新。

 3.循環核按時間步展開

將循環核按時間步展開, 就是把循環核按照時間軸方向展開,可以得到如圖的形式。 每個時刻記憶體狀態信息h𝑡被刷新,記憶體周圍的參數矩陣和兩個偏置項是固定不變的,我們訓練優化的就是這些參數矩陣

訓練完成后,使用效果最好的參數矩陣執行前向傳播, 然后輸出預測結果。

其實這和我們人類的預測是一致的:我們腦中的記憶體每個時刻都根據當前的輸入而更新; 當前的預測推理是根據我們以往的知識積累用固化下來的“參數矩陣”進行的推理判斷。

可以看出, 循環神經網絡就是借助循環核實現時間特征提取后把提取到的信息送入全連接網絡, 從而實現連續數據的預測。 

 4.循環層(向輸出方向生長)

在 RNN 中, 每個循環核構成一層循環計算層, 循環計算層的層數是向輸出方向增長的。

如下圖所示,左圖的網絡有一個循環核,構成了一層循環計算層;中圖的網絡有兩個循環核,構成了兩層循環計算層;右圖的網絡有三個循環核,構成了三層循環計算層。其中,三個網絡中每個循環核中記憶體的個數可以根據我們的需求任意指定。 

 5.RNN訓練

得到 RNN 的前向傳播結果之后,和其他神經網絡類似,我們會定義損失函數,使用反向傳播梯度下降算法訓練模型。
RNN 唯一的區別在於:由於它每個時刻的節點都可能有一個輸出,所以 RNN 的總損失為所有時刻(或部分時刻)上的損失和

 6.TensorFlow2描述循環計算層

return_sequences:在輸出序列中,返回最后時間步的輸出值ℎ 𝑡還是返回全部時間步的輸出。False 返回最后時刻(圖 1.2.5),True 返回全部時刻(圖1.2.4)。當下一層依然是 RNN 層,通常為 True,反之如果后面是 Dense 層,通常為 Fasle。
return_sequences=False,循環核各時刻會把h t推送到下一層

return_sequences=True,循環核僅在最后時刻把ht推送到下一層

 輸入維度(入RNN,x_train維度)

三維張量(輸入樣本數, 循環核時間展開步數, 每個時間步輸入特征個數)
如上圖所示,左圖一共要送入 RNN 層兩組數據,每組數據經過一個時間步就會得到輸出結果,每個時間步送入三個數值,則輸入循環層的數據維度就是[2, 1, 3];
右圖輸入只有一組數據,分四個時間步送入循環層,每個時間步送入兩個數值 ,則輸入循環層的數據維度就是 [1,4, 2]。
輸出維度
當 return_sequences=True,三維張量(輸入樣本數, 循環核時間展開步數,本層的神經元個數);
當 return_sequences=False,二維張量(輸入樣本數,本層的神經元個數) 

7.RNN-Semantic Meaning

h1代表今天這個單詞的含義(semantic meaning)

h2代表今天 天氣這兩個單詞含義,即這兩個單詞的含義包含在h2向量里面

h3代表今天 天氣 很三個單詞的含義

h4代表今天 天氣 很 好這句話的含義,即這句話的意思包含着了h4這個向量里面了

這就是RNN應用在文本領域時候,每個時間節點上隱含層的表達方式

8.RNN-Exploding/Vanishing Gradient

RNN是一個很難訓練的模型, 原因是存在梯度爆炸、梯度消失的現象

 

當那些偏導數在0-1之間,則會梯度消失;大於1則會梯度爆炸

這樣就需要LSTM模型,LSTM的cell可以部分避免梯度消失和梯度下降

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM