與傳統的前向神經網絡和卷積神經網絡不同,遞歸神經網絡(RNN)是一種擅長處理文本、時間序列、股票市場等序列數據的模型。主要介紹了循環神經網絡中RNN、LSTM、GRU幾個重要模型的發展過程和結構差異,並詳細推導了RNN梯度爆炸和梯度消失的原因。

1.循環神經網絡的背景
前向神經網絡(Forward neural network)和有線電視新聞網(CNN)在許多任務中取得了良好的效果,但是這些網絡結構通常更適合於一些沒有時間或序列依賴性的數據,並且接收到的輸入通常與前一時刻的輸入無關。
然而,序列數據是不同的,並且在輸入之間有一個序列。當前輸入的結果通常與前后輸入相關。例如,一個句子包含四個輸入單詞:“我”、“去”、“購物中心”和“打車”。這四個詞按不同的順序排列,有不同的意思,“我打車去購物中心”和“我打車去購物中心”。因此,我們通常需要按照一定的順序閱讀句子來理解句子的意思。
面對這種情況,我們需要使用循環神經網絡,它按順序處理所有輸入。在每個時間點,將有一個向量來存儲與時間點相關的信息(可以是時間點之前的信息或時間點之后的信息)。通過向量h和輸入向量x,可以更准確地判斷當前結果。下列符號表示:
Xt表示時間t的輸入向量(例如,第t個字的字向量)
Ht代表時間T的隱藏向量(包括從開始到時間T的相關信息)
Yt表示時間t的輸出向量(通常是預測結果)。
2.RNN
2.1 RNN結構
RNN是一個結構相對簡單的相對早期的循環神經網絡。總體結構如下圖所示。
RNN神經元
在圖中,x、h和y分別代表RNN神經元的輸入、隱藏狀態和輸出。
u,w,v是線性變換向量x,h,y的矩陣。
在RNN,同一神經元時刻都是共享的。神經元擴張后,如下圖所示。
RNN擴張
可以看出,RNN神經元在時間T接收的輸入包括當前時間的輸入xt和前一時間的隱藏狀態ht-1。輸出包括當前時間的隱藏狀態ht和當前時間的輸出yt。
因此,RNN的xt輸入只包含時間信息,不包含序列信息;Ht根據xt和ht-1計算,包括歷史信息和當前輸入信息。ht和yt的計算方法如下。計算ht時,激活函數通常為tanh,而計算輸出yt時,激活函數通常為softmax(批量ai偽原創,PHP實現批量偽原創)。2.2缺陷(梯度消失和梯度爆炸)
3個輸入數據序列的RNN
讓我們先看看只有3個輸入數據的序列,如上圖所示。此時,我們的隱藏層h1、h2、h3和輸出y1、y2、y3的計算公式如下:
RNN在時間t的損失函數是Lt,總損失函數是L=L1 L2 L3。
時間t=3時損耗函數L3相對於網絡參數u、w、v的梯度如下:
可以看出,參數矩陣V(對應於輸出yt)的梯度沒有長期依賴性,只有時間t=3時的序列。然而,參數矩陣U(對應於輸入xt)和參數矩陣W(對應於隱藏狀態ht)的梯度具有長期依賴性,並且取決於先前的隱藏層狀態h1和h2。在時間t,U和W的損失函數Lt的梯度可以推導如下:
乘法項是導致RNN梯度消失和梯度爆炸的主要原因。乘法項可以轉換如下:
“Tanh”代表tanh的衍生物。可以看出,RNN在尋找梯度時實際上使用了(tanh' × W)的串聯。何時(tanh' × W)
1: 00時,多次乘法容易引起梯度爆炸;當(2020最新NLP人工智能算法)為1時,多次乘法很容易導致梯度消失。
由於RNN計算梯度時的問題,LSTM(長期和短期記憶網絡)出現了。LSTM在許多方面壓垮了RNN,並能很好地緩解梯度消失和梯度爆炸的問題。
3.LSTM
我們可以通過LSTM更好地緩解RNN梯度消失的問題。讓我們先了解一下LSTM的結構。
3.1 LSTM結構
RNN和LSTM結構
上圖來自科拉的博客,我們可以看到LSTM和RNN的神經元結構有很大的不同。傳統的RNN神經元將接受前一時刻的隱藏狀態ht-1和當前輸入xt。
另一方面,LSTM神經元也輸入細胞狀態ct-1。細胞狀態C類似於RNN的隱藏狀態H,兩者都保存歷史信息,從CT-2到CT-1到CT。在LSTM,C在RNN扮演着與H相似的角色,即保存歷史狀態信息,而在LSTM,H更多的是保存以前的輸出信息。
RNN和LSTM此外,LSTM內部的計算更加復雜,包括遺忘門、輸入門和輸出門。接下來,分別介紹每個門的功能。
遺忘門:上圖中的紅框是LSTM遺忘門部分,用於判斷細胞狀態ct-1中哪些信息應該刪除。其中σ代表激活函數sigmoid。通過sigmoid激活函數進入ht-1和xt后,得到ft,ft中每個值的范圍為[0,1]。ft中的值越接近1,在單元狀態ct-1中相應位置的值應該被記住得越多。ft中的值越接近0,就越應該忘記單元狀態ct-1中相應位置的值。通過將ft和ct-1乘以位(ElementWise乘法),可以獲得遺忘無用信息后的c't-1。
輸入門:上圖中的紅框是LSTM輸入門部分,用於確定哪些新信息應該添加到單元狀態c't-1。其中σ代表激活函數sigmoid。輸入ht-1和xt可以通過tanh激活函數獲得新的輸入信息(圖中帶有波浪線的Ct),但是這些新信息並不都是有用的,所以有必要使用ht-1和xt通過sigmoid函數獲得,並且它指示哪些新信息是有用的。將兩個向量相乘的結果加到c't-1上,以獲得時間t的細胞狀態ct。
輸出門:上圖中的紅色方框是LSTM輸出門部分,用於確定哪些信息應該輸出到ht。單元狀態ct獲得可以通過tanh函數輸出的信息,然后ht-1和xt通過sigmoid函數獲得向量ot,ot的每個維度的范圍是[0,1],其指示輸出的哪些位置應該被移除和哪些位置應該被保留。兩個向量相乘的結果就是最終的ht。
3.2 LSTM緩解梯度消失和梯度爆炸
在前一節中,我們知道梯度消失在RNN的主要原因是梯度函數包含一個連續的乘法項。如果可以去掉連續乘法項,梯度消失的問題就可以克服。如何去掉乘法因子?我們可以通過使乘法項近似等於0或近似等於1來移除乘法項。
LSTM可以通過門使乘法項等於0或1。首先,讓我們來看看LSTM CT和ht的計算公式。在公式中,ft和ot都是由sigmoid函數得到的,這意味着它們的值要么接近0,要么接近1。因此,LSTM的乘法術語變成了:
因此,當門的梯度接近1時,乘法項可以保證梯度在LSTM很好地傳遞,避免梯度消失。
然而,當門的梯度接近零時,這意味着來自前一時刻的信息對當前時刻沒有影響,並且此時沒有必要返回梯度。
這就是為什么LSTM能夠克服梯度消失和梯度爆炸。
4.蘇軍總參謀部情報總局
GRU是LSTM的變種,其結構比LSTM簡單。LSTM有三個門(忘記門忘記、輸入門輸入、輸出門輸出),而GRU只有兩個門(更新門更新、復位門復位)。此外,GRU在LSTM沒有丙型細胞。
GRU神經元的內部結構
GRU更新公式
圖中的Zt和rt分別代表更新門(紅色)和復位門(藍色)。復位門rt控制信息ht-1從前一狀態到候選狀態的比例(圖中ht帶有波浪線)。復位門rt值越小,ht-1的乘積越小,添加到候選狀態的信息ht-1越少。更新門用於控制先前狀態的多少信息ht-1保留在新狀態ht中。當(1- zt)較大時,保留的信息就越多。
5.摘要
循環神經網絡適用於序列數據,也是學習自然語言處理的必要模型。許多自然語言處理應用和算法使用循環神經網絡。
傳統的RNN容易出現梯度消失和梯度爆炸,因此LSTM及其變體目前普遍使用。
在實際使用過程中,循環神經網絡,即多層循環神經網絡也可以深化。反向網絡,如biLSTM,也可以添加,前向和后向信息可以同時使用。
如果您有互聯網問題,也可以咨詢我,謝謝!如果你也想一起學習人工智能,歡迎留言交流。
