動(dòng)態(tài)可視化:一步步拆解LSTM和GRU

姓名:閆偉? 學(xué)號(hào):15020150038

轉(zhuǎn)載自:https://zhuanlan.zhihu.com/p/45072374

【嵌牛導(dǎo)讀】:LSTM(Long Short-Term Memory)是長短期記憶網(wǎng)絡(luò)梦碗,是一種時(shí)間遞歸神經(jīng)網(wǎng)絡(luò),適合于處理和預(yù)測(cè)時(shí)間序列中間隔和延遲相對(duì)較長的重要事件薄风。LSTM 已經(jīng)在科技領(lǐng)域有了多種應(yīng)用昔搂【涔撸基于 LSTM 的系統(tǒng)可以學(xué)習(xí)翻譯語言土辩、控制機(jī)器人、圖像分析抢野、文檔摘要拷淘、語音識(shí)別圖像識(shí)別、手寫識(shí)別指孤、控制聊天機(jī)器人启涯、預(yù)測(cè)疾病、點(diǎn)擊率和股票恃轩、合成音樂等等任務(wù)结洼。

【嵌牛鼻子】:LSTM GRU?

【嵌牛提問】:如何更詳細(xì)的了解LSTM和GRU的結(jié)構(gòu)?

【嵌牛正文】:

在這篇文章中,我們將從LSTM和GRU背后的知識(shí)開始叉跛,逐步拆解它們的內(nèi)部工作機(jī)制松忍。如果你想深入了解這兩個(gè)網(wǎng)絡(luò)的原理,那么這篇文章就是為你準(zhǔn)備的筷厘。

問題:短期記憶

如果說RNN有什么缺點(diǎn)鸣峭,那就是它只能傳遞短期記憶。當(dāng)輸入序列夠長時(shí)酥艳,RNN是很難把較早的信息傳遞到較后步驟的叽掘,這意味著如果我們準(zhǔn)備了一段長文本進(jìn)行預(yù)測(cè),RNN很可能會(huì)從一開始就遺漏重要信息玖雁。

出現(xiàn)這個(gè)問題的原因是在反向傳播期間,RNN的梯度可能會(huì)消失盖腕。我們都知道赫冬,網(wǎng)絡(luò)權(quán)重更新依賴梯度計(jì)算,RNN的梯度會(huì)隨著時(shí)間的推移逐漸減小溃列,當(dāng)序列足夠長時(shí)劲厌,梯度值會(huì)變得非常小,這時(shí)權(quán)重?zé)o法更新听隐,網(wǎng)絡(luò)自然會(huì)停止學(xué)習(xí)补鼻。

梯度更新規(guī)則

根據(jù)上圖公式:新權(quán)重=權(quán)重-學(xué)習(xí)率×梯度。已知學(xué)習(xí)率是個(gè)超參數(shù),當(dāng)梯度非常小時(shí)风范,權(quán)重和新權(quán)重幾乎相等咨跌,這個(gè)層就停止學(xué)習(xí)了。由于這些層都不再學(xué)習(xí)硼婿,RNN就會(huì)忘記在較長序列中看到的內(nèi)容锌半,只能傳遞短期記憶。

解決方案:LSTM和GRU

LSTM和GRU都是為了解決短期記憶這個(gè)問題而創(chuàng)建的寇漫。它們都包含一種名為“控制門”的內(nèi)部機(jī)制刊殉,可以調(diào)節(jié)信息流:

這些門能判斷序列中的哪些數(shù)據(jù)是重要的,哪些可以不要州胳,因此记焊,它就可以沿著長序列傳遞相關(guān)信息以進(jìn)行預(yù)測(cè)。截至目前栓撞,基于RNN的幾乎所有實(shí)際應(yīng)用都是通過這兩個(gè)網(wǎng)絡(luò)實(shí)現(xiàn)的遍膜,無論是語音識(shí)別、語音合成腐缤,還是文本生成捌归,甚至是為視頻生成字幕。

在下文中岭粤,我們會(huì)詳細(xì)介紹它們背后的具體思路惜索。

人類的記憶

讓我們先從一個(gè)思維實(shí)驗(yàn)開始。雙11快到了剃浇,假設(shè)你想買幾袋麥片當(dāng)早餐巾兆,現(xiàn)在正在瀏覽商品評(píng)論。評(píng)論區(qū)的留言很多虎囚,你的閱讀目的是判斷評(píng)論者是好評(píng)還是差評(píng):

