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

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

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

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

中科院長春光機所 ? 來源:中科院長春光機所 ? 作者:中科院長春光機所 ? 2021-01-20 15:20 ? 次閱讀

AI識別你的語音、回答你的問題、幫你翻譯外語,都離不開一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN):長短期記憶網(wǎng)絡(luò)(Long short-term memory,LSTM)。 最近,國外有一份關(guān)于LSTM及其變種GRU(Gated Recurrent Unit)的圖解教程非?;?。教程先介紹了這兩種網(wǎng)絡(luò)的基礎(chǔ)知識,然后解釋了讓LSTM和GRU具有良好性能的內(nèi)在機制。當(dāng)然,通過這篇文章,還可以了解這兩種網(wǎng)絡(luò)的一些背景。 圖解教程的作者M(jìn)ichael Nguyen是一名AI語音助理方面的機器學(xué)習(xí)工程師。

eed92538-57b8-11eb-8b86-12bb97331649.gif

短期記憶問題

RNN受限于短期記憶問題。如果一個序列足夠長,那它們很難把信息從較早的時間步傳輸?shù)胶竺娴臅r間步。因此,如果你嘗試處理一段文本來進(jìn)行預(yù)測,RNN可能在開始時就會遺漏重要信息。 在反向傳播過程中,RNN中存在梯度消失問題。梯度是用于更新神經(jīng)網(wǎng)絡(luò)權(quán)重的值,梯度消失問題是指隨著時間推移,梯度在傳播時會下降,如果梯度值變得非常小,則不會繼續(xù)學(xué)習(xí)。

ef1cdfda-57b8-11eb-8b86-12bb97331649.jpg

△梯度更新規(guī)則

因此,在RNN中,梯度小幅更新的網(wǎng)絡(luò)層會停止學(xué)習(xí),這些通常是較早的層。由于這些層不學(xué)習(xí),RNN無法記住它在較長序列中學(xué)習(xí)到的內(nèi)容,因此它的記憶是短期的。關(guān)于RNN的更多介紹,可訪問:
https://towardsdatascience.com/illustrated-guide-to-recurrent-neural-networks-79e5eb8049c9

解決方案:LSTM和GRU

LSTM和GRU是克服短期記憶問題提出的解決方案,它們引入稱作“門”的內(nèi)部機制,可以調(diào)節(jié)信息流。

ef487f50-57b8-11eb-8b86-12bb97331649.jpg

這些門結(jié)構(gòu)可以學(xué)習(xí)序列中哪些數(shù)據(jù)是要保留的重要信息,哪些是要刪除的。通過這樣做,它可以沿著長鏈序列傳遞相關(guān)信息來執(zhí)行預(yù)測。幾乎所有基于RNN的先進(jìn)結(jié)果都是通過這兩個網(wǎng)絡(luò)實現(xiàn)的。LSTM和GRU經(jīng)常用在語音識別、語音合成和文本生成等領(lǐng)域,還可用來為視頻生成字幕。 當(dāng)你看完這篇文章時,我相信你會對LSTM和GRU在處理長序列的突出能力有充分了解。下面我將通過直觀解釋和插圖來進(jìn)行介紹,并盡可能繞開數(shù)學(xué)運算。

直觀認(rèn)識

我們從一個思考實驗開始。當(dāng)你在網(wǎng)絡(luò)上購買生活用品時,一般會先閱讀商品評論來判斷商品好壞,以確定是否要購買這個商品。

ef9a7f80-57b8-11eb-8b86-12bb97331649.jpg

當(dāng)你查看評論時,你的大腦下意識地只會記住重要的關(guān)鍵詞。你會選擇“amazing”和“perfectly balanced breakfast”這樣的詞匯,而不太關(guān)心“this”,“give”,“all”,“should”等字樣。如果有人第二天問你評論內(nèi)容,你可能不會一字不漏地記住它,而是記住了主要觀點,比如“下次一定還來買”,一些次要內(nèi)容自然會從記憶中逐漸消失。

eff80bd2-57b8-11eb-8b86-12bb97331649.gif

