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

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

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

關(guān)于LSTM和GRU的詳細圖解指南

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-10-08 14:52 ? 次閱讀

機器學習工程師 Michael Nguyen 在其博文中發(fā)布了關(guān)于 LSTM 和 GRU 的詳細圖解指南。博文中,他先介紹了 LSTM 和 GRU 的本質(zhì),然后解釋了讓 LSTM 和 GRU 有良好表現(xiàn)的內(nèi)部機制。 當然,如果你還想了解這兩種網(wǎng)絡(luò)背后發(fā)生了什么,那么這篇文章就是為你準備的。

▌短時記憶

RNN 會受到短時記憶的影響。如果一條序列足夠長,那它們將很難將信息從較早的時間步傳送到后面的時間步。 因此,如果你正在嘗試處理一段文本進行預測,RNN 可能從一開始就會遺漏重要信息。

在反向傳播期間,RNN 會面臨梯度消失的問題。 梯度是用于更新神經(jīng)網(wǎng)絡(luò)的權(quán)重值,消失的梯度問題是當梯度隨著時間的推移傳播時梯度下降,如果梯度值變得非常小,就不會繼續(xù)學習。

梯度更新規(guī)則

因此,在遞歸神經(jīng)網(wǎng)絡(luò)中,獲得小梯度更新的層會停止學習—— 那些通常是較早的層。 由于這些層不學習,RNN 可以忘記它在較長序列中看到的內(nèi)容,因此具有短時記憶。

▌作為解決方案的 LSTM 和 GRU

LSTM 和 GRU 是解決短時記憶問題的解決方案,它們具有稱為“門”的內(nèi)部機制,可以調(diào)節(jié)信息流。

這些“門”可以知道序列中哪些重要的數(shù)據(jù)是需要保留,而哪些是要刪除的。 隨后,它可以沿著長鏈序列傳遞相關(guān)信息以進行預測,幾乎所有基于遞歸神經(jīng)網(wǎng)絡(luò)的技術(shù)成果都是通過這兩個網(wǎng)絡(luò)實現(xiàn)的。

LSTM 和 GRU 可以在語音識別、語音合成和文本生成中找到,你甚至可以用它們?yōu)?a href="http://wenjunhu.com/v/" target="_blank">視頻生成字幕。對 LSTM 和 GRU 擅長處理長序列的原因,到這篇文章結(jié)束時你應(yīng)該會有充分了解。

下面我將通過直觀解釋和插圖進行闡述,并避免盡可能多的數(shù)學運算。

本質(zhì)

讓我們從一個有趣的小實驗開始吧。當你想在網(wǎng)上購買生活用品時,一般都會查看一下此前已購買該商品用戶的評價。

當你瀏覽評論時,你的大腦下意識地只會記住重要的關(guān)鍵詞,比如“amazing”和“awsome”這樣的詞匯,而不太會關(guān)心“this”、“give”、“all”、“should”等字樣。如果朋友第二天問你用戶評價都說了什么,那你可能不會一字不漏地記住它,而是會說出但大腦里記得的主要觀點,比如“下次肯定還會來買”,那其他一些無關(guān)緊要的內(nèi)容自然會從記憶中逐漸消失。

而這基本上就像是 LSTM 或 GRU 所做的那樣,它們可以學習只保留相關(guān)信息來進行預測,并忘記不相關(guān)的數(shù)據(jù)。

▌RNN 述評

為了了解 LSTM 或 GRU 如何實現(xiàn)這一點,讓我們回顧一下遞歸神經(jīng)網(wǎng)絡(luò)。 RNN 的工作原理如下;第一個詞被轉(zhuǎn)換成了機器可讀的向量,然后 RNN 逐個處理向量序列。

逐一處理矢量序列

處理時,RNN 將先前隱藏狀態(tài)傳遞給序列的下一步。 而隱藏狀態(tài)充當了神經(jīng)網(wǎng)絡(luò)記憶,它包含相關(guān)網(wǎng)絡(luò)之前所見過的數(shù)據(jù)的信息。

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

讓我們看看 RNN 的一個細胞,了解一下它如何計算隱藏狀態(tài)。 首先,將輸入和先前隱藏狀態(tài)組合成向量, 該向量包含當前輸入和先前輸入的信息。 向量經(jīng)過激活函數(shù) tanh之后,輸出的是新的隱藏狀態(tài)或網(wǎng)絡(luò)記憶。

