日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

如何深度理解RNN?——看图就好!

發布時間:2024/8/23 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何深度理解RNN?——看图就好! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

歡迎來到循環神經網絡的插圖指南。我是邁克爾,也被稱為LearnedVector,我是AI語音領域的機器學習工程師。如果你剛剛開始使用ML并希望在Recurrent神經網絡背后獲得一些直覺,那么這篇文章就適合你。

循環神經網絡是一種強大的技術,如果你想進入機器學習,那么理解它就變得非常重要了。如果你使用智能手機或經常上網,那么你會經常使用RNN的應用程序。因為循環神經網絡已經被用于語音識別、語言翻譯、股票預測等等,它甚至用于圖像識別來描述圖片中的內容。

所以我知道有許多關于循環神經網絡的指南,但我想以分享插圖的方式解釋我是如何理解它的。我將避免講它背后的數學知識,而專注于RNN背后的真實的含義。通過閱讀這篇文章,你應該對RNN有一個很好的理解。

序列數據

RNN是神經網絡中的一種,它擅長對序列數據進行建模處理。要理解這意味著什么,讓我們做一個小實驗。假設你拍攝了一張球在時間上移動的靜態快照。

我們還要說你想預測球的移動方向。因此,只有你在屏幕上看到的信息,你才能做到這一點。但是你可以猜測,但你提出的任何答案都是隨機的猜測。如果不知道球的位置,就沒有足夠的數據來預測球的位置。

如果你連續記錄球位置的快照,那么你將有足夠的信息來做出更好的預測。

所以這是一個序列,一個特定的順序,其中是一個事物跟隨另一個事物。有了這些信息,你現在可以看到球向右移動。

序列數據有很多種形式。音頻是一種自然的序列,你可以將音頻頻譜圖分成塊并將其饋入RNN。

音頻頻譜圖切成塊

文本也是一種形式的序列,你可以將文本分成一系列字符或一系列單詞。

順序存儲

現在我們知道了RNN擅長處理預測的序列數據,但是它是如何實現的呢?

它通過我喜歡稱為順序存儲的概念來做到這一點。獲得順序存儲的能力意味著什么?我們通過一個小例子來說明它。

我想邀請你說出你腦海中的字母。

這很簡單吧,如果你被教了這個特定的序列,你應該能夠很快記起它。

那么現在嘗試反著說這些字母。

我敢打賭,這要困難得多。除非你之前練過這個特定的序列,否則你可能會遇到困難。

現在來一個更有趣的,咱們從字母F開始。

首先,你會在前幾個字母上掙扎,但是在你的大腦拿起圖案后,剩下的就會自然而然。

因此,有一個非常合乎邏輯的原因是困難的。你將字母表作為序列學習,順序存儲是一種使大腦更容易識別序列模式的機制。

遞歸神經網絡

這樣咱們就可以知道RNN有順序存儲的這個抽象概念,但是RNN如何學習這個概念呢?那么,讓我們來看一個傳統的神經網絡,也稱為前饋神經網絡。它有輸入層,隱藏層和輸出層。

我們如何訓練一個前饋神經網絡,以便能夠使用以前的信息來影響以后的信息呢?如果我們在神經網絡中添加一個可以傳遞先前信息的循環它將會變成什么呢?

這基本上就是一個遞歸神經網絡了。RNN讓循環機制充當高速公路以允許信息從一個步驟流到下一個步驟。

將隱藏狀態傳遞給下一個步驟

此信息是隱藏狀態,它是先前輸入的表示。讓我們通過一個RNN用例來更好地理解它是如何工作的。

假設我們想要構建一個聊天機器人,以為它們現在非常受歡迎。假設聊天機器人可以根據用戶輸入的文本對意圖進行分類。

對用戶輸入的意圖進行分類

為了解決這個問題。首先,我們將使用RNN對文本序列進行編碼。然后,我們將RNN輸出饋送到前饋神經網絡中,該網絡將對用戶輸入意圖進行分類。

假設用戶輸入:what time is it?首先,我們將句子分解為單個單詞。RNN按順序工作,所以我們一次只能輸入一個字。

將一個句子分成單詞序列

第一步是將“What”輸入RNN,RNN編碼“what”并產生輸出。

對于下一步,我們提供單詞“time”和上一步中的隱藏狀態。RNN現在有關于“what”和“time”這兩個詞的信息。

