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

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

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

循環(huán)神經(jīng)網(wǎng)絡(luò)模型與前向反向傳播算法

Dbwd_Imgtec ? 來源:fqj ? 2019-05-10 08:48 ? 次閱讀

本文將討論:循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks ,以下簡稱RNN),它廣泛的用于自然語言處理中的語音識(shí)別,手寫書別以及機(jī)器翻譯等領(lǐng)域。

1. RNN概述

在前面講到的DNN和CNN中,訓(xùn)練樣本的輸入和輸出是比較的確定的。但是有一類問題DNN和CNN不好解決,就是訓(xùn)練樣本輸入是連續(xù)的序列,且序列的長短不一,比如基于時(shí)間的序列:一段段連續(xù)的語音,一段段連續(xù)的手寫文字。這些序列比較長,且長度不一,比較難直接的拆分成一個(gè)個(gè)獨(dú)立的樣本來通過DNN/CNN進(jìn)行訓(xùn)練。

而對(duì)于這類問題,RNN則比較的擅長。那么RNN是怎么做到的呢?RNN假設(shè)我們的樣本是基于序列的。比如是從序列索引 1 到序列索引 T 的。對(duì)于這其中的任意序列索引號(hào) t,它對(duì)應(yīng)的輸入是對(duì)應(yīng)的樣本序列中的。而模型在序列索引號(hào) t 位置的隱藏狀態(tài),則由共同決定。在任意序列索引號(hào) t,我們也有對(duì)應(yīng)的模型預(yù)測輸出。通過預(yù)測輸出和訓(xùn)練序列真實(shí)輸出,以及損失函數(shù),我們就可以用DNN類似的方法來訓(xùn)練模型,接著用來預(yù)測測試序列中的一些位置的輸出。

下面我們來看看RNN的模型。

2. RNN模型

RNN模型有比較多的變種,這里介紹最主流的RNN模型結(jié)構(gòu)如下:

循環(huán)神經(jīng)網(wǎng)絡(luò)模型與前向反向傳播算法

上圖中左邊是RNN模型沒有按時(shí)間展開的圖,如果按時(shí)間序列展開,則是上圖中的右邊部分。我們重點(diǎn)觀察右邊部分的圖。

這幅圖描述了在序列索引號(hào)t附近RNN的模型。其中:

1)代表在序列索引號(hào) t?1 和 t+1 時(shí)訓(xùn)練樣本的輸入。

2)

3)

4)

5)代表在序列索引號(hào) t 時(shí)訓(xùn)練樣本序列的真實(shí)輸出。

6)U,W,V這三個(gè)矩陣是我們的模型的線性關(guān)系參數(shù),它在整個(gè)RNN網(wǎng)絡(luò)中是共享的,這點(diǎn)和DNN很不相同。 也正因?yàn)槭枪蚕砹耍w現(xiàn)了RNN的模型的“循環(huán)反饋”的思想。

3. RNN前向傳播算法

有了上面的模型,RNN的前向傳播算法就很容易得到了。

對(duì)于任意一個(gè)序列索引號(hào)t,我們隱藏狀態(tài)

循環(huán)神經(jīng)網(wǎng)絡(luò)模型與前向反向傳播算法

其中 σ 為RNN的激活函數(shù),一般為 tanh, b為線性關(guān)系的偏倚。

序列索引號(hào) t 時(shí)模型的輸出

?+ c

在最終在序列索引號(hào) t 時(shí)我們的預(yù)測輸出為:

循環(huán)神經(jīng)網(wǎng)絡(luò)模型與前向反向傳播算法

通常由于RNN是識(shí)別類的分類模型,所以上面這個(gè)激活函數(shù)一般是softmax。

通過損失函數(shù)

4. RNN反向傳播算法推導(dǎo)

有了RNN前向傳播算法的基礎(chǔ),就容易推導(dǎo)出RNN反向傳播算法的流程了。RNN反向傳播算法的思路和DNN是一樣的,即通過梯度下降法一輪輪的迭代,得到合適的RNN模型參數(shù) U,W,V,b,c 。由于我們是基于時(shí)間反向傳播,所以RNN的反向傳播有時(shí)也叫做BPTT(back-propagation through time)。當(dāng)然這里的BPTT和DNN也有很大的不同點(diǎn),即這里所有的 U,W,V,b,c 在序列的各個(gè)位置是共享的,反向傳播時(shí)我們更新的是相同的參數(shù)。

