YJango的循环神经网络——实现LSTM YJango的循环神经网络——实现LSTM YJango YJango 7 个月前 介绍 描述最常用的RNN实现方式:Long-Short Term Me
YJango的循環(huán)神經(jīng)網(wǎng)絡(luò)——實(shí)現(xiàn)LSTM
YJango 7 個(gè)月前介紹
描述最常用的RNN實(shí)現(xiàn)方式:Long-Short Term Memory(LSTM)
梯度消失和梯度爆炸
網(wǎng)絡(luò)回憶:在《循環(huán)神經(jīng)網(wǎng)絡(luò)——介紹》中提到循環(huán)神經(jīng)網(wǎng)絡(luò)用相同的方式處理每個(gè)時(shí)刻的數(shù)據(jù)。
- 動(dòng)態(tài)圖:
- 數(shù)學(xué)公式:
設(shè)計(jì)目的:我們希望循環(huán)神經(jīng)網(wǎng)絡(luò)可以將過去時(shí)刻發(fā)生的狀態(tài)信息傳遞給當(dāng)前時(shí)刻的計(jì)算中。
實(shí)際問題:但普通的RNN結(jié)構(gòu)卻難以傳遞相隔較遠(yuǎn)的信息。
- 考慮:若只看上圖藍(lán)色箭頭線的、隱藏狀態(tài)的傳遞過程,不考慮非線性部分,那么就會(huì)得到一個(gè)簡(jiǎn)化的式子(1):
- (1)?
- 如果將起始時(shí)刻的隱藏狀態(tài)信息向第時(shí)刻傳遞,會(huì)得到式子(2)
- (2)?
- 會(huì)被乘以多次,若允許矩陣進(jìn)行特征分解
- (3)?
- 式子(2)會(huì)變成(4)
- (4)?
當(dāng)特征值小于1時(shí),不斷相乘的結(jié)果是特征值的次方向??衰減; 當(dāng)特征值大于1時(shí),不斷相乘的結(jié)果是特征值的t次方向?擴(kuò)增。 這時(shí)想要傳遞的中的信息會(huì)被掩蓋掉,無法傳遞到。
- 類比:設(shè)想y,如果等于0.1,在被不斷乘以0.1一百次后會(huì)變成多小?如果等于5,在被不斷乘以5一百次后會(huì)變得多大?若想要所包含的信息既不消失,又不爆炸,就需要盡可能的將的值保持在1。
- 注:更多內(nèi)容請(qǐng)參閱Deep Learning by Ian Goodfellow中第十章。
Long Short Term Memory (LSTM)
上面的現(xiàn)象可能并不意味著無法學(xué)習(xí),但是即便可以,也會(huì)非常非常的慢。為了有效的利用梯度下降法學(xué)習(xí),我們希望使不斷相乘的梯度的積(the product of derivatives)保持在接近1的數(shù)值。
一種實(shí)現(xiàn)方式是建立線性自連接單元(linear self-connections)和在自連接部分?jǐn)?shù)值接近1的權(quán)重,叫做leaky units。但Leaky units的線性自連接權(quán)重是手動(dòng)設(shè)置或設(shè)為參數(shù),而目前最有效的方式gated RNNs是通過gates的調(diào)控,允許線性自連接的權(quán)重在每一步都可以自我變化調(diào)節(jié)。LSTM就是gated RNNs中的一個(gè)實(shí)現(xiàn)。
LSTM的初步理解
LSTM(或者其他gated RNNs)是在標(biāo)準(zhǔn)RNN ()的基礎(chǔ)上裝備了若干個(gè)控制數(shù)級(jí)(magnitude)的gates。可以理解成神經(jīng)網(wǎng)絡(luò)(RNN整體)中加入其他神經(jīng)網(wǎng)絡(luò)(gates),而這些gates只是控制數(shù)級(jí),控制信息的流動(dòng)量。
數(shù)學(xué)公式:這里貼出基本LSTM的數(shù)學(xué)公式,看一眼就好,僅僅是為了讓大家先留一個(gè)印象,不需要記住,不需要理解。
盡管式子不算復(fù)雜,卻包含很多知識(shí),接下來就是逐步分析這些式子以及背后的道理。 比如的意義和使用原因,sigmoid的使用原因。
門(gate)的理解
理解Gated RNNs的第一步就是明白gate到底起到什么作用。
- 物理意義:gate本身可看成是十分有物理意義的一個(gè)神經(jīng)網(wǎng)絡(luò)。
- 輸入:gate的輸入是控制依據(jù);
- 輸出:gate的輸出是值域?yàn)榈臄?shù)值,表示該如何調(diào)節(jié)其他數(shù)據(jù)的數(shù)級(jí)的控制方式。
- 使用方式:gate所產(chǎn)生的輸出會(huì)用于控制其他數(shù)據(jù)的數(shù)級(jí),相當(dāng)于過濾器的作用。
- 類比圖:可以把信息想象成水流,而gate就是控制多少水流可以流過。
- 例如:當(dāng)用gate來控制向量時(shí),
- 若gate的輸出為時(shí),原來的向量就會(huì)被對(duì)應(yīng)元素相乘(element-wise)后變成:
=
- 若gate的輸出為時(shí),原來的向量就會(huì)被對(duì)應(yīng)元素相乘(element-wise)后變成:
- 控制依據(jù):明白了gate的輸出后,剩下要確定以什么信息為控制依據(jù),也就是什么是gate的輸入。
- 例如:即便是LSTM也有很多個(gè)變種。一個(gè)變種方式是調(diào)控門的輸入。例如下面兩種gate:
- :
- 這種gate的輸入有當(dāng)前的輸入和上一時(shí)刻的隱藏狀態(tài), 表示gate是將這兩個(gè)信息流作為控制依據(jù)而產(chǎn)生輸出的。
- :
- 這種gate的輸入有當(dāng)前的輸入和上一時(shí)刻的隱藏狀態(tài),以及上一時(shí)刻的cell狀態(tài), 表示gate是將這三個(gè)信息流作為控制依據(jù)而產(chǎn)生輸出的。這種方式的LSTM叫做peephole connections。
LSTM的再次理解
明白了gate之后再回過頭來看LSTM的數(shù)學(xué)公式
數(shù)學(xué)公式:
- gates:先將前半部分的三個(gè)式子統(tǒng)一理解。在LSTM中,網(wǎng)絡(luò)首先構(gòu)建了3個(gè)gates來控制信息的流通量。
- 注: 雖然gates的式子構(gòu)成方式一樣,但是注意3個(gè)gates式子和的下角標(biāo)并不相同。它們有各自的物理意義,在網(wǎng)絡(luò)學(xué)習(xí)過程中會(huì)產(chǎn)生不同的權(quán)重。
- 有了這3個(gè)gates后,接下來要考慮的就是如何用它們裝備在普通的RNN上來控制信息流,而根據(jù)它們所用于控制信息流通的地點(diǎn)不同,它們又被分為:
- 輸入門:控制有多少信息可以流入memory cell(第四個(gè)式子)。
- 遺忘門:控制有多少上一時(shí)刻的memory cell中的信息可以累積到當(dāng)前時(shí)刻的memory cell中。
- 輸出門:控制有多少當(dāng)前時(shí)刻的memory cell中的信息可以流入當(dāng)前隱藏狀態(tài)中。
- 注:gates并不提供額外信息,gates只是起到限制信息的量的作用。因?yàn)間ates起到的是過濾器作用,所以所用的激活函數(shù)是sigmoid而不是tanh。
- 信息流:信息流的來源只有三處,當(dāng)前的輸入,上一時(shí)刻的隱藏狀態(tài),上一時(shí)刻的cell狀態(tài),其中是額外制造出來、可線性自連接的單元(請(qǐng)回想起leaky units)。真正的信息流來源可以說只有當(dāng)前的輸入,上一時(shí)刻的隱藏狀態(tài)兩處。三個(gè)gates的控制依據(jù),以及數(shù)據(jù)的更新都是來源于這兩處。
- 分析了gates和信息流后,再分析剩下的兩個(gè)等式,來看LSTM是如何累積歷史信息和計(jì)算隱藏狀態(tài)的。
- 歷史信息累積:
- 式子:
- 其中是本次要累積的信息來源。
- 改寫:
所以歷史信息的累積是并不是靠隱藏狀態(tài)自身,而是依靠memory cell這個(gè)自連接來累積。 在累積時(shí),靠遺忘門來限制上一時(shí)刻的memory cell的信息,并靠輸入門來限制新信息。并且真的達(dá)到了leaky units的思想,memory cell的自連接是線性的累積。
- 當(dāng)前隱藏狀態(tài)的計(jì)算:如此大費(fèi)周章的最終任然是同普通RNN一樣要計(jì)算當(dāng)前隱藏狀態(tài)。
- 式子:
- 當(dāng)前隱藏狀態(tài)是從計(jì)算得來的,因?yàn)槭且跃€性的方式自我更新的,所以先將其加入帶有非線性功能的。 隨后再靠輸出門的過濾來得到當(dāng)前隱藏狀態(tài)。
普通RNN與LSTM的比較
下面為了加深理解循環(huán)神經(jīng)網(wǎng)絡(luò)的核心,再來和YJango一起比較一下普通RNN和LSTM的區(qū)別。
- 比較公式:最大的區(qū)別是多了三個(gè)神經(jīng)網(wǎng)絡(luò)(gates)來控制數(shù)據(jù)的流通。
- 普通RNN:
- LSTM:
- 比較:二者的信息來源都是,?不同的是LSTM靠3個(gè)gates將信息的積累建立在線性自連接的memory cell之上,并靠其作為中間物來計(jì)算當(dāng)前。
- 示圖比較:圖片來自Understanding LSTM,強(qiáng)烈建議一并閱讀。
- 普通RNN:
- LSTM:加號(hào)圓圈表示線性相加,乘號(hào)圓圈表示用gate來過濾信息。
- 比較:新信息從黃色的tanh處,線性累積到memory cell之中后,又從紅色的tanh處加入非線性并返回到了隱藏狀態(tài)的計(jì)算中。
LSTM的類比
對(duì)于用LSTM來實(shí)現(xiàn)RNN的記憶,可以類比我們所用的手機(jī)(僅僅是為了方便記憶,并非一一對(duì)應(yīng))。
普通RNN好比是手機(jī)屏幕,而LSTM-RNN好比是手機(jī)膜。
大量非線性累積歷史信息會(huì)造成梯度消失(梯度爆炸)好比是不斷使用后容易使屏幕刮花。
而LSTM將信息的積累建立在線性自連接的memory cell之上,并靠其作為中間物來計(jì)算當(dāng)前好比是用手機(jī)屏幕膜作為中間物來觀察手機(jī)屏幕。
輸入門、遺忘門、輸出門的過濾作用好比是手機(jī)屏幕膜的反射率、吸收率、透射率三種性質(zhì)。
Gated RNNs的變種
需要再次明確的是,神經(jīng)網(wǎng)絡(luò)之所以被稱之為網(wǎng)絡(luò)是因?yàn)樗梢苑浅W杂傻膭?chuàng)建合理的連接。而上面所介紹的LSTM也只是最基本的LSTM。只要遵守幾個(gè)關(guān)鍵點(diǎn),讀者可以根據(jù)需求設(shè)計(jì)自己的Gated RNNs,而至于在不同任務(wù)上的效果需要通過實(shí)驗(yàn)去驗(yàn)證。下面就簡(jiǎn)單介紹YJango所理解的幾個(gè)Gated RNNs的變種的設(shè)計(jì)方向。
- 信息流:標(biāo)準(zhǔn)的RNN的信息流有兩處:input輸入和hidden state隱藏狀態(tài)。
但往往信息流并非只有兩處,即便是有兩處,也可以拆分成多處,并通過明確多處信息流之間的結(jié)構(gòu)關(guān)系來加入先驗(yàn)知識(shí),減少訓(xùn)練所需數(shù)據(jù)量,從而提高網(wǎng)絡(luò)效果。
例如:Tree-LSTM在具有此種結(jié)構(gòu)的自然語言處理任務(wù)中的應(yīng)用。
- gates的控制方式:與LSTM一樣有名的是Gated Recurrent Unit (GRU),而GRU使用gate的方式就與LSTM的不同,GRU只用了兩個(gè)gates,將LSTM中的輸入門和遺忘門合并成了更新門。并且并不把線性自更新建立在額外的memory cell上,而是直接線性累積建立在隱藏狀態(tài)上,并靠gates來調(diào)控。
- gates的控制依據(jù):上文所介紹的LSTM中的三個(gè)gates所使用的控制依據(jù)都是,但是可以通過與memory cell的連接來增加控制依據(jù)或者刪除某個(gè)gate的或來縮減控制依據(jù)。比如去掉上圖中中的從而變成
介紹完《循環(huán)神經(jīng)網(wǎng)絡(luò)——實(shí)現(xiàn)LSTM》后, 接下來的第三篇《循環(huán)神經(jīng)網(wǎng)絡(luò)——代碼》就是用tensorflow從頭來實(shí)現(xiàn)網(wǎng)絡(luò)內(nèi)容。
總結(jié)
以上是生活随笔為你收集整理的YJango的循环神经网络——实现LSTM YJango的循环神经网络——实现LSTM YJango YJango 7 个月前 介绍 描述最常用的RNN实现方式:Long-Short Term Me的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这年头,老赖没得混了!大数据式追债,你见
- 下一篇: 新闻上的文本分类:机器学习大乱斗 王岳王