https://blog.csdn.net/wjc1182511338/article/details/79285503
因為RNN的問題:遺漏信息,只具有短時記憶
原因:反向傳播時,RNN面臨梯度消失問題? 。梯度更新規(guī)則:新的權(quán)重? =? 權(quán)重 - 學習率*梯度 獲得小梯度更新的層會停止學習—— 那些通常是較早的層。 由于這些層不學習,RNN 可以忘記它在較長序列中看到的內(nèi)容,因此具有短時記憶。
LSTM 和 GRU就是作為解決方案? --------使用“門”的內(nèi)部機制
鏈接里面有動態(tài)圖可以充分了解
激活函數(shù)的特點及其在這里面的應用:
1.tanh:數(shù)值在-1~1之間。
2.sigmoid:數(shù)值在0~1之間 。這樣的設(shè)置有助于更新或忘記信息,因為任何數(shù)乘以 0 都得 0,這部分信息就會剔除掉。同樣的,任何數(shù)乘以 1 都得到它本身,這部分信息就會完美地保存下來。這樣網(wǎng)絡(luò)就能了解哪些數(shù)據(jù)是需要遺忘,哪些數(shù)據(jù)是需要保存。
RNN:輸入和先前隱藏狀態(tài)組合成向量, 向量經(jīng)過激活函數(shù) tanh之后,輸出的是新的隱藏狀態(tài)或網(wǎng)絡(luò)記憶。
LSTM:三種門結(jié)構(gòu):遺忘門、輸入門和輸出門
1.遺忘門:前一層隱藏狀態(tài)的信息和當前輸入的信息傳遞到 sigmoid 函數(shù),遺忘的是上一步細胞狀態(tài)的信息,即ct-1的
2.輸入門:前一層隱藏狀態(tài)的信息和當前輸入的信息傳遞到 sigmoid 函數(shù)和tanh函數(shù)中,兩個輸出相乘,sigmoid 的輸出值將決定 tanh 的輸出值中哪些信息是重要且需要保留下來的。將新的信息選擇性的記錄到細胞狀態(tài)中。
3.細胞狀態(tài):下一步,就是計算細胞狀態(tài)。首先前一層的細胞狀態(tài)與遺忘向量逐點相乘。如果它乘以接近 0 的值,意味著在新的細胞狀態(tài)中,這些信息是需要丟棄掉的。然后再將該值與輸入門的輸出值逐點相加,將神經(jīng)網(wǎng)絡(luò)發(fā)現(xiàn)的新信息更新到細胞狀態(tài)中去。至此,就得到了更新后的細胞狀態(tài)。更新細胞狀態(tài)
4.輸出門:輸出門用來確定下一個隱藏狀態(tài)的值,隱藏狀態(tài)包含了先前輸入的信息。首先,我們將前一個隱藏狀態(tài)和當前輸入傳遞到 sigmoid 函數(shù)中,然后將新得到的細胞狀態(tài)傳遞給 tanh 函數(shù)。最后將 tanh 的輸出與 sigmoid 的輸出相乘,以確定隱藏狀態(tài)應攜帶的信息。再將隱藏狀態(tài)作為當前細胞的輸出,把新的細胞狀態(tài)和新的隱藏狀態(tài)傳遞到下一個時間步長中去。最后決定做什么樣的預測
看圖是最清楚直接理解的,最后的偽代碼實現(xiàn)的,實際就是透過公式理解GRU
GRU:更新門(類似LSTM 中的遺忘門和輸入門)和 重置門。? 對比LSTM張量少訓練快
總結(jié):總而言之,RNN 適用于處理序列數(shù)據(jù)用于預測,但卻受到短時記憶的制約。LSTM 和 GRU 采用門結(jié)構(gòu)來克服短時記憶的影響。門結(jié)構(gòu)可以調(diào)節(jié)流經(jīng)序列鏈的信息流。LSTM 和 GRU 被廣泛地應用到語音識別、語音合成和自然語言處理等。
插一張LSTM的圖片和公式:

時不時的忘記,所以隨便寫下,很基礎(chǔ)的內(nèi)容。原文很詳細,尤其是輸入的幾個流動圖很清楚。
知識未完善部分:1.激活函數(shù)
未完待續(xù)。。。。。。。。。。。。。。。