人工智能算法與實踐-第14章 循環(huán)神經(jīng)網(wǎng)絡(luò)_第1頁
人工智能算法與實踐-第14章 循環(huán)神經(jīng)網(wǎng)絡(luò)_第2頁
人工智能算法與實踐-第14章 循環(huán)神經(jīng)網(wǎng)絡(luò)_第3頁
人工智能算法與實踐-第14章 循環(huán)神經(jīng)網(wǎng)絡(luò)_第4頁
人工智能算法與實踐-第14章 循環(huán)神經(jīng)網(wǎng)絡(luò)_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

14.4算法總結(jié)14.1算法概述14.2算法原理14.3算法案例目錄第一四章循環(huán)神經(jīng)網(wǎng)絡(luò)人工智能算法與實踐—1

14.1算法概述PartONE—2

14.1算法概述—3

循環(huán)神經(jīng)網(wǎng)絡(luò)(RecurrentNeuralNetwork,RNN)是神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的一種,它的實現(xiàn)是根據(jù)“人的認(rèn)知是基于過往經(jīng)驗和記憶”,它不僅僅考慮了前一個時刻的輸入,而且還賦予了該網(wǎng)絡(luò)對于前面提出的內(nèi)容的記憶功能。

RNN之所以被稱為循環(huán)神經(jīng)網(wǎng)絡(luò),是因為一個序列的輸出與前面的輸出也有關(guān),表現(xiàn)形式為網(wǎng)絡(luò)會對前面?zhèn)鬟f的信息進(jìn)行記憶并將其作用到當(dāng)前輸出和后續(xù)的計算中,即隱藏層之間的節(jié)點是存在連接的,所以在隱藏層的輸入不僅包括輸入層的輸出,還包括上一個隱藏層的輸出。

RNN應(yīng)用領(lǐng)域非常廣泛,可用于處理各類與時間先后順序有關(guān)的序列形數(shù)據(jù)。較為常見的應(yīng)用場景包括:自然語言處理,視頻處理、語言框架、圖像處理;機(jī)器翻譯;語音識別;圖像描述生成;文本相似度計算;廣告推薦,音樂推薦、商品推薦、YouTube視頻推薦等新的應(yīng)用領(lǐng)域。14.2算法原理PartRWO—4

14.2.1循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)—5

一個簡單的循環(huán)神經(jīng)網(wǎng)絡(luò)可以由一個輸入層、一個隱藏層和一個輸出層組成,如下圖如果將圖上圖中與W相關(guān)的輸入和輸出去掉,該網(wǎng)絡(luò)則變成了最普通的全連接神經(jīng)網(wǎng)絡(luò)。在該網(wǎng)絡(luò)中X和S分別代表一個向量,表示輸入層和隱藏層的值,且X與S向量的維數(shù)相同。U表示的是輸入層到隱藏層的權(quán)重,V表示的是隱藏層到輸出層的權(quán)重。O表示的是輸出的值,也是一個向量。那么W是什么呢?因為循環(huán)神經(jīng)網(wǎng)絡(luò)的隱藏層S不僅僅取決于當(dāng)前輸入層的輸入X,還受上一隱藏層S的影響,所以W就是一個權(quán)重矩陣,也就是隱藏層上一層的值對這一層的輸入影響的權(quán)重。將抽象圖轉(zhuǎn)換為更具體的結(jié)構(gòu)圖,可以發(fā)現(xiàn)U、W、V在每個時刻都相等。14.2.1循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)—6

將簡單神經(jīng)網(wǎng)絡(luò)按照時間線展開14.2.1循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)—7

可以清晰地看到:在t時刻神經(jīng)網(wǎng)絡(luò)接收到輸入Xt后,隱藏層的值為St,該時刻的輸出值為Ot。要注意的是,St取值不單單是取決于Xt,還受到St-1的影響。將循環(huán)神經(jīng)網(wǎng)絡(luò)的每一步總結(jié)為一個公式可表達(dá)為在t=1時刻,一般初始化輸入S0=0,隨機(jī)初始化W、U、V,用下面的公式計算:14.2.1循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)—8

其中,f和g均為激活函數(shù)。其中f可以是tanh,ReLU,Sigmoid等激活函數(shù),g通常是softmax,也可以是其他。隨著時間向前推進(jìn),此時的狀態(tài)S1作為時刻的記憶狀態(tài)將參與下一個時刻的預(yù)測活動,也就是:以此類推,可以得到最終的輸出值為:14.2.2RNN結(jié)構(gòu)變體—9