在這種情況下,你記住的這些詞能判定了這個餐廳的好壞。這基本上就是LSTM或GRU的作用,它可以學(xué)習(xí)只保留相關(guān)信息來進(jìn)行預(yù)測,并忘記不相關(guān)的數(shù)據(jù)。

RNN回顧

為了理解LSTM或GRU如何實現(xiàn)這一點,接下來回顧下RNN。RNN的工作原理如下:首先單詞被轉(zhuǎn)換成機器可讀的向量,然后RNN逐個處理向量序列。

f1278c62-57b8-11eb-8b86-12bb97331649.gif

△逐個處理向量序列

在處理時,它把先前的隱藏狀態(tài)傳遞給序列的下一步,其中隱藏狀態(tài)作為神經(jīng)網(wǎng)絡(luò)記憶,它包含相關(guān)網(wǎng)絡(luò)已處理數(shù)據(jù)的信息。

f2e30f2c-57b8-11eb-8b86-12bb97331649.gif

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

下面來介紹RNN中每個cell單元是如何計算隱藏狀態(tài)的。首先,將輸入和先前隱藏狀態(tài)組合成一個向量,向量中含有當(dāng)前輸入和先前輸入的信息。這個向量再經(jīng)過激活函數(shù)Tanh后,輸出新的隱藏狀態(tài),或網(wǎng)絡(luò)記憶。

f32ea518-57b8-11eb-8b86-12bb97331649.gif

△RNN單元

激活函數(shù)Tanh

激活函數(shù)Tanh用于幫助調(diào)節(jié)流經(jīng)網(wǎng)絡(luò)的值,且Tanh函數(shù)的輸出值始終在區(qū)間(-1, 1)內(nèi)。

f40c1998-57b8-11eb-8b86-12bb97331649.gif

當(dāng)向量流經(jīng)神經(jīng)網(wǎng)絡(luò)時,由于存在各種數(shù)學(xué)運算,它經(jīng)歷了許多變換。因此,想象下讓一個值不斷乘以3,它會逐漸變大并變成天文數(shù)字,這會讓其他值看起來微不足道。

f74cbf40-57b8-11eb-8b86-12bb97331649.gif

△無Tanh函數(shù)的向量變換

Tanh函數(shù)能讓輸出位于區(qū)間(-1, 1)內(nèi),從而調(diào)節(jié)神經(jīng)網(wǎng)絡(luò)輸出。你可以看到這些值是如何保持在Tanh函數(shù)的允許范圍內(nèi)。

fbe7c1c6-57b8-11eb-8b86-12bb97331649.gif

△有Tanh函數(shù)的向量變換

這就是RNN,它的內(nèi)部操作很少,但在適當(dāng)情況下(如短序列分析)效果很好。RNN使用的計算資源比它的演化變體LSTM和GRU少得多。

LSTM

LSTM的控制流程與RNN類似,它們都是在前向傳播過程中處理傳遞信息的數(shù)據(jù),區(qū)別在于LSTM單元的結(jié)構(gòu)和運算有所變化。

005c399e-57b9-11eb-8b86-12bb97331649.jpg

△LSTM單元及其運算

這些運算能讓LSTM具備選擇性保留或遺忘某些信息的能力,下面我們將逐步介紹這些看起來有點復(fù)雜的運算。

核心概念

LSTM的核心概念為其單元狀態(tài)和各種門結(jié)構(gòu)。單元狀態(tài)相當(dāng)于能傳輸相關(guān)信息的通路,讓信息在序列鏈中傳遞下去,這部分可看作是網(wǎng)絡(luò)的“記憶”。理論上,在序列處理過程中,單元狀態(tài)能一直攜帶著相關(guān)信息。因此,在較早時間步中獲得的信息也能傳輸?shù)捷^后時間步的單元中,這樣能減弱短期記憶的影響。 在網(wǎng)絡(luò)訓(xùn)練過程中,可通過門結(jié)構(gòu)來添加或移除信息,不同神經(jīng)網(wǎng)絡(luò)都可通過單元狀態(tài)上的門結(jié)構(gòu)來決定去記住或遺忘哪些相關(guān)信息。