以上圖評(píng)論為例角塑,當(dāng)你一目十行地讀過去時(shí),你不太會(huì)關(guān)注“this”“give”“all”“should”這些詞淘讥,相反地圃伶,大腦會(huì)下意識(shí)被“amazing”“perfectly balanced breakfast”這些重點(diǎn)詞匯吸引。糾結(jié)了一晚上蒲列,最后你下單了窒朋。第二天,你朋友問起你為什么要買這個(gè)牌子的麥片蝗岖,這時(shí)你可能連上面這些重點(diǎn)詞都忘光了侥猩,但你會(huì)記得評(píng)論者最重要的觀點(diǎn):“will definitely be buying again”(肯定會(huì)再光顧)。

就像上圖展示的抵赢,那些不重要的詞仿佛一讀完就被我們從腦海中清除了欺劳。而這基本就是LSTM和GRU的作用唧取,它們可以學(xué)會(huì)只保留相關(guān)信息進(jìn)行預(yù)測(cè),并忘卻不相關(guān)的數(shù)據(jù)划提。

RNN綜述

為了理解LSTM和GRU是怎么做到這一點(diǎn)的枫弟,我們先回顧一下它們的原型RNN。下圖是RNN的工作原理腔剂,輸入一個(gè)詞后媒区,這個(gè)詞會(huì)被轉(zhuǎn)換成機(jī)器可讀的向量;同理掸犬,輸入一段文本后袜漩,RNN要做的就是按照順序逐個(gè)處理向量序列。

按順序逐一處理

我們都知道湾碎,RNN擁有“記憶”能力宙攻。處理向量時(shí),它會(huì)把先前的隱藏狀態(tài)傳遞給序列的下一步介褥,這個(gè)隱藏狀態(tài)就充當(dāng)神經(jīng)網(wǎng)絡(luò)記憶座掘,它包含網(wǎng)絡(luò)以前見過的先前數(shù)據(jù)的信息。

將隱藏狀態(tài)傳遞給下一個(gè)時(shí)間步

那么這個(gè)隱藏狀態(tài)是怎么計(jì)算的柔滔?讓我們看看RNN的第一個(gè)cell溢陪。如下圖所示,首先睛廊,它會(huì)把輸入x和上一步的隱藏狀態(tài)組合成一個(gè)向量形真,使這個(gè)的向量包含當(dāng)前輸入和先前輸入的信息;其次超全,向量經(jīng)tanh激活咆霜,輸出新的隱藏狀態(tài)。

Tanh激活

激活函數(shù)Tanh的作用是調(diào)節(jié)流經(jīng)網(wǎng)絡(luò)的值嘶朱,它能把值始終約束在-1到1之間蛾坯。

激活函數(shù)Tanh

當(dāng)向量流經(jīng)神經(jīng)網(wǎng)絡(luò)時(shí),由于各種數(shù)學(xué)運(yùn)算疏遏,它會(huì)經(jīng)歷許多次變換脉课。假設(shè)每流經(jīng)一個(gè)cell,我們就把值乘以3财异,如下圖所示倘零,這個(gè)值很快就會(huì)變成天文數(shù)字,導(dǎo)致其它值看起來微不足道宝当。

不用Tanh進(jìn)行調(diào)節(jié)

而使用了Tanh函數(shù)后,如下圖所示胆萧,神經(jīng)網(wǎng)絡(luò)能確保值保持在-1和1之間庆揩,從而調(diào)節(jié)輸出俐东。

用Tanh進(jìn)行調(diào)節(jié)

以上就是一個(gè)最基礎(chǔ)的RNN,它的內(nèi)部構(gòu)造很簡(jiǎn)單订晌,但具備從先前信息推斷之后將要發(fā)生的事的能力虏辫。也正是因?yàn)楹?jiǎn)單,它所需的計(jì)算資源比LSTM和GRU這兩個(gè)變體少得多锈拨。

LSTM

從整體上看砌庄,LSTM具有和RNN類似的流程:一邊向前傳遞,一邊處理傳遞信息的數(shù)據(jù)奕枢。它的不同之處在于cell內(nèi)的操作:它們?cè)试SLSTM保留或忘記信息娄昆。

