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訓練
6.TensorFlow2描述循環計算層


return_sequences=True,循環核僅在最后時刻把ht推送到下一層
輸入維度(入RNN,x_train維度)

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可以部分避免梯度消失和梯度下降