為了簡化描述,這里的損失函數(shù)我們?yōu)榻徊骒負(fù)p失函數(shù),輸出的激活函數(shù)為softmax函數(shù),隱藏層的激活函數(shù)為tanh函數(shù)。

對(duì)于RNN,由于我們?cè)谛蛄械拿總€(gè)位置都有損失函數(shù),因此最終的損失 L 為:

循環(huán)神經(jīng)網(wǎng)絡(luò)模型與前向反向傳播算法

其中 V,c,的梯度計(jì)算是比較簡單的:

循環(huán)神經(jīng)網(wǎng)絡(luò)模型與前向反向傳播算法

但是 W,U,b 的梯度計(jì)算就比較的復(fù)雜了。從RNN的模型可以看出,在反向傳播時(shí),在在某一序列位置t的梯度損失由當(dāng)前位置的輸出對(duì)應(yīng)的梯度損失和序列索引位置 t+1 時(shí)的梯度損失兩部分共同決定。對(duì)于 W 在某一序列位置t的梯度損失需要反向傳播一步步的計(jì)算。我們定義序列索引 t 位置的隱藏狀態(tài)的梯度為:

循環(huán)神經(jīng)網(wǎng)絡(luò)模型與前向反向傳播算法

這樣我們可以像DNN一樣從遞推?。

循環(huán)神經(jīng)網(wǎng)絡(luò)模型與前向反向傳播算法

對(duì)于,由于它的后面沒有其他的序列索引了,因此有:

循環(huán)神經(jīng)網(wǎng)絡(luò)模型與前向反向傳播算法

有了

循環(huán)神經(jīng)網(wǎng)絡(luò)模型與前向反向傳播算法

除了梯度表達(dá)式不同,RNN的反向傳播算法和DNN區(qū)別不大,因此這里就不再重復(fù)總結(jié)了。

5. RNN小結(jié)

上面總結(jié)了通用的RNN模型和前向反向傳播算法。當(dāng)然,有些RNN模型會(huì)有些不同,自然前向反向傳播的公式會(huì)有些不一樣,但是原理基本類似。

RNN雖然理論上可以很漂亮的解決序列數(shù)據(jù)的訓(xùn)練,但是它也像DNN一樣有梯度消失時(shí)的問題,當(dāng)序列很長的時(shí)候問題尤其嚴(yán)重。因此,上面的RNN模型一般不能直接用于應(yīng)用領(lǐng)域。在語音識(shí)別,手寫書別以及機(jī)器翻譯等NLP領(lǐng)域?qū)嶋H應(yīng)用比較廣泛的是基于RNN模型的一個(gè)特例LSTM,下一篇我們就來討論LSTM模型。

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

原文標(biāo)題:循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)模型與前向反向傳播算法