RNN 細胞

激活函數(shù) Tanh

激活函數(shù) Tanh 用于幫助調(diào)節(jié)流經(jīng)網(wǎng)絡(luò)的值。 tanh 函數(shù)將數(shù)值始終限制在 -1 和 1 之間。

當向量流經(jīng)神經(jīng)網(wǎng)絡(luò)時,由于有各種數(shù)學運算的緣故,它經(jīng)歷了許多變換。 因此想象讓一個值繼續(xù)乘以 3,你可以想到一些值是如何變成天文數(shù)字的,這讓其他值看起來微不足道。

沒有 tanh 函數(shù)的向量轉(zhuǎn)換

tanh 函數(shù)確保值保持在 -1~1 之間,從而調(diào)節(jié)了神經(jīng)網(wǎng)絡(luò)的輸出。 你可以看到上面的相同值是如何保持在 tanh 函數(shù)所允許的邊界之間的。

有 tanh 函數(shù)的向量轉(zhuǎn)換

這是一個 RNN。 它內(nèi)部的操作很少,但在適當?shù)那樾蜗拢ㄈ缍绦蛄校┻\作的很好。 RNN 使用的計算資源比它的演化變體 LSTM 和 GRU 要少得多。

▌LSTM

LSTM 的控制流程與 RNN 相似,它們都是在前向傳播的過程中處理流經(jīng)細胞的數(shù)據(jù),不同之處在于 LSTM 中細胞的結(jié)構(gòu)和運算有所變化。

LSTM 的細胞結(jié)構(gòu)和運算

這一系列運算操作使得 LSTM具有能選擇保存信息或遺忘信息的功能。咋一看這些運算操作時可能有點復雜,但沒關(guān)系下面將帶你一步步了解這些運算操作。

核心概念

LSTM 的核心概念在于細胞狀態(tài)以及“門”結(jié)構(gòu)。細胞狀態(tài)相當于信息傳輸?shù)穆窂?,讓信息能在序列連中傳遞下去。你可以將其看作網(wǎng)絡(luò)的“記憶”。理論上講,細胞狀態(tài)能夠?qū)⑿蛄刑幚磉^程中的相關(guān)信息一直傳遞下去。

因此,即使是較早時間步長的信息也能攜帶到較后時間步長的細胞中來,這克服了短時記憶的影響。信息的添加和移除我們通過“門”結(jié)構(gòu)來實現(xiàn),“門”結(jié)構(gòu)在訓練過程中會去學習該保存或遺忘哪些信息。

Sigmoid

門結(jié)構(gòu)中包含著 sigmoid 激活函數(shù)。Sigmoid 激活函數(shù)與 tanh 函數(shù)類似,不同之處在于 sigmoid 是把值壓縮到 0~1 之間而不是 -1~1 之間。這樣的設(shè)置有助于更新或忘記信息,因為任何數(shù)乘以 0 都得 0,這部分信息就會剔除掉。同樣的,任何數(shù)乘以 1 都得到它本身,這部分信息就會完美地保存下來。這樣網(wǎng)絡(luò)就能了解哪些數(shù)據(jù)是需要遺忘,哪些數(shù)據(jù)是需要保存。

Sigmoid 將值壓縮到 0~1 之間

接下來了解一下門結(jié)構(gòu)的功能。LSTM 有三種類型的門結(jié)構(gòu):遺忘門、輸入門和輸出門。

遺忘門

遺忘門的功能是決定應(yīng)丟棄或保留哪些信息。來自前一個隱藏狀態(tài)的信息和當前輸入的信息同時傳遞到 sigmoid 函數(shù)中去,輸出值介于 0 和 1 之間,越接近 0 意味著越應(yīng)該丟棄,越接近 1 意味著越應(yīng)該保留。

遺忘門的運算過程

輸入門

輸入門用于更新細胞狀態(tài)。首先將前一層隱藏狀態(tài)的信息和當前輸入的信息傳遞到 sigmoid 函數(shù)中去。將值調(diào)整到 0~1 之間來決定要更新哪些信息。0 表示不重要,1 表示重要。

其次還要將前一層隱藏狀態(tài)的信息和當前輸入的信息傳遞到 tanh 函數(shù)中去,創(chuàng)造一個新的侯選值向量。最后將 sigmoid 的輸出值與 tanh 的輸出值相乘,sigmoid 的輸出值將決定 tanh 的輸出值中哪些信息是重要且需要保留下來的。

