超生動圖解LSTM和GPU,一文讀懂循環神經網絡!

2021-02-15 AI乾貨知識庫
作者 Michael Nguyen
王小新 編譯自 Towards Data Science
量子位 出品 | 公眾號 QbitAIAI識別你的語音、回答你的問題、幫你翻譯外語,都離不開一種特殊的循環神經網絡(RNN):長短期記憶網絡(Long short-term memory,LSTM)。最近,國外有一份關於LSTM及其變種GRU(Gated Recurrent Unit)的圖解教程非常火。教程先介紹了這兩種網絡的基礎知識,然後解釋了讓LSTM和GRU具有良好性能的內在機制。當然,通過這篇文章,還可以了解這兩種網絡的一些背景。圖解教程的作者Michael Nguyen是一名AI語音助理方面的機器學習工程師。短期記憶問題RNN受限於短期記憶問題。如果一個序列足夠長,那它們很難把信息從較早的時間步傳輸到後面的時間步。因此,如果你嘗試處理一段文本來進行預測,RNN可能在開始時就會遺漏重要信息。在反向傳播過程中,RNN中存在梯度消失問題。梯度是用於更新神經網絡權重的值,梯度消失問題是指隨著時間推移,梯度在傳播時會下降,如果梯度值變得非常小,則不會繼續學習。 梯度更新規則因此,在RNN中,梯度小幅更新的網絡層會停止學習,這些通常是較早的層。由於這些層不學習,RNN無法記住它在較長序列中學習到的內容,因此它的記憶是短期的。關於RNN的更多介紹,可訪問:
https://towardsdatascience.com/illustrated-guide-to-recurrent-neural-networks-79e5eb8049c9解決方案:LSTM和GRULSTM和GRU是克服短期記憶問題提出的解決方案,它們引入稱作「門」的內部機制,可以調節信息流。這些門結構可以學習序列中哪些數據是要保留的重要信息,哪些是要刪除的。通過這樣做,它可以沿著長鏈序列傳遞相關信息來執行預測。幾乎所有基於RNN的先進結果都是通過這兩個網絡實現的。LSTM和GRU經常用在語音識別、語音合成和文本生成等領域,還可用來為視頻生成字幕。當你看完這篇文章時,我相信你會對LSTM和GRU在處理長序列的突出能力有充分了解。下面我將通過直觀解釋和插圖來進行介紹,並儘可能繞開數學運算。直觀認識我們從一個思考實驗開始。當你在網絡上購買生活用品時,一般會先閱讀商品評論來判斷商品好壞,以確定是否要購買這個商品。當你查看評論時,你的大腦下意識地只會記住重要的關鍵詞。你會選擇「amazing」和「perfectly balanced breakfast」這樣的詞彙,而不太關心「this」,「give」,「all」,「should」等字樣。如果有人第二天問你評論內容,你可能不會一字不漏地記住它,而是記住了主要觀點,比如「下次一定還來買」,一些次要內容自然會從記憶中逐漸消失。在這種情況下,你記住的這些詞能判定了這個餐廳的好壞。這基本上就是LSTM或GRU的作用,它可以學習只保留相關信息來進行預測,並忘記不相關的數據。RNN回顧為了理解LSTM或GRU如何實現這一點,接下來回顧下RNN。RNN的工作原理如下:首先單詞被轉換成機器可讀的向量,然後RNN逐個處理向量序列。 逐個處理向量序列在處理時,它把先前的隱藏狀態傳遞給序列的下一步,其中隱藏狀態作為神經網絡記憶,它包含相關網絡已處理數據的信息。 把隱藏狀態傳遞給下個時間步下面來介紹RNN中每個cell單元是如何計算隱藏狀態的。首先,將輸入和先前隱藏狀態組合成一個向量,向量中含有當前輸入和先前輸入的信息。這個向量再經過激活函數Tanh後,輸出新的隱藏狀態,或網絡記憶。 RNN單元
激活函數Tanh激活函數Tanh用於幫助調節流經網絡的值,且Tanh函數的輸出值始終在區間(-1, 1)內。當向量流經神經網絡時,由於存在各種數學運算,它經歷了許多變換。因此,想像下讓一個值不斷乘以3,它會逐漸變大並變成天文數字,這會讓其他值看起來微不足道。 無Tanh函數的向量變換Tanh函數能讓輸出位於區間(-1, 1)內,從而調節神經網絡輸出。你可以看到這些值是如何保持在Tanh函數的允許範圍內。 有Tanh函數的向量變換這就是RNN,它的內部操作很少,但在適當情況下(如短序列分析)效果很好。RNN使用的計算資源比它的演化變體LSTM和GRU少得多。LSTMLSTM的控制流程與RNN類似,它們都是在前向傳播過程中處理傳遞信息的數據,區別在於LSTM單元的結構和運算有所變化。 LSTM單元及其運算這些運算能讓LSTM具備選擇性保留或遺忘某些信息的能力,下面我們將逐步介紹這些看起來有點複雜的運算。核心概念單元狀態相當於能傳輸相關信息的通路,讓信息在序列鏈中傳遞下去,這部分可看作是網絡的「記憶」。理論上,在序列處理過程中,單元狀態能一直攜帶著相關信息。因此,在較早時間步中獲得的信息也能傳輸到較後時間步的單元中,這樣能減弱短期記憶的影響。在網絡訓練過程中,可通過門結構來添加或移除信息,不同神經網絡都可通過單元狀態上的門結構來決定去記住或遺忘哪些相關信息。Sigmoid門結構中包含Sigmoid函數,這個激活函數與Tanh函數類似。但它的輸出區間不是(-1, 1),而是(0, 1),這有助於更新或忘記數據,因為任何數字乘以0都為0,這部分信息會被遺忘。同樣,任何數字乘以1都為相同值,這部分信息會完全保留。通過這樣,網絡能了解哪些數據不重要需要遺忘,哪些數字很重要需要保留。 Sigmoid輸出區間為(0, 1)下面會深入介紹下不同門結構的功能。LSTM單元中有三種調節信息流的門結構:遺忘門、輸入門和輸出門。遺忘門遺忘門能決定應丟棄或保留哪些信息。來自先前隱藏狀態的信息和當前輸入的信息同時輸入到Sigmoid函數,輸出值處於0和1之間,越接近0意味著越應該忘記,越接近1意味著越應該保留。 遺忘門操作輸入門輸入門用來更新單元狀態。先將先前隱藏狀態的信息和當前輸入的信息輸入到Sigmoid函數,在0和1之間調整輸出值來決定更新哪些信息,0表示不重要,1表示重要。你也可將隱藏狀態和當前輸入傳輸給Tanh函數,並在-1和1之間壓縮數值以調節網絡,然後把Tanh輸出和Sigmoid輸出相乘,Sigmoid輸出將決定在Tanh輸出中哪些信息是重要的且需要進行保留。 輸入門操作單元狀態這裡已經具備足夠信息來計算單元狀態。首先把先前的單元狀態和遺忘向量逐點相乘,如果它乘以接近0的值,則意味在新的單元狀態中可能要丟棄這些值;然後把它和輸入門的輸出值逐點相加,把神經網絡發現的新信息更新到單元狀態中,這樣就得到了新的單元狀態。 計算單元狀態輸出門輸出門能決定下個隱藏狀態的值,隱藏狀態中包含了先前輸入的相關信息。當然,隱藏狀態也可用於預測。首先把先前的隱藏狀態和當前輸入傳遞給Sigmoid函數;接著把新得到的單元狀態傳遞給Tanh函數;然後把Tanh輸出和Sigmoid輸出相乘,以確定隱藏狀態應攜帶的信息;最後把隱藏狀態作為當前單元輸出,把新的單元狀態和新的隱藏狀態傳輸給下個時間步。 輸出門操作這裡總結下,遺忘門能決定需要保留先前步長中哪些相關信息,輸入門決定在當前輸入中哪些重要信息需要被添加,輸出門決定了下一個隱藏狀態。代碼示例這裡還提供了一個用Python寫的示例代碼,來讓大家能更好地理解這個結構。