Sigmoid

門結(jié)構(gòu)中包含Sigmoid函數(shù),這個激活函數(shù)與Tanh函數(shù)類似。但它的輸出區(qū)間不是(-1, 1),而是(0, 1),這有助于更新或忘記數(shù)據(jù),因為任何數(shù)字乘以0都為0,這部分信息會被遺忘。同樣,任何數(shù)字乘以1都為相同值,這部分信息會完全保留。通過這樣,網(wǎng)絡(luò)能了解哪些數(shù)據(jù)不重要需要遺忘,哪些數(shù)字很重要需要保留。

00c02f4e-57b9-11eb-8b86-12bb97331649.gif

△Sigmoid輸出區(qū)間為(0, 1)

下面會深入介紹下不同門結(jié)構(gòu)的功能。LSTM單元中有三種調(diào)節(jié)信息流的門結(jié)構(gòu):遺忘門、輸入門和輸出門。

遺忘門

遺忘門能決定應(yīng)丟棄或保留哪些信息。來自先前隱藏狀態(tài)的信息和當(dāng)前輸入的信息同時輸入到Sigmoid函數(shù),輸出值處于0和1之間,越接近0意味著越應(yīng)該忘記,越接近1意味著越應(yīng)該保留。

00f9d2b2-57b9-11eb-8b86-12bb97331649.gif

△遺忘門操作

輸入門

輸入門用來更新單元狀態(tài)。先將先前隱藏狀態(tài)的信息和當(dāng)前輸入的信息輸入到Sigmoid函數(shù),在0和1之間調(diào)整輸出值來決定更新哪些信息,0表示不重要,1表示重要。你也可將隱藏狀態(tài)和當(dāng)前輸入傳輸給Tanh函數(shù),并在-1和1之間壓縮數(shù)值以調(diào)節(jié)網(wǎng)絡(luò),然后把Tanh輸出和Sigmoid輸出相乘,Sigmoid輸出將決定在Tanh輸出中哪些信息是重要的且需要進(jìn)行保留。

015d6fa2-57b9-11eb-8b86-12bb97331649.gif

△輸入門操作

單元狀態(tài)

這里已經(jīng)具備足夠信息來計算單元狀態(tài)。首先把先前的單元狀態(tài)和遺忘向量逐點相乘,如果它乘以接近0的值,則意味在新的單元狀態(tài)中可能要丟棄這些值;然后把它和輸入門的輸出值逐點相加,把神經(jīng)網(wǎng)絡(luò)發(fā)現(xiàn)的新信息更新到單元狀態(tài)中,這樣就得到了新的單元狀態(tài)。

02d71db0-57b9-11eb-8b86-12bb97331649.gif

△計算單元狀態(tài)

輸出門

輸出門能決定下個隱藏狀態(tài)的值,隱藏狀態(tài)中包含了先前輸入的相關(guān)信息。當(dāng)然,隱藏狀態(tài)也可用于預(yù)測。首先把先前的隱藏狀態(tài)和當(dāng)前輸入傳遞給Sigmoid函數(shù);接著把新得到的單元狀態(tài)傳遞給Tanh函數(shù);然后把Tanh輸出和Sigmoid輸出相乘,以確定隱藏狀態(tài)應(yīng)攜帶的信息;最后把隱藏狀態(tài)作為當(dāng)前單元輸出,把新的單元狀態(tài)和新的隱藏狀態(tài)傳輸給下個時間步。

033b9920-57b9-11eb-8b86-12bb97331649.gif

△輸出門操作

這里總結(jié)下,遺忘門能決定需要保留先前步長中哪些相關(guān)信息,輸入門決定在當(dāng)前輸入中哪些重要信息需要被添加,輸出門決定了下一個隱藏狀態(tài)。

代碼示例

這里還提供了一個用Python寫的示例代碼,來讓大家能更好地理解這個結(jié)構(gòu)。

