長短期記憶網路 長短期記憶網路 LSTM 簡介

2021-10-12 18:08:45 字數 2654 閱讀 6107

考慮這樣乙個場景,當我們在看乙個精彩的電影時,我們會被電影中的各個精彩情節所吸引,但是我們不能夠記住所有的電影情節。當觀影結束時,我們會立馬忘記電影裡面一些無關緊要的情節,留在我們腦海中的可能更多的是一些對劇情發展起關鍵作用的場景,這些場景可能在之後的很長一段時間後依然停留在我們的腦海中,以至於當我們去**電影的續集時還能夠利用到之前所**的電影的情節作為鋪墊來幫助我們理解新的內容。人類的這一記憶過程可以抽象為對已有知識的選擇性遺忘與選擇性保留,事實上lstm模組的設計便是與這一記憶過程有著十分密切的聯絡的。

lstm與基本的遞迴神經網路具有類似的控制流程,不同的是lstm基本單元內部的控制邏輯要稍稍複雜。lstm的核心部件是基本單元,其中包含幾個控制結構來對序列中的資料進行處理。lstm基本塊可以通過內部的門結構,包括遺忘門,更新門,輸出門,來對之前的輸入資訊進行增加與遺忘,乙個基本塊內部基本單元之間的關係如下圖所示。

圖1. lstm基本單元結構

為了便於說明,我們可以用乙個簡單的例子來說明遺忘門所起的作用。假設我們用乙個lstm結構來跟蹤一篇英文文字的語法結構,比方說主語的單複數,那麼當文章的主語由單數變為複數的時候我們需要找到乙個方法來清楚我們之前所保留的主語為單數的狀態。在lstm中,乙個遺忘門結構執行如下的操作:

其中,

是用來控制遺忘門行為的權重矩陣,我們將

和 連線起來並用

去乘連線後的矩陣,然後在加上乙個偏置

,最後通過sigmoid函式將值對映到區間[0,1]。遺忘門的輸出結果

將會與上乙個單元的狀態值進行對應元素的乘法運算。因此,如果

中的乙個值為0或接近0,那麼上乙個單元

的對應資訊(比方說代表主語為單數的資訊)將被丟棄,如果

中的值為1,那麼對應的資訊將被保留。

還是以跟蹤句子主語的單複數為例,當我們在遺忘門中對主語為單數的狀態資訊進行遺忘後,還需要對狀態進行更新寫入以表明現在主語已經更新為複數了。更新門實際上就是在進行這一操作,其基本操作可表示為:

與遺忘門類似,更新門的輸出結果

同樣是乙個值在[0,1]範圍內的向量。為了計算新的狀態資訊

,更新門的輸出結果將會與

進行元素之間的乘法運算。

我們需要對在序列間進行傳遞的單元狀態值

進行更新,如lstm的結構圖所示,首先我們需要計算中間變數為:

然後,新的單元狀態為:

我們可以看到,新的單元狀態融合了過去的單元狀態資訊,舊的單元內部的隱藏資訊以及新的輸入資料。

輸出門中可以得到當前單元的輸出值

和傳遞到下乙個單元的隱藏狀態值

,其具體的計算過程如下:

其中計算得到的

可以根據需要接上乙個sigmoid或者softmax作為網路單元的最後輸出。

我們知道乙個向量被輸入到神經網路之後會被執行很多的運算,tanh函式的影象如下所示,可以看出其將輸入的向量變換到(-1,1)之間,這樣當神經網路不斷執行各種運算的時候就會在每一層對向量的值進行限制,從而避免出現向量內部各個值之間的差距過大的現象。當然傳統的relu也可用於rnn的啟用函式,將rnn的啟用函式變為relu可能會產生很大的輸出值,但是在這裡我們不對rnn中啟用函式的選擇問題進行更加深入的**。

圖2. tanh函式影象

根據上述的推導過程,我們便可得到如下的lstm前向計算過程示意圖:

圖3. lstm前向傳播計算過程

lstm的反向傳播過程較為複雜,需要特別注意的是單元內部的資訊

被前向傳遞到了

和 中,因此求導時鏈式法則涉及到

的地方要特別注意。下面是lstm單個單元反向傳播過程的詳細推導,其中

表示矩陣對應元素的乘積,

符號表示矩陣乘法運算,注意在吳恩達深度學習作業中,該部分的過程有些小錯誤。

gru結構要比lstm簡單,在這裡我們只給出其前向計算的計算過程:

其中 作為單元的隱藏狀態不斷往後傳遞資訊,同時在

後加入sigmoid或者softmax函式作為當前單元的輸出。可以明顯的看出gru具有比lstm簡單的結構,因此由於其計算代價較低,gru在眾多場合也有著十分廣泛的應用。

上述提到的迴圈神經網路都能實現對過去的資訊進行利用,我們考慮某個問題場景比如機器翻譯問題知道未來的資訊可能對當前的過程具有積極的作用,為了對序列資料中的當前時刻的未來資訊加以利用,我們可以建立雙向的rnn神經網路結構(brnn)。brnn的思路其實就是增加乙個rnn模組,只不過這個模組的輸入序列是正常序列資料的逆序,最後的輸出結果是兩個方向的輸出進行彙總,從而達到同時利用過去的資訊和未來的資訊來解決當前問題的目的。

此外,我們還可以堆疊多個rnn模組,從而形成乙個深度rnn結構,在deep rnn 中,當前時刻的資料要經過多個rnn模組的前向計算才能得到最後的輸出結果

迴圈神經網路在處理序列化資料如語音識別,機器翻譯等場景中具有非常廣泛的應用,gru和lstm兩種基本的結構通過模組中的門結構來控制資訊的傳遞與利用,門結構也可視為對有用資訊的一種提取方式。對資料中的有用資料進行抽取的新方法也在不斷被提出,後續我們將對神經網路中的注意力機制進行介紹。

lstm原理 長短期記憶網路LSTM

上兩小節我們主要講述了迴圈神經網路rnn,但是儘管 rnn 被設計成可以利用歷史的資訊來 當前的決策,例如使用之前出現的單詞來加強對當前單詞的理解,但是 rnn決策的主要還是最後輸入的一些訊號,更早之前的訊號會隨著時間的推遲而變得強度越來越低,它對後續的影響越來越弱。這樣就會給rnn帶來了新的技術挑...

(十二)長短期記憶(LSTM)

1 介紹 長短期記憶修改了迴圈神經網路隱藏狀態的計算方式,並引入了與隱藏狀態形狀相同的記憶細胞 某些文獻把記憶細胞當成一種特殊的隱藏狀態 2 具體的設計 1 輸入門 遺忘門和輸出門it ftot x twxi ht 1whi bi xtwx f ht 1wh f bf xtw xo h t 1w h...

LSTM長短期記憶人工神經網路簡述

by yang liu 1.什麼是lstm 長短期記憶網路 lstm,long short term memory 是一種時間迴圈神經網路,是為了解決一般的rnn 迴圈神經網路 存在的長期依賴問題而專門設計出來的,屬於時間遞迴神經網路 rnn 中的一種。lstm適合於處理和 時間序列中間隔和延遲非常...