LSTM的cell

核心概念

LSTM的核心概念是cell的狀態(tài)和各種控制門。其中前者是一個(gè)包含多個(gè)值的向量缝彬,它就像神經(jīng)網(wǎng)絡(luò)中的“高速公路”萌焰,穿行在序列鏈中一直傳遞相關(guān)信息——我們也可以把它看作是神經(jīng)網(wǎng)絡(luò)的“記憶”。從理論上來說谷浅,cell狀態(tài)可以在序列的整個(gè)處理過程中攜帶相關(guān)信息扒俯,它擺脫了RNN短期記憶的問題,即便是較早期的信息一疯,也能被用于較后期的時(shí)間步撼玄。

而當(dāng)cell狀態(tài)在被不斷傳遞時(shí),每個(gè)cell都有3個(gè)不同的門墩邀,它們是不同的神經(jīng)網(wǎng)絡(luò)掌猛,主要負(fù)責(zé)把需要的信息保留到cell中,并移除無用信息磕蒲。

Sigmoid

每個(gè)門都包含sigmoid激活留潦,它和Tanh的主要區(qū)別是取值范圍在0到1之間,而不是-1到1辣往。這個(gè)特點(diǎn)有助于在cell中更新兔院、去除數(shù)據(jù),因?yàn)槿魏螖?shù)字乘以0都是0(遺忘)站削,任何數(shù)字乘以1都等于它本身(保留)坊萝。由于值域是0到1,神經(jīng)網(wǎng)絡(luò)也能計(jì)算许起、比較哪些數(shù)據(jù)更重要十偶,哪些更不重要。

激活函數(shù)Sigmoid

遺忘門

首先园细,我們來看3個(gè)門中的遺忘門惦积。這個(gè)門決定應(yīng)該丟棄哪些信息。當(dāng)來自先前隱藏狀態(tài)的信息和來自當(dāng)前輸入的信息進(jìn)入cell時(shí)猛频,它們經(jīng)sigmoid函數(shù)激活狮崩,向量的各個(gè)值介于0-1之間蛛勉。越接近0意味著越容易被忘記,越接近1則越容易被保留睦柴。

遺忘門的操作

輸入門

輸入門是我們要看的第二個(gè)門诽凌,它是更新cell狀態(tài)的重要步驟。如下圖所示坦敌,首先侣诵,我們把先前隱藏狀態(tài)和當(dāng)前輸入傳遞給sigmoid函數(shù),由它計(jì)算出哪些值更重要(接近1)狱窘,哪些值不重要(接近0)杜顺。其次,同一時(shí)間训柴,我們也把原隱藏狀態(tài)和當(dāng)前輸入傳遞給tanh函數(shù)哑舒,由它把向量的值推到-1和1之間,防止神經(jīng)網(wǎng)絡(luò)數(shù)值過大幻馁。最后洗鸵,我們?cè)侔裻anh的輸出與sigmoid的輸出相乘,由后者決定對(duì)于保持tanh的輸出仗嗦,原隱藏狀態(tài)和當(dāng)前輸入中的哪些信息是重要的膘滨,哪些是不重要的。

輸入門的操作

cell狀態(tài)

到現(xiàn)在為止稀拐,我們就可以更新cell狀態(tài)了火邓。首先,將先前隱藏狀態(tài)和遺忘門輸出的向量進(jìn)行點(diǎn)乘德撬,這時(shí)因?yàn)樵讲恢匾闹翟浇咏?铲咨,原隱藏狀態(tài)中越不重要的信息也會(huì)接近0,更容易被丟棄蜓洪。之后纤勒,利用這個(gè)新的輸出,我們?cè)侔阉洼斎腴T的輸出點(diǎn)乘隆檀,把當(dāng)前輸入中的新信息放進(jìn)cell狀態(tài)中摇天,最后的輸出就是更新后的cell狀態(tài)。

計(jì)算cell狀態(tài)

輸出門

