RNN與LSTM 3D演示

這篇文章的內容來自B站UP主“梗直哥丶 ”的視頻

RNN

簡單的神經網絡一般這樣,輸入層x進入隱藏層神經元s,再經過輸出產生最後的結果y,通過調整權重\(W_{in}\)\(W_{out}\)就可以實現學習的效果。

image-20220428195630938

通常情況下,深度神經網絡都是水平方向延伸的,比如卷積神經網絡CNN,隱藏層數量多了,但是沒有考慮單個隱層在時間上時序變化。

RNN則不同,它關注隱層每個神經元在時間維度上的不斷成長與進步。體現在圖上,變換一下3D的視角,網絡結構不變,沒有添加新的神經元,但是沿着時間軸recurrent,也就是重複,建立時序上的關聯,這裏的層級擴展並非神經元數量的真實增加,而是表示隱層在不同時刻的狀態。

image-20220428154750526

根據問題的需要,隱層的時間關聯既可以是全連接式的,所有線都相連。

image-20220428155017152

但也可以是自己對自己

image-20220428155204261

假如用\(W_S\)來表示層級間的權重矩陣,RNN通常會假定不同的層,其實也就是不同的時刻共享一個\(W_S\),這樣可以有效地減少訓練參數。

對神經元模型,如果隱藏層輸出\(S_i = f(\sum_{n}^N(w_{in}^i·x_n^i + b_i))\)

寫成矩陣形式就是\(S = f(W_{in}·X + b)\)

對RNN而言輸出就變成了\(S_t = f(W_{in}X + W_sS_{t-1} + b)\)

多了一項\(W_sS_{t-1}\)

這樣就建立了隱層在不同時刻,t-1時刻和t時刻他們之間的一種迭代關係。換言之,就是讓神經網絡有了某種記憶的能力。

RNN本質上就是用這樣一種看似是級聯,但實際上卻是沿着時序,反覆迭代的網絡結構,實現了對序列數據的學習

image-20220428160210289

LSTM

傳統的RNN對時間序列的預測捉襟見肘,它雖然建立了不同時刻隱藏層之間的聯繫,實現了記憶效果,但只是基於前一時刻,是一種short-memory。

與RNN相比,LSTM增加了一條新的時間鏈,記錄long-term memory,用C來表示,同時它增加了兩條鏈間的關聯關係。新增加的鏈條就相當於記事的日記本。

image-20220428191325396

以t時刻爲例,和RNN相比,計算隱層狀態\(S_t\)時,除了輸入和前一時刻,還要包含當前時刻的日記信息\(C_t\)

放大\(S_t\)\(C_t\)間的關聯,一條線拆成了三條線,其中包含兩步更加細緻的操作,刪除舊日記,增添新日記。

image-20220428192021594

首先,函數f1就像是一塊橡皮擦,根據昨天的記憶\(s_{t-1}\)和今天的輸入\(x_t\),決定要修改日記中的那些記錄,數學語言描述就是:

\(f_1 = sigmoid (w_1 \begin{bmatrix} s_{t-1} \\ x_t \end{bmatrix}+ b_1)\)

其中sigmoid函數取值在0-1之間,矩陣元素相乘時,會抹掉那些取值爲零的元素,相當於選擇性遺忘部分記憶,因此也常常被稱爲forget gate。

然後,函數f2就像是一支鉛筆,再次根據昨天的記憶和今天的輸入,決定要在日記本上增加那些記錄,數學語言沒描述就是:

\(f_2 = sigmoid (w_2 \begin{bmatrix} s_{t-1} \\ x_t \end{bmatrix}+ b_2) * tanh(\tilde{w_2}\begin{bmatrix} s_{t-1} \\ x_t \end{bmatrix}+\tilde{b_2})\)

其中sigmoid函數再次對內容進行了選擇,tanh函數取值在-1到1之間,這步操作不是遺忘,而是相當於把這兩天的事情進行梳理和歸納,因此也常常被稱爲input gate。

先用橡皮在日記本上刪減,再用鉛筆在日記本上增加記錄,兩步操作合起來,用公式表示就是

\(c_t = f_1 * c_{t-1} + f_2\)

這樣就得到了新的日記\(c_t\),它除了會繼續往下傳遞,同時會被用作更新當前短期記憶\(s_t\),最後就可以計算輸出得到的\(y_t\),同時保持短期網絡記憶鏈\(s_t\)和長期記憶鏈\(c_t\),並且相互更新。

把3D模型旋轉90度,拉伸變形,然後把長期記憶鏈C投影到平面上,再擴展長短期記憶鏈間的關聯,就對應上經典LSTM示圖了。

image-20220428193548319

這個圖之所以難懂,主要是因爲它用二維視角看三維信息,產生了重疊,而且一下子擺上了太多的細節,極大地增加了初學者的理解難度。

和RNN相比,LSTM引入了更多的參數矩陣,因此訓練起來麻煩一些,但依然可以用梯度下降算法進行。

由於深度發覺了數據時序上的有趣關聯,LSTM在某種程度上模擬了大腦,關注重要片段,而忽略無關信息,這極大拓展了人工智能的領域。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章