1.Nvs1結(jié)構(gòu)有些時候我們處理的問題是輸入一連串的序列,然后輸出一個單獨的值,如下圖所示。通常這樣的模型用來處理序列分類問題:如輸入一段視頻要求你判斷視頻屬于哪個類別。2.1vsN結(jié)構(gòu)1vsN結(jié)構(gòu)的RNN模型如下圖所示,該模型可以處理的問題有,輸入一個圖片,然后將圖片中的信息轉(zhuǎn)化為文字。此時輸入的是圖片的特征,輸出的是一段句子。14.2.2RNN結(jié)構(gòu)變體—10

3.NvsM結(jié)構(gòu)NvsM結(jié)構(gòu)又叫Encoder-Decoder(編碼-解碼)模型,也可以叫Seq2Seq模型。在基本的NvsM的RNN模型中,要求輸入輸出是等長的。然而在現(xiàn)實生活中我們能遇到的問題幾乎都是不等長的,例如機(jī)器翻譯,原始的語言和翻譯語言的句子長度往往是不同的。如下圖所示,Encoder-Decoder模型先將輸入的數(shù)據(jù)編碼成一個向量C。得到C的方式很多,最簡單的方法就是把Encoder最后隱藏層的狀態(tài)賦值給C,還可以將最后隱藏層的狀態(tài)進(jìn)行變換得到C。在得到C之后,另一個RNN模型將其進(jìn)行解碼,所以這一部分RNN被稱為Decoder。14.2.2RNN結(jié)構(gòu)變體—11

由于這種Encoder-Decoder結(jié)構(gòu)不限制輸入和輸出的序列長度,因此應(yīng)用的范圍非常廣泛。Encoder-Decoder的最經(jīng)典應(yīng)用如下所述。文本摘要:輸入是一段文本序列,輸出是這段文本序列的摘要序列。閱讀理解:將輸入的文章和問題分別編碼,再對其進(jìn)行解碼得到問題的答案。語音識別:輸入是語音信號序列,輸出是文字序列。14.3算法案例PartTHREE—12

14.3.1數(shù)據(jù)走勢預(yù)測案例—13

使用RNN的其主要目的是預(yù)測下一階段信息數(shù)據(jù)走向,RNN先利用已經(jīng)存在的數(shù)據(jù)即數(shù)據(jù)集進(jìn)行訓(xùn)練,在得到模型之后,使用模型并進(jìn)入下一階段的信息數(shù)據(jù)預(yù)測中。在這里,數(shù)據(jù)是通過一個函數(shù)來產(chǎn)生的,為了數(shù)據(jù)的真實性,在原有的數(shù)據(jù)基礎(chǔ)上再加上了微小的噪聲數(shù)據(jù)以保證數(shù)據(jù)符合現(xiàn)實數(shù)據(jù)狀態(tài)。最后使用了SimpleRNN和DeepRNN預(yù)測數(shù)據(jù)的走勢,并以圖的形式展示出來。14.3.1數(shù)據(jù)走勢預(yù)測案例—14

1.產(chǎn)生時間數(shù)據(jù)14.3.1數(shù)據(jù)走勢預(yù)測案例—15

1.產(chǎn)生時間數(shù)據(jù)3個預(yù)測的時間序列如圖14-7所示,使用曲線表示已經(jīng)產(chǎn)生的時間序列數(shù)據(jù),在t=50時,有一個即將要預(yù)測的數(shù),實際的函數(shù)值用符號×來表示。14.3.1數(shù)據(jù)走勢預(yù)測案例—16

P使用SimpleRNN預(yù)測,python程序代碼如下:14.3.1數(shù)據(jù)走勢預(yù)測案例—17

使用SimpleRNN預(yù)測結(jié)果如圖下圖所示。14.3.1數(shù)據(jù)走勢預(yù)測案例—18

如圖前面所示的輸出結(jié)果,該RNN只有一層,且只有一個神經(jīng)元,共有3個參數(shù)Wx、Wy和b。由于RNN能夠處理任意長度的序列,因此不需要指定輸入長度。SimpleRNN層默認(rèn)使用tanh激活函數(shù)。Keras中循環(huán)網(wǎng)絡(luò)層默認(rèn)只輸出最終的結(jié)果,如果想保留中間結(jié)果,請指定參數(shù):return_sequences=True。14.3.1數(shù)據(jù)走勢預(yù)測案例—19

