一、?RNN介紹
循環神經網絡(Recurrent Neural Network,簡稱 RNN)是一種專門用于處理序列數據的神經網絡,在自然語言處理、語音識別、時間序列預測等領域有廣泛應用。
傳統神經網絡
無法訓練出具有順序的數據。模型搭建時沒有考慮數據上下之間的關系。
提出一種新的神經網絡
RNN(Recurrent Neural Network)在處理序列輸入時具有記憶性,可以保留之前輸入的信息并繼續作為后續輸入的一部分進行計算。
RNN的特點:引入了隱狀態h(hidden state)的概念,隱狀態h可以對序列形的數據提取特征,接著再轉換為輸出。
(1)、在計算時,每一步使用的參數U、W、b都是一樣的,也就是說每個步驟的參數都是共享的,這是RNN的重要特點;
(2)、下文的LSTM和GRU中的權值則不共享。
RNN結構中輸入是x1, x2, .....xn,輸出為y1, y2, ...yn,也就是說,輸入和輸出序列必須要是等長的。
RNN的局限性:
????????當出現“我的職業是程序員,…,我最擅長的是電腦”。當需要預測最后的詞“電腦”。當前的信息建議下一個詞可能是一種技能,但是如果我們需要弄清楚是什么技能,需要先前提到的離當前位置很遠的“職業是程序員”的上下文。這說明相關信息和當前預測位置之間的間隔就變得相當的大。
在理論上,RNN絕對可以處理這樣的長期依賴問題。人們可以仔細挑選參數來解決這類問題中的最初級形式,但在實踐中,RNN則沒法太好的學習到這些知識。
原因是:梯度會隨著時間的推移不斷下降減少,而當梯度值變得非常小時,就不會繼續學習。?
二、LSTM
長短期記憶網絡(Long Short - Term Memory,LSTM)是一種特殊的循環神經網絡(RNN),它在處理序列數據時,能有效解決傳統 RNN 存在的梯度消失和梯度爆炸問題,從而更好地捕捉序列中的長期依賴關系。
原理:
傳統 RNN 在處理長序列時,由于在反向傳播過程中梯度會不斷相乘,容易導致梯度消失(梯度趨近于 0)或梯度爆炸(梯度變得非常大),使得模型難以學習到序列中的長期依賴信息。LSTM 通過引入門控機制,能夠選擇性地記憶和遺忘信息,從而有效解決這一問題。
結構
LSTM 單元主要由三個門(輸入門、遺忘門、輸出門)和一個細胞狀態組成:
遺忘門(Forget Gate):
功能:決定應丟棄哪些關鍵詞信息。
步驟:來自前一個隱藏狀態的信息和當前輸入的信息同時傳遞到 sigmoid 函數中去,輸出值介于 0 和 1 之間,越接近 0 意味著越應該丟棄,越接近 1 意味著越應該保留。
輸入門(Input Gate):
功能:用于更新細胞狀態。
步驟:1、首先將前一層隱藏狀態的信息和當前輸入的信息傳遞到 sigmoid 函數中去。將值調整到 0~1 之間來決定要更新哪些信息。0 表示不重要,1 表示重要。2、將前一層隱藏狀態的信息和當前輸入的信息傳遞到 tanh 函數中去,創造一個新的侯選值向量。最后將 sigmoid 的輸出值與 tanh 的輸出值相乘,sigmoid 的輸出值將決定 tanh 的輸出值中哪些信息是重要且需要保留下來的。
細胞狀態(Cell State):它是 LSTM 的核心,用于保存序列中的長期信息。在每個時間步,細胞狀態會根據遺忘門和輸入門的輸出進行更新。
輸出門(Output Gate):
功能:用來確定下一個隱藏狀態的值。
步驟:1、將前一個隱藏狀態和當前輸入傳遞到 sigmoid 函數中,然后將新得到的細胞狀態傳遞給 tanh 函數。2、將 tanh 的輸出與 sigmoid 的輸出相乘,以確定隱藏狀態應攜帶的信息。再將隱藏狀態作為當前細胞的輸出,把新的細胞狀態和新的隱藏狀態傳遞到下一個時間步長中去。
sigmoid函數圖像:
tanh函數圖像:
三、總結
RNN:在每個時間步,接收當前輸入和上一時刻的隱藏狀態,通過激活函數計算當前隱藏狀態和輸出,信息傳遞較為直接,但容易出現梯度消失或爆炸問題,導致長序列信息難以有效傳遞和利用。
LSTM:在每個時間步,輸入門決定當前輸入信息有多少要存入細胞狀態,遺忘門控制細胞狀態中需要遺忘的信息,輸出門根據細胞狀態和當前隱藏狀態決定輸出內容。這種機制使得 LSTM 能夠選擇性地記憶和遺忘信息,更有效地處理長序列中的關鍵信息。