056fc3d8-57b9-11eb-8b86-12bb97331649.jpg

首先,我們連接了先前的隱藏狀態(tài)和當(dāng)前輸入,這里定義為變量combine;

把combine變量傳遞到遺忘層中,以刪除不相關(guān)數(shù)據(jù);

再用combine變量創(chuàng)建一個候選層,用來保留可能要添加到單元狀態(tài)中的值;

變量combine也要傳遞給輸出層,來決定應(yīng)把候選層中的哪些數(shù)據(jù)添加到新的單元狀態(tài)中;

新的單元狀態(tài)可根據(jù)遺忘層、候選層和輸入層和先前的單元狀態(tài)來計算得到;

再計算當(dāng)前單元輸出;

最后把輸出和新的單元狀態(tài)逐點相乘可得到新的隱藏狀態(tài)。

從上面看出,LSTM網(wǎng)絡(luò)的控制流程實際上只是幾個張量操作和一個for循環(huán)。你還可以用隱藏狀態(tài)進(jìn)行預(yù)測。結(jié)合這些機制,LSTM能在序列處理過程中有選擇性地保留或遺忘某些信息。

GRU

介紹完LSTM的工作原理后,下面來看下門控循環(huán)單元GRU。GRU是RNN的另一類演化變種,與LSTM非常相似。GRU結(jié)構(gòu)中去除了單元狀態(tài),而使用隱藏狀態(tài)來傳輸信息。它只有兩個門結(jié)構(gòu),分別是更新門和重置門。

05b3f814-57b9-11eb-8b86-12bb97331649.jpg

△GRU單元結(jié)構(gòu)

更新門

更新門的作用類似于LSTM中的遺忘門和輸入門,它能決定要丟棄哪些信息和要添加哪些新信息。

重置門

重置門用于決定丟棄先前信息的程度。 這兩部分組成了GRU,它的張量操作較少,因此訓(xùn)練它比LSTM更快一點。在選擇網(wǎng)絡(luò)時很難判斷哪個更好,研究人員通常會兩個都試下,通過性能比較來選出更適合當(dāng)前任務(wù)的結(jié)構(gòu)。

總結(jié)

總而言之,RNN適用于處理序列數(shù)據(jù)和預(yù)測任務(wù),但會受到短期記憶的影響。LSTM和GRU是兩種通過引入門結(jié)構(gòu)來減弱短期記憶影響的演化變體,其中門結(jié)構(gòu)可用來調(diào)節(jié)流經(jīng)序列鏈的信息流。目前,LSTM和GRU經(jīng)常被用于語音識別、語音合成和自然語言理解等多個深度學(xué)習(xí)應(yīng)用中。 如果你對這方面很感興趣,作者還列出一些干貨鏈接,可以從更多角度來理解LSTM和GRU結(jié)構(gòu)。
責(zé)任編輯:lq

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

    關(guān)注

    42

    文章

    4726

    瀏覽量

    100318
  • 語音識別
    +關(guān)注

    關(guān)注

    38

    文章

    1704

    瀏覽量

    112426
  • rnn
    rnn
    +關(guān)注

    關(guān)注

    0

    文章

    76

    瀏覽量

    6865

原文標(biāo)題:超生動圖解LSTM和GPU,一文讀懂循環(huán)神經(jīng)網(wǎng)絡(luò)!