使用DeepRNN預(yù)測的結(jié)果如下圖14-9所示。當(dāng)深度加深后,RNN的預(yù)測效果變好很多。比起SimpleRNN預(yù)測的結(jié)果更加接近真實值2.使用DeepRNN預(yù)測14.3.1數(shù)據(jù)走勢預(yù)測案例—20

使用DeepRNN預(yù)測,python程序代碼如下:14.3.2飛機(jī)乘客預(yù)測案例—21

該案例使用的數(shù)據(jù)集為airline-passengers.csv,該數(shù)據(jù)集記錄了從1949年1月到1960年12月期間美國航空每月的乘客數(shù)量,總數(shù)據(jù)為144條。下面列舉了數(shù)據(jù)的前10項,見表。在使用循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測的時候,我們使用前面100條作為訓(xùn)練數(shù)據(jù),后面44條用來驗證,然后使用訓(xùn)練的模型來預(yù)測30~144的數(shù)據(jù)。14.3.2飛機(jī)乘客預(yù)測案例—22

該預(yù)測的模型可用如下代碼定義14.3.2飛機(jī)乘客預(yù)測案例—23

最后將預(yù)測的數(shù)據(jù)和真實數(shù)據(jù)進(jìn)行對比,如下圖所示。14.4算法總結(jié)PartFOUR請?zhí)鎿Q文字內(nèi)容,修改文字內(nèi)容,也可以直接復(fù)制你的內(nèi)容到此?!?4

14.4算法總結(jié)—25

通過本章的學(xué)習(xí),我們已經(jīng)了解到循環(huán)神經(jīng)網(wǎng)絡(luò)的基本思想以及其實現(xiàn)的思路和方法。了解循環(huán)神經(jīng)網(wǎng)絡(luò)可以幫助我們解決預(yù)測和分類等問題,選擇適當(dāng)?shù)姆椒▌t可以事半功倍。雖然循環(huán)視經(jīng)網(wǎng)絡(luò)處理時間序列問題的效果很好,但是仍然存在著一些問題,其中較為嚴(yán)重的是容易出現(xiàn)梯度消失或者梯度爆炸的問題。此外,循環(huán)神經(jīng)網(wǎng)絡(luò)還有一些改進(jìn)的模型,這些模型各有千秋,適用于不同的預(yù)測任務(wù)。14.4.1雙向RNN—26

在某些電影里面,你要預(yù)測一個角色的身份,當(dāng)你使用前面的影片信息預(yù)測不到你想要的內(nèi)容時,則需要使用這個影片該時段后面的信息來預(yù)測,這就是雙向RNN。從前到后:從后往前:輸出:需要注意的是,這里里使用了向量的拼接,因為雙向RNN需要的內(nèi)存是單向RNN的兩倍,在同一時刻,雙向RNN需要保存兩個方向的權(quán)值。14.4.1雙向RNN—27

雙向RNN的結(jié)構(gòu)如圖所示。14.4.2深層雙向RNN—28

深層雙向RNN與雙向RNN的不同之處在于,深層雙向RNN多了幾個隱藏層。深層雙向RNN就類似背英語單詞的過程,當(dāng)我們背單詞時看了一遍很難就記住所有的單詞,而是需要在每次記憶的時候,將前一次背過的單詞復(fù)習(xí)一遍,然后再背一部分新的單詞。雙向RNN就是基于這樣一個思想,隱藏層輸入有兩個來源:一個是前一時刻隱藏層傳過來的信息,另一個是當(dāng)前時刻上一個神經(jīng)元傳過來的信息。圖14-12中的模型可以用公式表達(dá)為:然后再利用最后一層進(jìn)行分類,分類公式如下:14.4.2深層雙向RNN—29

深層雙向RNN結(jié)構(gòu)如圖所示。14.4.3金字塔RNN(PyramidalRNN)—30

PyramidalRNN的原理是,有一個輸入序列x1,x2,...,xt,第一層(最低層)是雙向RNN。如圖14-13所示,這個模型可以直接用于Encoder-Decoder的語音識別。在這個模型中,第一層是雙向RNN,第二層是將若干個第一層的輸出整合起來作為輸出結(jié)果,是雙向RNN,這樣的目的是可以將后續(xù)的序列縮短。后面一直這樣下去,這樣的結(jié)構(gòu)比單純的雙向RNN更加容易實現(xiàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論