0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LSTM和GRU的動(dòng)態(tài)圖解

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-10-27 09:08 ? 次閱讀

編者按:關(guān)于LSTM,之前我們已經(jīng)出過不少文章,其中最經(jīng)典的一篇是chrisolah的《一文詳解LSTM網(wǎng)絡(luò)》,文中使用的可視化圖片被大量博文引用,現(xiàn)在已經(jīng)隨處可見。但正如短視頻取代純文字閱讀是時(shí)代的趨勢(shì),在科普文章中,用可視化取代文字,用動(dòng)態(tài)圖取代靜態(tài)圖,這也是如今使知識(shí)更易于被讀者吸收的常規(guī)操作。

今天,論智給大家?guī)淼氖?a href="http://www.wenjunhu.com/tags/ai/" target="_blank">AI語音助理領(lǐng)域的機(jī)器學(xué)習(xí)工程師Michael Nguyen撰寫的一篇LSTM和GRU的動(dòng)態(tài)圖解:對(duì)于新手,它更直觀易懂;對(duì)于老手,這些新圖絕對(duì)值得收藏。

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

問題:短期記憶

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

出現(xiàn)這個(gè)問題的原因是在反向傳播期間,RNN的梯度可能會(huì)消失。我們都知道,網(wǎng)絡(luò)權(quán)重更新依賴梯度計(jì)算,RNN的梯度會(huì)隨著時(shí)間的推移逐漸減小,當(dāng)序列足夠長(zhǎ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ì)忘記在較長(zhǎng)序列中看到的內(nèi)容,只能傳遞短期記憶。

解決方案:LSTM和GRU

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

這些門能判斷序列中的哪些數(shù)據(jù)是重要的,哪些可以不要,因此,它就可以沿著長(zhǎng)序列傳遞相關(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的神經(jīng)元

核心概念

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í)別、語音合成和自然語言理解等。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 可視化
    +關(guān)注

    關(guān)注

    1

    文章

    1198

    瀏覽量

    20991
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8428

    瀏覽量

    132851

原文標(biāo)題:動(dòng)態(tài)可視化指南:一步步拆解LSTM和GRU

