日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

歡迎來到循環(huán)神經(jīng)網(wǎng)絡(luò)的插圖指南。我是邁克爾,也被稱為LearnedVector,我是AI語音領(lǐng)域的機器學(xué)習(xí)工程師。如果你剛剛開始使用ML并希望在Recurrent神經(jīng)網(wǎng)絡(luò)背后獲得一些直覺,那么這篇文章就適合你。

循環(huán)神經(jīng)網(wǎng)絡(luò)是一種強大的技術(shù),如果你想進入機器學(xué)習(xí),那么理解它就變得非常重要了。如果你使用智能手機或經(jīng)常上網(wǎng),那么你會經(jīng)常使用RNN的應(yīng)用程序。因為循環(huán)神經(jīng)網(wǎng)絡(luò)已經(jīng)被用于語音識別、語言翻譯、股票預(yù)測等等,它甚至用于圖像識別來描述圖片中的內(nèi)容。

所以我知道有許多關(guān)于循環(huán)神經(jīng)網(wǎng)絡(luò)的指南,但我想以分享插圖的方式解釋我是如何理解它的。我將避免講它背后的數(shù)學(xué)知識,而專注于RNN背后的真實的含義。通過閱讀這篇文章,你應(yīng)該對RNN有一個很好的理解。

序列數(shù)據(jù)

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

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

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

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

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

音頻頻譜圖切成塊

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

順序存儲

現(xiàn)在我們知道了RNN擅長處理預(yù)測的序列數(shù)據(jù),但是它是如何實現(xiàn)的呢?

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

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

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

那么現(xiàn)在嘗試反著說這些字母。

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

現(xiàn)在來一個更有趣的,咱們從字母F開始。

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

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

遞歸神經(jīng)網(wǎng)絡(luò)

這樣咱們就可以知道RNN有順序存儲的這個抽象概念,但是RNN如何學(xué)習(xí)這個概念呢?那么,讓我們來看一個傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),也稱為前饋神經(jīng)網(wǎng)絡(luò)。它有輸入層,隱藏層和輸出層。

我們?nèi)绾斡?xùn)練一個前饋神經(jīng)網(wǎng)絡(luò),以便能夠使用以前的信息來影響以后的信息呢?如果我們在神經(jīng)網(wǎng)絡(luò)中添加一個可以傳遞先前信息的循環(huán)它將會變成什么呢?

這基本上就是一個遞歸神經(jīng)網(wǎng)絡(luò)了。RNN讓循環(huán)機制充當(dāng)高速公路以允許信息從一個步驟流到下一個步驟。

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

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

假設(shè)我們想要構(gòu)建一個聊天機器人,以為它們現(xiàn)在非常受歡迎。假設(shè)聊天機器人可以根據(jù)用戶輸入的文本對意圖進行分類。

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

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

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

將一個句子分成單詞序列

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

對于下一步,我們提供單詞“time”和上一步中的隱藏狀態(tài)。RNN現(xiàn)在有關(guān)于“what”和“time”這兩個詞的信息。

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

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

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

RNN控制流的偽代碼

首先,初始化網(wǎng)絡(luò)層和初始隱藏狀態(tài)。隱藏狀態(tài)的形狀和維度將取決于你的遞歸神經(jīng)網(wǎng)絡(luò)的形狀和維度。然后循環(huán)輸入,將單詞和隱藏狀態(tài)傳遞給RNN。RNN返回輸出和修改的隱藏狀態(tài),接著就繼續(xù)循環(huán)。最后,將輸出傳遞給前饋層,然后返回預(yù)測。整個過程就是這樣!進行遞歸神經(jīng)網(wǎng)絡(luò)的正向傳遞的控制流程是for循環(huán)。

梯度消失

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

RNN的最終隱藏狀態(tài)

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

訓(xùn)練神經(jīng)網(wǎng)絡(luò)有三個主要步驟。首先,它進行前向傳遞并進行預(yù)測。其次,它使用損失函數(shù)將預(yù)測與基礎(chǔ)事實進行比較。損失函數(shù)輸出一個錯誤值,該錯誤值是對網(wǎng)絡(luò)執(zhí)行得有多糟糕的估計。最后,它使用該誤差值進行反向傳播,計算網(wǎng)絡(luò)中每個節(jié)點的梯度。

梯度是用于調(diào)整網(wǎng)絡(luò)內(nèi)部權(quán)重的值從而更新整個網(wǎng)絡(luò)。梯度越大,調(diào)整越大,反之亦然,這也就是問題所在。在進行反向傳播時,圖層中的每個節(jié)點都會根據(jù)漸變效果計算它在其前面的圖層中的漸變。因此,如果在它之前對層的調(diào)整很小,那么對當(dāng)前層的調(diào)整將更小。

這會導(dǎo)致漸變在向后傳播時呈指數(shù)級收縮。由于梯度極小,內(nèi)部權(quán)重幾乎沒有調(diào)整,因此較早的層無法進行任何學(xué)習(xí)。這就是消失的梯度問題。

梯度向后傳播時收縮

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

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

同樣,梯度值將用于在神經(jīng)網(wǎng)絡(luò)權(quán)重中進行調(diào)整,從而允許其學(xué)習(xí)。小的漸變意味著小的調(diào)整。這將導(dǎo)致最前面的層沒有優(yōu)化。

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

LSTMGRU

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

總結(jié)

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

原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。