最后是輸出門恐仑,它決定了下一個(gè)隱藏狀態(tài)應(yīng)該是什么泉坐。細(xì)心的讀者可能已經(jīng)發(fā)現(xiàn)了,隱藏狀態(tài)和cell狀態(tài)不同裳仆,它包含有關(guān)先前輸入的信息腕让,神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)結(jié)果也正是基于它。如下圖所示歧斟,首先纯丸,我們將先前隱藏狀態(tài)和當(dāng)前輸入傳遞給sigmoid函數(shù)司训,其次,我們?cè)俑潞蟮腸ell狀態(tài)傳遞給tanh函數(shù)液南。最后,將這兩個(gè)激活函數(shù)的輸出相乘勾徽,得到可以轉(zhuǎn)移到下一時(shí)間步的新隱藏狀態(tài)滑凉。

總而言之,遺忘門決定的是和先前步驟有關(guān)的重要信息喘帚,輸入門決定的是要從當(dāng)前步驟中添加哪些重要信息畅姊,而輸出門決定的是下一個(gè)隱藏狀態(tài)是什么。

代碼演示

對(duì)于更喜歡讀代碼的讀者吹由,下面是一個(gè)Python偽代碼示例:

python偽代碼

首先若未,把先前隱藏狀態(tài)prev_ht和當(dāng)前輸入input合并成combine

其次,把combine輸入遺忘層倾鲫,決定哪些不相關(guān)數(shù)據(jù)需要被剔除

第三粗合,用combine創(chuàng)建候選層,其中包含能被添加進(jìn)cell狀態(tài)的可能值

第四乌昔,把combine輸入輸入層隙疚,決定把候選層中哪些信息添加進(jìn)cell狀態(tài)

第五,更新當(dāng)前cell狀態(tài)

第六磕道,把combine輸入輸出層供屉,計(jì)算輸出

最后,把輸出和當(dāng)前cell狀態(tài)進(jìn)行點(diǎn)乘溺蕉,得到更新后的隱藏狀態(tài)

如上所述伶丐,LSTM網(wǎng)絡(luò)的控制流程不過是幾個(gè)張量操作和一個(gè)for循環(huán)而已。

GRU

現(xiàn)在我們已經(jīng)知道LSTM背后的工作原理了疯特,接下來就簡(jiǎn)單看一下GRU哗魂。GRU是新一代的RNN,它和LSTM很像辙芍,區(qū)別是它擺脫了cell狀態(tài)啡彬,直接用隱藏狀態(tài)傳遞信息。GRU只有兩個(gè)門:重置門和更新門故硅。

GRU

更新門

更新門的作用類似LSTM的遺忘門和輸入門庶灿,它決定要丟棄的信息和要新添加的信息。

重置門

重置門的作用是決定要丟棄多少先前信息吃衅。

相比LSTM往踢,GRU的張量操作更少,所以速度也更快徘层。但它們之間并沒有明確的孰優(yōu)孰劣峻呕,只有適不適合利职。

小結(jié)

以上就是LSTM和GRU的動(dòng)態(tài)圖解∈莅總而言之猪贪,它們都是為了解決RNN短期記憶的問題而創(chuàng)建的,現(xiàn)在已經(jīng)被用于各種最先進(jìn)的深度學(xué)習(xí)應(yīng)用讯私,如語音識(shí)別热押、語音合成和自然語言理解等。感謝你的閱讀斤寇!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末桶癣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子娘锁,更是在濱河造成了極大的恐慌牙寞,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莫秆,死亡現(xiàn)場(chǎng)離奇詭異间雀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)镊屎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門雷蹂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杯道,你說我怎么就攤上這事匪煌。” “怎么了党巾?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵萎庭,是天一觀的道長。 經(jīng)常有香客問我齿拂,道長驳规,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任署海,我火速辦了婚禮吗购,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘砸狞。我一直安慰自己捻勉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布刀森。 她就那樣靜靜地躺著踱启,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上埠偿,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天透罢,我揣著相機(jī)與錄音,去河邊找鬼冠蒋。 笑死羽圃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抖剿。 我是一名探鬼主播统屈,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼牙躺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腕扶,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤孽拷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后半抱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脓恕,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年窿侈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了炼幔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡史简,死狀恐怖乃秀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情圆兵,我是刑警寧澤跺讯,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站殉农,受9級(jí)特大地震影響刀脏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜超凳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一愈污、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧轮傍,春花似錦暂雹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春揍魂,著一層夾襖步出監(jiān)牢的瞬間桨醋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國打工现斋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喜最,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓庄蹋,卻偏偏與公主長得像瞬内,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子限书,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容