輸入門的運算過程

細胞狀態(tài)

下一步,就是計算細胞狀態(tài)。首先前一層的細胞狀態(tài)與遺忘向量逐點相乘。如果它乘以接近 0 的值,意味著在新的細胞狀態(tài)中,這些信息是需要丟棄掉的。然后再將該值與輸入門的輸出值逐點相加,將神經(jīng)網(wǎng)絡(luò)發(fā)現(xiàn)的新信息更新到細胞狀態(tài)中去。至此,就得到了更新后的細胞狀態(tài)。

細胞狀態(tài)的計算

輸出門

輸出門用來確定下一個隱藏狀態(tài)的值,隱藏狀態(tài)包含了先前輸入的信息。首先,我們將前一個隱藏狀態(tài)和當前輸入傳遞到 sigmoid 函數(shù)中,然后將新得到的細胞狀態(tài)傳遞給 tanh 函數(shù)。

最后將 tanh 的輸出與 sigmoid 的輸出相乘,以確定隱藏狀態(tài)應(yīng)攜帶的信息。再將隱藏狀態(tài)作為當前細胞的輸出,把新的細胞狀態(tài)和新的隱藏狀態(tài)傳遞到下一個時間步長中去。

輸出門的運算過程

讓我們再梳理一下。遺忘門確定前一個步長中哪些相關(guān)的信息需要被保留;輸入門確定當前輸入中哪些信息是重要的,需要被添加的;輸出門確定下一個隱藏狀態(tài)應(yīng)該是什么。

代碼示例

對于那些懶得看文字的人來說,代碼也許更好理解,下面給出一個用 python 寫的示例。

python 寫的偽代碼

1.首先,我們將先前的隱藏狀態(tài)和當前的輸入連接起來,這里將它稱為 combine;

2.其次將 combine 丟到遺忘層中,用于刪除不相關(guān)的數(shù)據(jù);

3.再用 combine 創(chuàng)建一個候選層,候選層中包含著可能要添加到細胞狀態(tài)中的值;

4.combine 同樣要丟到輸入層中,該層決定了候選層中哪些數(shù)據(jù)需要添加到新的細胞狀態(tài)中;

5.接下來細胞狀態(tài)再根據(jù)遺忘層、候選層、輸入層以及先前細胞狀態(tài)的向量來計算;

6.再計算當前細胞的輸出;

7.最后將輸出與新的細胞狀態(tài)逐點相乘以得到新的隱藏狀態(tài)。

是的,LSTM 網(wǎng)絡(luò)的控制流程就是幾個張量和一個 for 循環(huán)。你還可以使用隱藏狀態(tài)進行預測。結(jié)合這些機制,LSTM 能夠在序列處理中確定哪些信息需要記憶,哪些信息需要遺忘。

▌GRU

知道了 LSTM 的工作原理之后,來了解一下 GRU。GRU 是新一代的循環(huán)神經(jīng)網(wǎng)絡(luò),與 LSTM 非常相似。與 LSTM 相比,GRU 去除掉了細胞狀態(tài),使用隱藏狀態(tài)來進行信息的傳遞。它只包含兩個門:更新門和重置門。

GRU 的細胞結(jié)構(gòu)和門結(jié)構(gòu)

更新門

更新門的作用類似于 LSTM 中的遺忘門和輸入門。它決定了要忘記哪些信息以及哪些新信息需要被添加。

重置門

重置門用于決定遺忘先前信息的程度。

這就是 GRU。GRU 的張量運算較少,因此它比 LSTM 的訓練更快一下。很難去判定這兩者到底誰更好,研究人員通常會兩者都試一下,然后選擇最合適的。

▌結(jié)語

總而言之,RNN 適用于處理序列數(shù)據(jù)用于預測,但卻受到短時記憶的制約。LSTM 和 GRU 采用門結(jié)構(gòu)來克服短時記憶的影響。門結(jié)構(gòu)可以調(diào)節(jié)流經(jīng)序列鏈的信息流。LSTM 和 GRU 被廣泛地應(yīng)用到語音識別、語音合成和自然語言處理等。

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