我們重復這個過程,直到最后一步。你可以通過最后一步看到RNN編碼了前面步驟中所有單詞的信息。

由于最終輸出是從序列的部分創建的,因此我們應該能夠獲取最終輸出并將其傳遞給前饋層以對意圖進行分類。

對于那些喜歡在這里查看代碼的人來說,使用python展示了控制流程應該是最好的方式。

RNN控制流的偽代碼

首先,初始化網絡層和初始隱藏狀態。隱藏狀態的形狀和維度將取決于你的遞歸神經網絡的形狀和維度。然后循環輸入,將單詞和隱藏狀態傳遞給RNN。RNN返回輸出和修改的隱藏狀態,接著就繼續循環。最后,將輸出傳遞給前饋層,然后返回預測。整個過程就是這樣!進行遞歸神經網絡的正向傳遞的控制流程是for循環。

梯度消失

你可能已經注意到隱藏狀態中奇怪的顏色分布。這是為了說明RNN被稱為短期記憶的問題。

RNN的最終隱藏狀態

短期記憶問題是由臭名昭著的梯度消失問題引起的,這在其他神經網絡架構中也很普遍。由于RNN處理很多步驟,因此難以保留先前步驟中的信息。正如你所看到的,在最后的時間步驟中,“what”和“time”這個詞的信息幾乎不存在。短期記憶和梯度消失是由于反向傳播的性質引起的,反向傳播是用于訓練和優化神經網絡的算法。為了理解這是為什么,讓我們來看看反向傳播對深度前饋神經網絡的影響。

訓練神經網絡有三個主要步驟。首先,它進行前向傳遞并進行預測。其次,它使用損失函數將預測與基礎事實進行比較。損失函數輸出一個錯誤值,該錯誤值是對網絡執行得有多糟糕的估計。最后,它使用該誤差值進行反向傳播,計算網絡中每個節點的梯度。

梯度是用于調整網絡內部權重的值從而更新整個網絡。梯度越大,調整越大,反之亦然,這也就是問題所在。在進行反向傳播時,圖層中的每個節點都會根據漸變效果計算它在其前面的圖層中的漸變。因此,如果在它之前對層的調整很小,那么對當前層的調整將更小。

這會導致漸變在向后傳播時呈指數級收縮。由于梯度極小,內部權重幾乎沒有調整,因此較早的層無法進行任何學習。這就是消失的梯度問題。

梯度向后傳播時收縮

讓我們看看這如何適用于遞歸神經網絡。你可以將循環神經網絡中的每個時間步驟視為一個層。為了訓練一個遞歸神經網絡,你使用了一種稱為通過時間反向傳播的方法。這樣梯度值在每個時間步長傳播時將呈指數級收縮。

隨著時間的推移,梯度會收縮

同樣,梯度值將用于在神經網絡權重中進行調整,從而允許其學習。小的漸變意味著小的調整。這將導致最前面的層沒有優化。

由于梯度消失,RNN不會跨時間步驟學習遠程依賴性。這意味著在嘗試預測用戶的意圖時,有可能不考慮“what”和“time”這兩個詞。然后網絡就可能作出的猜測是“is it?”。這很模糊,即使是人類也很難辨認這到底是什么意思。因此,無法在較早的時間步驟上學習會導致網絡具有短期記憶。

LSTMGRU

RNN會受到短期記憶的影響,那么我們如何應對呢?為了減輕短期記憶的影響,研究者們創建了兩個專門的遞歸神經網絡,一種叫做長短期記憶或簡稱LSTM。另一個是門控循環單位或GRU。LSTM和GRU本質上就像RNN一樣,但它們能夠使用稱為“門”的機制來學習長期依賴。這些門是不同的張量操作,可以學習添加或刪除隱藏狀態的信息。由于這種能力,短期記憶對他們來說不是一個問題。如果你想了解有關LSTM和GRU的更多信息,你可以在其上查看我的插圖視頻。

總結

總而言之,RNN適用于處理序列數據以進行預測,但卻會受到短期記憶的影響。vanilla RNN的短期存儲問題并不意味著要完全跳過它們并使用更多進化版本,如LSTM或GRU。RNN具有更快訓練和使用更少計算資源的優勢,這是因為要計算的張量操作較少。當你期望對具有長期依賴的較長序列建模時,你應該使用LSTM或GRU。

原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。

總結

以上是生活随笔為你收集整理的如何深度理解RNN?——看图就好!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。