首先,我們連接了先前的隱藏狀態和當前輸入,這裡定義為變量combine;

把combine變量傳遞到遺忘層中,以刪除不相關數據;

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

變量combine也要傳遞給輸出層,來決定應把候選層中的哪些數據添加到新的單元狀態中;

新的單元狀態可根據遺忘層、候選層和輸入層和先前的單元狀態來計算得到;

再計算當前單元輸出;

最後把輸出和新的單元狀態逐點相乘可得到新的隱藏狀態。

從上面看出,LSTM網絡的控制流程實際上只是幾個張量操作和一個for循環。你還可以用隱藏狀態進行預測。結合這些機制,LSTM能在序列處理過程中有選擇性地保留或遺忘某些信息。GRU介紹完LSTM的工作原理後,下面來看下門控循環單元GRU。GRU是RNN的另一類演化變種,與LSTM非常相似。GRU結構中去除了單元狀態,而使用隱藏狀態來傳輸信息。它只有兩個門結構,分別是更新門和重置門。 GRU單元結構更新門更新門的作用類似於LSTM中的遺忘門和輸入門,它能決定要丟棄哪些信息和要添加哪些新信息。重置門這兩部分組成了GRU,它的張量操作較少,因此訓練它比LSTM更快一點。在選擇網絡時很難判斷哪個更好,研究人員通常會兩個都試下,通過性能比較來選出更適合當前任務的結構。總結總而言之,RNN適用於處理序列數據和預測任務,但會受到短期記憶的影響。LSTM和GRU是兩種通過引入門結構來減弱短期記憶影響的演化變體,其中門結構可用來調節流經序列鏈的信息流。目前,LSTM和GRU經常被用於語音識別、語音合成和自然語言理解等多個深度學習應用中。如果你對這方面很感興趣,作者還列出一些乾貨連結,可以從更多角度來理解LSTM和GRU結構。http://www.wildml.com/2015/10/recurrent-neural-network-tutorial-part-4-implementing-a-grulstm-rnn-with-python-and-theanohttp://colah.github.io/posts/2015-08-Understanding-LSTMs/