原文標題:難以置信!LSTM和GRU的解析從未如此清晰(動圖+視頻)

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    GRU是什么?GRU模型如何讓你的神經(jīng)網(wǎng)絡(luò)更聰明 掌握時間 掌握未來

    大家平時經(jīng)常聽到的GRU是什么呢? 首先來認識下CNN,CNN指代卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network),這是一種在人工智能和機器學習領(lǐng)域中常用的神經(jīng)網(wǎng)絡(luò)架構(gòu),特別
    發(fā)表于 06-13 11:42 ?1814次閱讀
    <b class='flag-5'>GRU</b>是什么?<b class='flag-5'>GRU</b>模型如何讓你的神經(jīng)網(wǎng)絡(luò)更聰明 掌握時間 掌握未來

    [分享]詳細的protel與power PADS 文件互相轉(zhuǎn)換圖解教程

    詳細的protel與power PADS 文件互相轉(zhuǎn)換圖解教程[此貼子已經(jīng)被admin于2009-4-8 12:59:00編輯過]
    發(fā)表于 11-14 18:34

    arm_mmu詳細圖解

    arm_mmu詳細圖解arm_mmu詳細圖解arm_mmu詳細圖解arm_mmu
    發(fā)表于 11-21 23:58

    MHDD的使用圖解詳細技術(shù)教程

    MHDD的使用圖解詳細技術(shù)教程
    發(fā)表于 07-29 11:30

    LabVIEW2011注冊機及詳細使用圖解

    LabVIEW2011注冊機及詳細使用圖解,歡迎下載!
    發(fā)表于 05-04 14:57

    數(shù)字萬用表的使用方法詳細圖解

    數(shù)字萬用表的使用方法詳細圖解PCB打樣找華強 http://www.hqpcb.com 樣板2天出貨
    發(fā)表于 09-13 17:51

    傳感器的分類詳細圖解

    傳感器的分類詳細圖解
    發(fā)表于 12-02 09:55 ?4945次閱讀

    Android 開發(fā)環(huán)境搭建步驟詳細圖解

    Android 開發(fā)環(huán)境搭建步驟詳細圖解
    發(fā)表于 10-24 08:49 ?11次下載
    Android 開發(fā)環(huán)境搭建步驟<b class='flag-5'>詳細</b><b class='flag-5'>圖解</b>

    RNN及其變體LSTMGRU

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

    LSTM隱層神經(jīng)元結(jié)構(gòu)分析,及應(yīng)用的程序詳細概述

    LSTM隱層神經(jīng)元結(jié)構(gòu): LSTM隱層神經(jīng)元詳細結(jié)構(gòu): //讓程序自己學會是否需要進位,從而學會加法#in
    的頭像 發(fā)表于 07-29 10:06 ?9364次閱讀

    商務(wù)車控制盒的詳細資料圖解資料免費下載

    本文檔的主要內(nèi)容詳細介紹的是商務(wù)車控制盒的詳細資料圖解資料免費下載內(nèi)容包括了:ABA-V0.518.1控制器圖解,ABA觸摸屏圖解及觸屏系統(tǒng)
    發(fā)表于 10-24 08:00 ?4次下載
    商務(wù)車控制盒的<b class='flag-5'>詳細</b>資料<b class='flag-5'>圖解</b>資料免費下載

    LSTMGRU的動態(tài)圖解

    根據(jù)上圖公式:新權(quán)重=權(quán)重-學習率×梯度。已知學習率是個超參數(shù),當梯度非常小時,權(quán)重和新權(quán)重幾乎相等,這個層就停止學習了。由于這些層都不再學習,RNN就會忘記在較長序列中看到的內(nèi)容,只能傳遞短期記憶。
    的頭像 發(fā)表于 10-27 09:08 ?1.4w次閱讀
    <b class='flag-5'>LSTM</b>和<b class='flag-5'>GRU</b>的動態(tài)<b class='flag-5'>圖解</b>

    循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)和(LSTM)初學者指南

    最近,有一篇入門文章引發(fā)了不少關(guān)注。文章中詳細介紹了循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),及其變體長短期記憶(LSTM)背后的原理。
    發(fā)表于 02-05 13:43 ?951次閱讀

    詳細圖解比例閥工作原理

    詳細圖解比例閥工作原理。
    的頭像 發(fā)表于 04-27 13:19 ?9.9w次閱讀
    <b class='flag-5'>詳細</b><b class='flag-5'>圖解</b>比例閥工作原理

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

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