文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在網(wǎng)上看到泰克,rigol,安泰信測(cè)試1M的信號(hào)的動(dòng)態(tài)圖,大....

    我在網(wǎng)上看到了一張動(dòng)態(tài)圖,里邊有泰克,rigol,安泰信的測(cè)試動(dòng)態(tài)圖。然后我就測(cè)試了一下我手頭上的青島漢泰的臺(tái)式示波器DSO5202B,不會(huì)制作動(dòng)態(tài)圖,只能是截圖讓大家看看了,求告訴測(cè)試方法是否正確??稍后上圖
    發(fā)表于 01-15 11:00

    lab如何加入動(dòng)態(tài)圖,。。。。。。。

    lab如何加入動(dòng)態(tài)圖,。。。。。。。lab如何加入動(dòng)態(tài)圖,。。。。。。。lab如何加入動(dòng)態(tài)圖,。。。。。。。
    發(fā)表于 10-30 10:33

    matlab用plot畫動(dòng)態(tài)圖

    matlab用plot畫動(dòng)態(tài)圖時(shí),總是一閃一閃的,圖形還不連續(xù),大家有什么辦法讓它連續(xù)畫出動(dòng)態(tài)圖
    發(fā)表于 08-23 11:26

    利用Python來合成高動(dòng)態(tài)圖

    Python進(jìn)行高動(dòng)態(tài)圖像合成
    發(fā)表于 03-06 17:18

    請(qǐng)問為什么動(dòng)態(tài)圖對(duì)滑動(dòng)手勢(shì)沒有反應(yīng)?

    因此,假設(shè)我們?cè)O(shè)置了一個(gè)包含以下內(nèi)容的滑動(dòng)容器:普通容器包含例如一個(gè)盒子動(dòng)態(tài)圖當(dāng)我們運(yùn)行時(shí),首先會(huì)顯示普通容器。輕掃后,它將轉(zhuǎn)到動(dòng)態(tài)圖。但是當(dāng)我們滑動(dòng)動(dòng)態(tài)圖的時(shí)候,它不會(huì)去到正常的容器。為什么這樣?如果我將
    發(fā)表于 12-30 07:30

    基于門限方案的動(dòng)態(tài)圖軟件水印算法

    針對(duì)動(dòng)態(tài)圖水印魯棒性和恢復(fù)率較低的問題,提出基于門限方案的動(dòng)態(tài)圖水印算法——AB算法。在軟件水印中引入密鑰共享思想,實(shí)驗(yàn)結(jié)果證明,該算法能有效彌補(bǔ)CT算法的缺陷,阻
    發(fā)表于 04-03 08:36 ?15次下載

    C#教程之動(dòng)態(tài)圖標(biāo)顯示

    C#教程之動(dòng)態(tài)圖標(biāo)顯示,很好的C#資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-20 14:30 ?28次下載

    機(jī)械原理動(dòng)態(tài)圖大全介紹

    本文檔內(nèi)容介紹了基于機(jī)械原理動(dòng)態(tài)圖大全介紹。
    發(fā)表于 09-19 15:27 ?92次下載

    智能型動(dòng)態(tài)圖像的追蹤自控車

    智能型動(dòng)態(tài)圖像的追蹤自控車
    發(fā)表于 10-31 09:44 ?10次下載
    智能型<b class='flag-5'>動(dòng)態(tài)圖</b>像的追蹤自控車

    動(dòng)態(tài)圖和線程關(guān)系的混合軟件水印算法分析

    針對(duì)單一動(dòng)態(tài)圖水印算法以及線程水印存在的不足,為了提高軟件水印的安全性,提出一種基于動(dòng)態(tài)圖和線程關(guān)系的混合軟件水印算法。首先采用動(dòng)態(tài)圖水印算法將子圖生成代碼嵌入到程序中,然后充分利用線程隱蔽性恢復(fù)
    發(fā)表于 11-03 10:09 ?0次下載
    <b class='flag-5'>動(dòng)態(tài)圖</b>和線程關(guān)系的混合軟件水印算法分析

    基于快照的大規(guī)模動(dòng)態(tài)圖相似節(jié)點(diǎn)查詢算法

    動(dòng)態(tài)圖拓?fù)浣Y(jié)構(gòu)演進(jìn)過程中,為了量化在一定時(shí)間城內(nèi)節(jié)點(diǎn)間聯(lián)系的變化情況,定義了一種泛相似節(jié)點(diǎn)的概念,通過衡量其與當(dāng)前節(jié)點(diǎn)的聯(lián)系是否頻繁、分布是否均勻來確定與當(dāng)前節(jié)點(diǎn)的泛相似程度,并提出了一種基于快照
    發(fā)表于 12-23 10:11 ?0次下載
    基于快照的大規(guī)模<b class='flag-5'>動(dòng)態(tài)圖</b>相似節(jié)點(diǎn)查詢算法

    周期性動(dòng)態(tài)圖像的傅里葉表達(dá)

    為了生成新穎的藝術(shù)效果,提出了周期性動(dòng)態(tài)圖像模型,其每個(gè)像素都是一個(gè)時(shí)域周期函數(shù)。首先,提出了周期性動(dòng)態(tài)圖像的傅里葉表達(dá),具體是將圖像中每個(gè)像素對(duì)應(yīng)的周期函數(shù)以一系列傅里葉系數(shù)來表達(dá),并在實(shí)時(shí)運(yùn)行中
    發(fā)表于 01-05 10:19 ?1次下載
    周期性<b class='flag-5'>動(dòng)態(tài)圖</b>像的傅里葉表達(dá)

    RNN及其變體LSTMGRU

    下圖為一個(gè)雙層LSTM對(duì)三個(gè)不同的單詞的反應(yīng)分布。該LSTM每層有600個(gè)細(xì)胞狀態(tài)單元,基于Penn Tree Bank(PTB)數(shù)據(jù)集訓(xùn)練。我們可以看到,模型對(duì)介詞(“for”)和代詞(“he”、“she”)的反應(yīng)模式大不相同。
    的頭像 發(fā)表于 06-30 11:11 ?1.7w次閱讀
    RNN及其變體<b class='flag-5'>LSTM</b>和<b class='flag-5'>GRU</b>

    超生動(dòng)圖解LSTM和GPU,讀懂循環(huán)神經(jīng)網(wǎng)絡(luò)!

    這些門結(jié)構(gòu)可以學(xué)習(xí)序列中哪些數(shù)據(jù)是要保留的重要信息,哪些是要?jiǎng)h除的。通過這樣做,它可以沿著長(zhǎng)鏈序列傳遞相關(guān)信息來執(zhí)行預(yù)測(cè)。幾乎所有基于RNN的先進(jìn)結(jié)果都是通過這兩個(gè)網(wǎng)絡(luò)實(shí)現(xiàn)的。LSTMGRU經(jīng)常用在語音識(shí)別、語音合成和文本生成等領(lǐng)域,還可用來為視頻生成字幕。
    的頭像 發(fā)表于 01-20 15:20 ?2246次閱讀
    超生動(dòng)<b class='flag-5'>圖解</b><b class='flag-5'>LSTM</b>和GPU,讀懂循環(huán)神經(jīng)網(wǎng)絡(luò)!

    STM32GUI使用TouchGFX動(dòng)態(tài)圖片功能實(shí)現(xiàn)動(dòng)態(tài)更換表盤背景功能

    電子發(fā)燒友網(wǎng)站提供《STM32GUI使用TouchGFX動(dòng)態(tài)圖片功能實(shí)現(xiàn)動(dòng)態(tài)更換表盤背景功能.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 16:54 ?5次下載
    STM32GUI使用TouchGFX<b class='flag-5'>動(dòng)態(tài)圖</b>片功能實(shí)現(xiàn)<b class='flag-5'>動(dòng)態(tài)</b>更換表盤背景功能