原文:https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21

求分享 求點讚 求在看!!!

相關焦點

  • 超生動圖解 LSTM 和 GPU,一文讀懂循環神經網絡!
    (給Python開發者加星標,提升Python技能)來源:量子位(ID:QbitAI)AI識別你的語音、回答你的問題、幫你翻譯外語,都離不開一種特殊的循環神經網絡
  • 超生動圖解LSTM和GRU:拯救循環神經網絡的記憶障礙就靠它們了!
    AI識別你的語音、回答你的問題、幫你翻譯外語,都離不開一種特殊的循環神經網絡(RNN):長短期記憶網絡(Long short-term
  • 循環神經網絡和LSTM初學者指南
    文章中詳細介紹了循環神經網絡(RNN),及其變體長短期記憶(LSTM)背後的原理。 具體內容,從前饋網絡(Feedforward Networks)開始講起,先後講述了循環神經網絡、時序反向傳播算法(BPTT)、LSTM等模型的原理與運作方式。
  • 從動圖中理解 RNN,LSTM 和 GRU
    遞歸神經網絡(RNNs)是一類常用的序列數據人工神經網絡。三種最常見的遞歸神經網絡類型分別是: vanilla RNN長短記憶RNN(LSTM),由 Hochreiter和 Schmidhuber 在1997年提出門控循環單元(GRU),由Cho等人在2014年提出賽普·霍克賴特
  • 循環神經網絡 RNN、LSTM、GRU
    與傳統的前向神經網絡和卷積神經網絡 (CNN) 不同,循環神經網絡 (Recurrent Neural Networks,RNN)是一種擅於處理序列數據的模型,例如文本、時間序列、股票市場等。
  • 乾貨 圖解LSTM神經網絡架構及其11種變體(附論文)
    機器之心編譯 參與:老紅、李亞洲就像雨季後非洲大草原許多野生溪流分化成的湖泊和水窪,深度學習已經分化成了各種不同的專門架構。並且,每個架構都會有一個圖解,這裡將詳細介紹它們。神經網絡在概念上很簡單,並且它們十分動人。在層級上,有著一堆同質化的元素和統一的單位,並且它們之間還存在在一系列的加權連接。這就是神經網絡的所有,至少從理論上來說是這樣。然而,時間證明的結果卻有所不同。
  • 循環神經網絡RNN打開手冊
    首先, 要看RNN和對於圖像等靜態類變量處理立下神功的卷積網絡CNN的結構區別來看,  「循環」兩個字,已經點出了RNN的核心特徵, 即系統的輸出會保留在網絡裡, 和系統下一刻的輸入一起共同決定下一刻的輸出。這就把動力學的本質體現了出來, 循環正對應動力學系統的反饋概念,可以刻畫複雜的歷史依賴。另一個角度看也符合著名的圖靈機原理。
  • 教程| 如何使用TensorFlow構建、訓練和改進循環神經網絡
    選自SVDS作者:Matthew Rubashkin、Matt Mollison機器之心編譯參與:李澤南、吳攀來自 Silicon Valley Data Science 公司的研究人員為我們展示了循環神經網絡(RNN)探索時間序列和開發語音識別模型的能力。
  • 獨家 | 一文讀懂人工神經網絡
    人工神經網絡(ANN)是一種用於機器學習的計算模型,它的工作方式和生物的神經元類似。 當信息到達神經元,它們(神經元)通過調整網絡去感知和獲取這些信息得出一個理想的結果。通過神經元傳輸儘量多的數據會有助於得到更精準的結果。這就是神經網絡中的「訓練」。 在使用神經網絡之前,我們需要訓練和調試,以得到理想的決策結果。
  • LSTM、GRU與神經圖靈機:詳解深度學習最熱門的循環神經網絡
    為神經網絡添加狀態的好處是它們將能在序列預測問題中明確地學習和利用背景信息(context),這類問題包括帶有順序或時間組件的問題。在這篇文章中,你將踏上了解用於深度學習的循環神經網絡的旅程。在讀完這篇文章後,你將了解:用於深度學習的頂級循環神經網絡的工作方式,其中包括 LSTM、GRU 和 NTM。
  • 如何在GPU上設計高性能的神經網絡
    gpu對於機器學習是必不可少的。可以通過AWS或谷歌cloud輕鬆地啟動這些機器的集群。NVIDIA擁有業內領先的GPU,其張量核心為Volta V100和安培A100加速哪種方法最適合你的神經網絡?為了以最低的成本設計出最快的神經網絡,機器學習架構師必須解決許多問題。此外,僅僅使用帶有GPU和張量核心的機器並不能保證最高性能。
  • 詳解LSTM:神經網絡的記憶機制是這樣煉成的
    注意:如果你對神經網絡和LSTM很熟悉,請直接跳到本文的中間部分——前半部分相當於入門教程。神經網絡假設我們從某部電影中截取出了一系列的圖像,並且我們想對每張圖像進行標記,使其成為某個事件(是打鬥嗎?演員們在說話嗎?演員們在吃東西嗎?)
  • 從零開始實現循環神經網絡(無框架)
    >背景循環神經網絡是深度神經網絡的一種,發展於二十世紀八九十年代,隨著二十一世紀一零年代後深度學習的復興,循環神經網絡的研究與應用也走上了快車道。本文聚焦於原始的RNN及經典的LSTM網絡,從零開始無框架實現RNN和LSTM的前向傳播與後向傳播,並用於「下個字母」預測問題,希望本文能夠加深大家對循環神經網絡的理解。 解決問題
  • 神經網絡解析|RNN(循環神經網絡)
    大家如果了解BP算法或者前文我們介紹的CNN網絡就會發現,他們的輸出都是只考慮前一個輸入的影響而不考慮其它時刻輸入的影響,比如簡單的貓,狗等圖片,或者手寫數字等單個物體的識別具有較好的效果。但是,對於一些與時間先後有關的,比如視頻的下一時刻的預測,文檔前後文內容的預測等,這些算法的表現就不盡如人意了。因此,RNN就應運而生了。
  • Tensorflow教程-雙向的LSTM文本分類
    「 再小的你,也有自己的個性」通過閱讀本文,您能學到:1、利用雙向循環神經網絡進行文本分類
  • 理解LSTM神經網絡
    傳統的神經網絡無法做到這一點,這似乎是一個重大缺陷。例如,假設您想對電影中每個點發生的事件進行分類。尚不清楚傳統的神經網絡如何利用其對電影中先前事件的推理來預測後續事件。遞歸神經網絡解決了這個問題。它們是具有循環的網絡,可以使信息持久存在。傳統網絡(全連接、CNN網)是相對於循環網絡而言的。傳統網絡只對當前信息進行解析,而不會利用先前的信息,所以,無法使信息持久存在。
  • RNN遞歸神經網絡原理介紹+數字識別應用
    :CNN卷積神經網絡原理講解+圖片識別應用(附源碼)BP神經網絡+TensorFlow做圖片識別前言:自己學習研究完CNN卷積神經網絡後,很久的一段時間因為要完成自己的畢業設計就把更新博客給耽擱了。介紹CNN卷積神經網絡和RNN遞歸神經網絡都是由BP神經網絡演化而來的。CNN卷積神經網絡主要應用在圖像識別領域;而RNN遞歸神經網絡的改進版LSTM網絡主要應用於自然語言處理中;為什麼我介紹RNN是叫——遞歸神經網絡?這之前是一個困擾我很久的問題。
  • 從GPU、TPU到FPGA及其它:一文讀懂神經網絡硬體平臺戰局
    近日,多家公司的技術顧問 Matt Hurd 在其博客上發表了一篇全面評點各種神經網絡硬體平臺的長文,機器之心對本文進行了編譯介紹。這是我幾周前做的一個傳統的 90 年代風格的性別識別神經網絡的很好的隱藏節點。
  • 詳解:遞歸神經網絡和LSTM網絡那些事兒
    我們將首先討論一些關於「正常」前饋神經網絡的重要事實,你需要知道,以正確理解遞歸神經網絡。  但是了解什麼是順序數據也很重要。它基本上只是有序的數據,其中相關的東西彼此相關。最流行的連續數據類型可能是時間序列數據,它只是按時間順序列出的一系列數據點。  前饋神經網絡    RNN和前饋神經網絡都是以它們傳遞信息的方式命名的。
  • 一文讀懂圖神經網絡
    圖神經網絡作為神經網絡擴展,可以處理以圖結構表示的數據格式。在圖中,每個節點都由本身的特性以及其相鄰的節點和關系所定義,網絡通過遞歸地聚合和轉換相鄰節點的表示向量來計算節點的表示向量。為什麼要使用圖神經網絡圖神經網絡有靈活的結構和更新方式,可以很好的表達一些數據本身的結構特性,除了一些自帶圖結構的數據集(如Cora,Citeseer等)以外,圖神經網絡目前也被應用在更多的任務上,比如文本摘要,文本分類和序列標註任務等,目前圖神經網絡以及其變種在很多任務上都取得了目前最好的結果