通俗理解 LSTM網路

2021-10-21 02:27:52 字數 2395 閱讀 8717

簡單來說,lstm通過一條主線,三個門來處理序列資訊;每個時刻主線上都會加入新時刻的資料,然後將主線上的上的資料輸出並傳遞給下時刻

這裡對lstm常用到的幾個計算和函式做乙個說明:

sigmoid函式:用於輸出乙個0~1的概率值或比例值,一般搭配乘法運算,用於控制資訊傳遞的比例,同時sigmoid的非線性變換能夠增加模型學習非線性特徵的能力;一般啟用函式的作用就是增加模型學習非線性特徵的能力,因為單純的矩陣乘法沒有學習非線性特徵的能力

乘法:一般將乙個比例值和資訊相乘,用於控制資訊傳遞的比例

加法:一般將兩種資訊想加,做資訊的融合

主線上的值是歷史時刻輸出門值的加權和

每一時刻,主線上的值都會更新為當前主線上的值當前輸出門的值的加權和;第乙個權重由遺忘門得到,第二個權重由輸出門內部的sigmoid函式得到;這種方式類似於指數加權平均,時間距離遠的輸出門權重更小

對於每乙個新時刻,主線的值會更新為當前主線上的值當前輸出門的值的加權和,而遺忘門的作用是:給出當前主線資料的權重

具體計算方法如下:

將上一時刻的輸出、當前時刻的輸入拼接成乙個長向量後和權重矩陣點乘,然後通過sigmoid函式輸出乙個0~1的資料,最後用於和主線上的資料做乘法;

遺忘門的意義在於更新後的當前主線資料更新後主線資料的比例(0全部捨棄,1全部接受)

補充:lstm 剛提出時沒有遺忘門,等價於遺忘門輸出的值恒為1,這樣一來就保證了主線上的資訊會完全被當前時刻接受,不會消失。類似於 resnet 中的殘差連線。

輸入門的作用是:對於新時刻,將新時刻的資訊按一定權重加到主線上,從而更新主線值

輸人門需要計算以下兩個值:

ct 和 it 都是通過將上一時刻的輸出當前時刻的輸入拼接成乙個長向量然後和權重矩陣點乘得到的 ,但 ct 使用tanh函式啟用後輸出;而 it 使用sigmoid函式啟用後輸出乙個0~1的概率值;

最後將 ct 和當前主線上的值加權相加得到新的主線值,權重分別為it遺忘門的輸出

輸出門用於輸出的當前時刻模型計算的值;輸出門和輸入門類似,需要計算輸出值輸出值的比例ot,最後將兩個值相乘做為輸出門的輸出

輸出值:

將主線上的值通過乙個tanh函式啟用得到

輸出值的比例( ot ):

通過將當前時刻輸入上一時刻的輸出拼接成乙個長向量然後和權重矩陣點乘得到,最後通過sigmoid函式轉化成乙個0~1之間的比例

輸出門輸出( ht ):

將模型輸出的值和輸出值的比例相乘得到最終模型的輸出

模型的輸出會傳遞到兩個地方,乙個直接輸出,乙個傳遞到下一時刻

使用多層lstm結構,類似多層全連線網路,只是將全連線網路中的神經元替換成lstm神經元

使用雙向lstm(bilstm),使lstm能夠同時參考當前時刻之前和當前時刻之後的資訊,但雙向lstm只是簡單的將兩個lstm得到的輸出拼接到一起,前後資訊沒有交流,因此時間資訊的獲取能力要弱於transformer的self-attention,同時相比於self-attention,lstm容易出現梯度瀰散

使用dropout,但是這裡的dropout和rnn的關係不大; dropout不使用在lstm神經元內部,而是使用在多層lstm網路的的不同的網路層之間

理解LSTM網路

lstm long shortterm memory長短項記憶 網路是一種特殊的rnn,可以學習long term中的依賴。hochreiter schmidhuber 1997 向世人介紹了它,然後在接下來的工作中不斷被人們完善。它在很多問題上表現異常的好,現在也被人們廣泛地使用。所有遞迴神經網路...

理解LSTM網路

傳統的神經網路不能做到這一點,這似乎是乙個主要的缺點。例如,假設您想要對電影中每個點發生的事件進行分類。目前尚不清楚傳統神經網路如何利用其對電影中先前事件的推理來得出後面的事件。迴圈神經網路解決了這個問題。它們是帶有迴圈的網路,允許資訊持續存在。在上圖中,神經網路結構 a 通過一些輸入 xt 並輸出...

通俗理解卷積神經網路

2012年我在北京組織過8期machine learning讀書會,那時 機器學習 非常火,很多人都對其抱有巨大的熱情。當我2013年再次來到北京時,有乙個詞似乎比 機器學習 更火,那就是 深度學習 有何問題,歡迎不吝指正。神經網路由大量的神經元相互連線而成。每個神經元接受線性組合的輸入後,最開始只...