文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    神經(jīng)網(wǎng)絡(luò)教程(李亞非)

    網(wǎng)絡(luò)BP算法的程序設(shè)計(jì)  多層網(wǎng)絡(luò)BP算法源程序  第4章 Hopfield
    發(fā)表于 03-20 11:32

    【案例分享】基于BP算法神經(jīng)網(wǎng)絡(luò)

    傳播的,不會(huì)回流),區(qū)別于循環(huán)神經(jīng)網(wǎng)絡(luò)RNN。BP算法(Back Propagation):誤差反向傳播
    發(fā)表于 07-21 04:00

    神經(jīng)網(wǎng)絡(luò)反向傳播算法

    03_深度學(xué)習(xí)入門_神經(jīng)網(wǎng)絡(luò)反向傳播算法
    發(fā)表于 09-12 07:08

    手動(dòng)設(shè)計(jì)一個(gè)卷積神經(jīng)網(wǎng)絡(luò)傳播反向傳播

    本文主要寫卷積神經(jīng)網(wǎng)絡(luò)如何進(jìn)行一次完整的訓(xùn)練,包括傳播反向傳播,并自己手寫一個(gè)卷積
    的頭像 發(fā)表于 05-28 10:35 ?1.8w次閱讀
    手動(dòng)設(shè)計(jì)一個(gè)卷積<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>(<b class='flag-5'>前</b><b class='flag-5'>向</b><b class='flag-5'>傳播</b>和<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>)

    淺析深度神經(jīng)網(wǎng)絡(luò)(DNN)反向傳播算法(BP)

    在 深度神經(jīng)網(wǎng)絡(luò)(DNN)模型傳播算法 中,我們對(duì)DNN的
    的頭像 發(fā)表于 03-22 16:28 ?3574次閱讀
    淺析深度<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>(DNN)<b class='flag-5'>反向</b><b class='flag-5'>傳播</b><b class='flag-5'>算法</b>(BP)

    反向傳播神經(jīng)網(wǎng)絡(luò)建模的基本原理

    反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡稱BP神經(jīng)網(wǎng)絡(luò))是一種多層
    的頭像 發(fā)表于 07-02 14:05 ?219次閱讀

    反向傳播神經(jīng)網(wǎng)絡(luò)模型的特點(diǎn)

    反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡稱BP神經(jīng)網(wǎng)絡(luò))是一種多層
    的頭像 發(fā)表于 07-02 14:14 ?291次閱讀

    神經(jīng)網(wǎng)絡(luò)反向傳播算法原理是什么

    神經(jīng)網(wǎng)絡(luò)反向傳播算法(Backpropagation Algorithm)是一種用于訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-02 14:16 ?331次閱讀

    神經(jīng)網(wǎng)絡(luò)傳播反向傳播區(qū)別

    神經(jīng)網(wǎng)絡(luò)是一種強(qiáng)大的機(jī)器學(xué)習(xí)模型,廣泛應(yīng)用于各種領(lǐng)域,如圖像識(shí)別、語音識(shí)別、自然語言處理等。神經(jīng)網(wǎng)絡(luò)的核心是
    的頭像 發(fā)表于 07-02 14:18 ?494次閱讀

    反向傳播神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)的區(qū)別

    反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡稱BP神經(jīng)網(wǎng)絡(luò))是一種多層
    的頭像 發(fā)表于 07-03 11:00 ?524次閱讀

    神經(jīng)網(wǎng)絡(luò)傳播反向傳播神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中的作用

    神經(jīng)網(wǎng)絡(luò)是一種強(qiáng)大的機(jī)器學(xué)習(xí)模型,它通過模擬人腦神經(jīng)元的連接方式來處理復(fù)雜的數(shù)據(jù)。神經(jīng)網(wǎng)絡(luò)的核心是
    的頭像 發(fā)表于 07-03 11:11 ?686次閱讀

    神經(jīng)網(wǎng)絡(luò)反向傳播算法的推導(dǎo)過程

    反向傳播算法的推導(dǎo)過程,包括傳播、損失函數(shù)、梯度計(jì)算和權(quán)重更新等步驟。
    的頭像 發(fā)表于 07-03 11:13 ?365次閱讀

    神經(jīng)網(wǎng)絡(luò)反向傳播算法的原理、數(shù)學(xué)推導(dǎo)及實(shí)現(xiàn)步驟

    神經(jīng)網(wǎng)絡(luò)反向傳播算法(Backpropagation Algorithm)是一種用于訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-03 11:16 ?549次閱讀

    神經(jīng)網(wǎng)絡(luò)反向傳播算法的作用是什么

    神經(jīng)網(wǎng)絡(luò)反向傳播算法(Backpropagation)是一種用于訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)算法,它通過計(jì)
    的頭像 發(fā)表于 07-03 11:17 ?852次閱讀

    神經(jīng)網(wǎng)絡(luò)反向傳播算法的優(yōu)缺點(diǎn)有哪些

    神經(jīng)網(wǎng)絡(luò)反向傳播算法(Backpropagation Algorithm)是一種廣泛應(yīng)用于深度學(xué)習(xí)和機(jī)器學(xué)習(xí)領(lǐng)域的優(yōu)化算法,用于訓(xùn)練多層
    的頭像 發(fā)表于 07-03 11:24 ?515次閱讀