在傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中,模型不會關(guān)注上一時刻的處理會有什么信息可以用于下一時刻,每一次都只會關(guān)注當(dāng)前時刻的處理。舉個例子來說,我們想對一部影片中每一刻出現(xiàn)的事件進(jìn)行分類,如果我們知道電影前面的事件信息,那么對當(dāng)前時刻事件的分類就會非常容易。實際上,傳統(tǒng)神經(jīng)網(wǎng)絡(luò)沒有記憶功能,所以它對每一刻出現(xiàn)的事件進(jìn)行分類時不會用到影片已經(jīng)出現(xiàn)的信息,那么有什么方法可以讓神經(jīng)網(wǎng)絡(luò)能夠記住這些信息呢?答案就是Recurrent Neural Networks(RNNs)遞歸神經(jīng)網(wǎng)絡(luò)。
遞歸神經(jīng)網(wǎng)絡(luò)的結(jié)果與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)有一些不同,它帶有一個指向自身的環(huán),用來表示它可以傳遞當(dāng)前時刻處理的信息給下一時刻使用,結(jié)構(gòu)如下:
其中, Xt 為輸入,A 為模型處理部分, ht 為輸出。
為了更容易地說明遞歸神經(jīng)網(wǎng)絡(luò),我們把上圖展開,得到:
這樣的一條鏈狀神經(jīng)網(wǎng)絡(luò)代表了一個遞歸神經(jīng)網(wǎng)絡(luò),可以認(rèn)為它是對相同神經(jīng)網(wǎng)絡(luò)的多重復(fù)制,每一時刻的神經(jīng)網(wǎng)絡(luò)會傳遞信息給下一時刻。如何理解它呢?假設(shè)有這樣一個語言模型,我們要根據(jù)句子中已出現(xiàn)的詞預(yù)測當(dāng)前詞是什么,遞歸神經(jīng)網(wǎng)絡(luò)的工作原理如下:
其中,W 為各類權(quán)重,x 表示輸入,y 表示輸出,h 表示隱層處理狀態(tài)。
遞歸神經(jīng)網(wǎng)絡(luò)因為具有一定的記憶功能,可以被用來解決很多問題,例如:語音識別、語言模型、機(jī)器翻譯等。但是它并不能很好地處理長時依賴問題。
長時依賴問題
長時依賴是這樣的一個問題,當(dāng)預(yù)測點與依賴的相關(guān)信息距離比較遠(yuǎn)的時候,就難以學(xué)到該相關(guān)信息。例如在句子”我出生在法國,……,我會說法語“中,若要預(yù)測末尾”法語“,我們需要用到上下文”法國“。理論上,遞歸神經(jīng)網(wǎng)絡(luò)是可以處理這樣的問題的,但是實際上,常規(guī)的遞歸神經(jīng)網(wǎng)絡(luò)并不能很好地解決長時依賴,好的是LSTMs可以很好地解決這個問題。
LSTM 神經(jīng)網(wǎng)絡(luò)
Long Short Term Mermory network(LSTM)是一種特殊的RNNs,可以很好地解決長時依賴問題。那么它與常規(guī)神經(jīng)網(wǎng)絡(luò)有什么不同?
首先我們來看RNNs具體一點的結(jié)構(gòu):
所有的遞歸神經(jīng)網(wǎng)絡(luò)都是由重復(fù)神經(jīng)網(wǎng)絡(luò)模塊構(gòu)成的一條鏈,可以看到它的處理層非常簡單,通常是一個單tanh層,通過當(dāng)前輸入及上一時刻的輸出來得到當(dāng)前輸出。與神經(jīng)網(wǎng)絡(luò)相比,經(jīng)過簡單地改造,它已經(jīng)可以利用上一時刻學(xué)習(xí)到的信息進(jìn)行當(dāng)前時刻的學(xué)習(xí)了。
LSTM的結(jié)構(gòu)與上面相似,不同的是它的重復(fù)模塊會比較復(fù)雜一點,它有四層結(jié)構(gòu):
其中,處理層出現(xiàn)的符號及表示意思如下:
LSTMs的核心思想
理解LSTMs的關(guān)鍵就是下面的矩形方框,被稱為memory block(記憶塊),主要包含了三個門(forget gate、input gate、output gate)與一個記憶單元(cell)。方框內(nèi)上方的那條水平線,被稱為cell state(單元狀態(tài)),它就像一個傳送帶,可以控制信息傳遞給下一時刻。
這個矩形方框還可以表示為:
這兩個圖可以對應(yīng)起來看,下圖中心的 ct 即cell,從下方輸入( ht?1 , xt )到輸出 ht的一條線即為cell state, ft,it,ot 分別為遺忘門、輸入門、輸出門,用sigmoid層表示。上圖中的兩個tanh層則分別對應(yīng)cell的輸入與輸出。
LSTM可以通過門控單元可以對cell添加和刪除信息。通過門可以有選擇地決定信息是否通過,它有一個sigmoid神經(jīng)網(wǎng)絡(luò)層和一個成對乘法操作組成,如下:
該層的輸出是一個介于0到1的數(shù),表示允許信息通過的多少,0 表示完全不允許通過,1表示允許完全通過。
逐步解析LSTM
LSTM第一步是用來決定什么信息可以通過cell state。這個決定由“forget gate”層通過 sigmoid 來控制,它會根據(jù)上一時刻的輸出 ht?1 和當(dāng)前輸入 xt 來產(chǎn)生一個0到1 的 ft 值,來決定是否讓上一時刻學(xué)到的信息 Ct?1 通過或部分通過。如下:
舉個例子來說就是,我們在之前的句子中學(xué)到了很多東西,一些東西對當(dāng)前來講是沒用的,可以對它進(jìn)行選擇性地過濾。
第二步是產(chǎn)生我們需要更新的新信息。這一步包含兩部分,第一個是一個“input gate”層通過sigmoid來決定哪些值用來更新,第二個是一個tanh層用來生成新的候選值,它作為當(dāng)前層產(chǎn)生的候選值可能會添加到cell state中。我們會把這兩部分產(chǎn)生的值結(jié)合來進(jìn)行更新。
現(xiàn)在我們對老的cell state進(jìn)行更新,首先,我們將老的cell state乘以 ft 來忘掉我們不需要的信息,然后再與 it ? 相加,得到了候選值。
一二步結(jié)合起來就是丟掉不需要的信息,添加新信息的過程:
舉個例子就是,在前面的句子中我們保存的是張三的信息,現(xiàn)在有了新的李四信息,我們需要把張三的信息丟棄掉,然后把李四的信息保存下來。
最后一步是決定模型的輸出,首先是通過sigmoid層來得到一個初始輸出,然后使用tanh將 Ct 值縮放到-1到1間,再與sigmoid得到的輸出逐對相乘,從而得到模型的輸出。
這顯然可以理解,首先sigmoid函數(shù)的輸出是不考慮先前時刻學(xué)到的信息的輸出,tanh函數(shù)是對先前學(xué)到信息的壓縮處理,起到穩(wěn)定數(shù)值的作用,兩者的結(jié)合學(xué)習(xí)就是遞歸神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)思想。至于模型是如何學(xué)習(xí)的,那就是后向傳播誤差學(xué)習(xí)權(quán)重的一個過程了。
上面是對LSTM一個典型結(jié)構(gòu)的理解,當(dāng)然,它也會有一些結(jié)構(gòu)上的變形,但思想基本不變,這里也就不多講了。
來源:電子創(chuàng)新網(wǎng)
審核編輯 黃昊宇
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4814瀏覽量
103618 -
LSTM
+關(guān)注
關(guān)注
0文章
60瀏覽量
4051
發(fā)布評論請先 登錄
評論