文章出處:【微信號:cas-ciomp,微信公眾號:中科院長春光機所】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何理解RNN與LSTM神經(jīng)網(wǎng)絡(luò)

    在深入探討RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))與LSTM(Long Short-Term Memory,長短期記憶網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-09 11:12 ?398次閱讀

    rnn是遞歸神經(jīng)網(wǎng)絡(luò)還是循環(huán)神經(jīng)網(wǎng)絡(luò)

    RNN(Recurrent Neural Network)是循環(huán)神經(jīng)網(wǎng)絡(luò),而非遞歸神經(jīng)網(wǎng)絡(luò)循環(huán)神經(jīng)網(wǎng)絡(luò)是一種具有時間序列特性的
    的頭像 發(fā)表于 07-05 09:52 ?433次閱讀

    遞歸神經(jīng)網(wǎng)絡(luò)循環(huán)神經(jīng)網(wǎng)絡(luò)一樣嗎

    遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network,RvNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是兩種不同類型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),它們在
    的頭像 發(fā)表于 07-05 09:28 ?522次閱讀

    遞歸神經(jīng)網(wǎng)絡(luò)循環(huán)神經(jīng)網(wǎng)絡(luò)

    遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡稱RNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡稱RNN)實際上是同一個概念,只是不同的翻譯方式
    的頭像 發(fā)表于 07-04 14:54 ?549次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)算法原理及特點

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡稱RNN)是一種具有記憶功能的神經(jīng)網(wǎng)絡(luò),能夠處理序列數(shù)據(jù)。與傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural
    的頭像 發(fā)表于 07-04 14:49 ?393次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)有哪些基本模型

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks,簡稱RNN)是一種具有循環(huán)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù),并且能夠捕捉序列數(shù)據(jù)中的時序信息。RNN的基本模型有很多
    的頭像 發(fā)表于 07-04 14:43 ?336次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)的應(yīng)用場景有哪些

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡稱RNN)是一種具有記憶功能的神經(jīng)網(wǎng)絡(luò),能夠處理序列數(shù)據(jù),廣泛應(yīng)用于自然語言處理、語音識別、時間序列預(yù)測等領(lǐng)域。 自然語言處理
    的頭像 發(fā)表于 07-04 14:39 ?735次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)處理什么數(shù)據(jù)

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡稱RNN)是一種具有記憶功能的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù),即數(shù)據(jù)具有時間或空間上的連續(xù)性。RNN在自然語言處理、語音識別、時間序列
    的頭像 發(fā)表于 07-04 14:34 ?357次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)的基本概念

    循環(huán)神經(jīng)網(wǎng)絡(luò)的基本概念、循環(huán)機制、長短時記憶網(wǎng)絡(luò)LSTM)、門控循環(huán)單元(GRU)等方面進(jìn)行介
    的頭像 發(fā)表于 07-04 14:31 ?471次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)的基本原理是什么

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡稱RNN)是一種具有短期記憶功能的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù),如時間序列、文本序列等。與傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)不同,RN
    的頭像 發(fā)表于 07-04 14:26 ?508次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的區(qū)別

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是深度學(xué)習(xí)領(lǐng)域中兩種非常重要的神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-04 14:24 ?797次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò)的區(qū)別

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡稱RNN)和遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network,簡稱RvNN)是深度學(xué)習(xí)中兩種重要的神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-04 14:19 ?648次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)循環(huán)神經(jīng)網(wǎng)絡(luò)的區(qū)別

    在深度學(xué)習(xí)領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks, RNN)是兩種極其重要
    的頭像 發(fā)表于 07-03 16:12 ?1621次閱讀

    利用深度循環(huán)神經(jīng)網(wǎng)絡(luò)對心電圖降噪

    具體的軟硬件實現(xiàn)點擊 http://mcu-ai.com/ MCU-AI技術(shù)網(wǎng)頁_MCU-AI 我們提出了一種利用由長短期記憶 (LSTM) 單元構(gòu)建的深度循環(huán)神經(jīng)網(wǎng)絡(luò)來降 噪心電圖信號 (ECG
    發(fā)表于 05-15 14:42

    什么是RNN (循環(huán)神經(jīng)網(wǎng)絡(luò))?

    循環(huán)神經(jīng)網(wǎng)絡(luò) (RNN) 是一種深度學(xué)習(xí)結(jié)構(gòu),它使用過去的信息來提高網(wǎng)絡(luò)處理當(dāng)前和將來輸入的性能。RNN 的獨特之處在于該網(wǎng)絡(luò)包含隱藏狀態(tài)和循環(huán)
    發(fā)表于 02-29 14:56 ?3737次閱讀
    什么是RNN (<b class='flag-5'>循環(huán)</b><b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>)?