人工智能算法與實(shí)踐-第16章 LSTM神經(jīng)網(wǎng)絡(luò)_第1頁(yè)
人工智能算法與實(shí)踐-第16章 LSTM神經(jīng)網(wǎng)絡(luò)_第2頁(yè)
人工智能算法與實(shí)踐-第16章 LSTM神經(jīng)網(wǎng)絡(luò)_第3頁(yè)
人工智能算法與實(shí)踐-第16章 LSTM神經(jīng)網(wǎng)絡(luò)_第4頁(yè)
人工智能算法與實(shí)踐-第16章 LSTM神經(jīng)網(wǎng)絡(luò)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

16.4算法總結(jié)16.1算法概述16.2算法原理16.3算法案例目錄第十六章LSTM神經(jīng)網(wǎng)絡(luò)人工智能算法與實(shí)踐—1

01算法概述PartONE—2

16.1

算法概述算法概述—3

股票預(yù)測(cè)中,如果知道一年中前半年的股票上漲或下跌的走向趨勢(shì),便可根據(jù)這些數(shù)據(jù)預(yù)測(cè)出后半年的股票走向趨勢(shì)。傳統(tǒng)的RNN算法只能實(shí)現(xiàn)根據(jù)當(dāng)前時(shí)間步的數(shù)據(jù)預(yù)測(cè)下一個(gè)時(shí)間步的數(shù)據(jù),當(dāng)時(shí)間步很長(zhǎng)時(shí),最后一個(gè)時(shí)間步通常獲取不到第一個(gè)時(shí)間步的信息,這就是所謂的梯度消失問(wèn)題,因此便有人提出了長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LongShortTermMemory,LSTM)算法。LSTM算法是一種循環(huán)神經(jīng)網(wǎng)絡(luò),由JürgenSchmidhuber提出。這一算法通過(guò)隨時(shí)間反向傳播(BackpropagationThroughTime,BPTT)進(jìn)行訓(xùn)練,解決了梯度消失問(wèn)題,通過(guò)引入遺忘門(mén)、輸入門(mén)、更新門(mén),對(duì)前一時(shí)間步和當(dāng)前時(shí)間步的數(shù)據(jù)信息進(jìn)行有選擇性的保存,便于產(chǎn)生符合要求的預(yù)測(cè)結(jié)果。該算法以RNN為基礎(chǔ),主要用于處理和預(yù)測(cè)時(shí)間序列中間隔和延遲相對(duì)較長(zhǎng)的重要事件,目前的應(yīng)用領(lǐng)域主要包括自然語(yǔ)言處理、股票預(yù)測(cè)、天氣預(yù)報(bào)、內(nèi)容推薦、自動(dòng)駕駛、翻譯語(yǔ)言、控制機(jī)器人、圖像分析、文檔摘要、手寫(xiě)識(shí)別、預(yù)測(cè)疾病等。如果已知某城市過(guò)去10年間每個(gè)月份某一日期的天氣情況,包括溫度值、潮濕度、風(fēng)力、風(fēng)向、降水量等,那么利用LSTM神經(jīng)網(wǎng)絡(luò)就可以根據(jù)這10年的天氣數(shù)據(jù)對(duì)今后1年或3年的天氣情況進(jìn)行預(yù)測(cè)。假定已知國(guó)際航空公司1949年1月至1960年12月所有月份的乘客人數(shù),見(jiàn)下表,要求預(yù)測(cè)未來(lái)幾年該航空公司的乘客人數(shù)。16.1

算法概述算法概述—4

利用LSTM算法思想,可能此過(guò)程描述為,已知某城市12年內(nèi)的數(shù)據(jù)集,其中包含年份和月份,以及當(dāng)月的乘客人數(shù),要求估測(cè)明年的乘客人數(shù)。根據(jù)上述過(guò)程,要做這個(gè)預(yù)測(cè),首先要獲取12年的乘客數(shù)據(jù)集,然后根據(jù)該數(shù)據(jù)波動(dòng)情況建模,數(shù)據(jù)走勢(shì)情況如下圖1所示,構(gòu)建出一個(gè)較為理想的模型,然后對(duì)未來(lái)一年的乘客人數(shù)進(jìn)行預(yù)測(cè),預(yù)測(cè)結(jié)果如下圖2所示,藍(lán)色曲線為樣本的真實(shí)值,橙色線為訓(xùn)練集,綠色線條為測(cè)試集,可以看到測(cè)試集與樣本的真實(shí)值擬合得比較好。16.1算法概述算法概述—5

國(guó)際航班乘客人數(shù)走勢(shì)圖LSTM預(yù)測(cè)結(jié)果圖16.1算法概述算法概述—6

LSTM算法引入3個(gè)門(mén)控結(jié)構(gòu),分別是遺忘門(mén)、輸入門(mén)和輸出門(mén)。其中遺忘門(mén)決定對(duì)于上一時(shí)間步的數(shù)據(jù)是否進(jìn)行遺忘,輸入門(mén)決定對(duì)于當(dāng)前時(shí)間步的輸入的接受程度,輸出門(mén)是對(duì)當(dāng)前細(xì)胞狀態(tài)的輸出。算法的整個(gè)過(guò)程包含四個(gè)步驟。(1)初始化模型參數(shù);(2)定義模型;(3)訓(xùn)練模型;(4)使用訓(xùn)練好的模型進(jìn)行預(yù)測(cè)。LSTM算法的步驟如下圖所示。02算法原理PartTWO—7

16.2LSTM

結(jié)構(gòu)圖LSTM結(jié)構(gòu)圖—8

16.2.1細(xì)胞狀態(tài)細(xì)胞狀態(tài)—9

除了細(xì)胞狀態(tài),LSTM中還有很多其他的結(jié)構(gòu),這些結(jié)構(gòu)一般稱(chēng)為門(mén)控結(jié)構(gòu)。門(mén)是一個(gè)全連接層,該層的輸入是一個(gè)向量,輸出是一個(gè)0到1之間的實(shí)數(shù)向量。假設(shè)W是門(mén)的權(quán)重向量,b是偏置項(xiàng),則門(mén)可表示為g(x)=s(Wx+b)。LSTM在每個(gè)序列時(shí)刻t一般包含3個(gè)門(mén):遺忘門(mén)、輸入門(mén)、輸出門(mén)。16.2.2遺忘門(mén)遺忘門(mén)—10

16.2.3輸入門(mén)輸入門(mén)—11

16.2.4更新門(mén)更新門(mén)—12

16.2.5輸出門(mén)輸出門(mén)—13

16.2.6BPTTBPTT—14

LSTM保留了與RNN相同的BPTT的方式,RNN以BPTT的方式進(jìn)行前向和反向傳播,其中前向傳播及反向傳播示意圖分別下圖所示,首先看一下RNN的基本模型。

16.2.6BPTTBPTT—15

我們的目標(biāo)是計(jì)算誤差對(duì)于U、V、W參數(shù)的梯度,然后用隨機(jī)梯度下降法學(xué)習(xí)更好的參數(shù),此過(guò)程需要將每個(gè)訓(xùn)練實(shí)例中每個(gè)時(shí)間步的梯度相加。

16.2.6BPTTBPTT—16

將每個(gè)時(shí)間步的梯度進(jìn)行相加求和。換句話說(shuō),因?yàn)閃在每一步中都被使用,一直到最后的輸出,因此我們需要從t=3一直反向傳播到t=0。

可以觀察到,這一步驟與深度前饋神經(jīng)網(wǎng)絡(luò)中適用的標(biāo)準(zhǔn)反向傳播算法完全相同。關(guān)鍵的區(qū)別是需要把每個(gè)時(shí)間步長(zhǎng)的梯度加起來(lái)。在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)中,不跨層共享參數(shù),因此不需要對(duì)任何東西求和。16.2.7梯度消失梯度消失—17

tanh函數(shù)和Sigmoid函數(shù)在兩端的導(dǎo)數(shù)都是0,此時(shí)神經(jīng)元是飽和的。有零梯度并且驅(qū)動(dòng)其他的梯度在前面的層接近0。因此,對(duì)于較小的矩陣值和多重矩陣的乘法,梯度值以指數(shù)速度縮小,最終在幾個(gè)時(shí)間步后完全消失,最終沒(méi)有學(xué)習(xí)到長(zhǎng)期依賴(lài)關(guān)系。如果雅可比矩陣的值很大,我們可以得到爆炸的梯度。梯度消失比梯度爆炸受到更多關(guān)注主要是因?yàn)楸ㄊ綕u變是顯而易見(jiàn)的,此時(shí)梯度將變成NaN,程序?qū)⒈罎ⅰP疫\(yùn)的是,有一些方法可以解決梯度消失的問(wèn)題。適當(dāng)?shù)某跏蓟仃嚳梢詼p小消失梯度的影響。所以能正規(guī)化。更可取的解決方案是使用ReLU而不是Sigmoid激活函數(shù)。ReLU的導(dǎo)數(shù)是一個(gè)常數(shù),要么為0,要么為1,所以它不太可能受到梯度消失的影響。tanh函數(shù)及其導(dǎo)數(shù)示意圖Sigmoid函數(shù)及其導(dǎo)數(shù)示意圖03算法案例PartTHREE股票價(jià)格預(yù)測(cè)—18

預(yù)測(cè)訓(xùn)練模型定義模型初始化參數(shù)在該步驟中需要對(duì)使用到的參數(shù)進(jìn)行定義和初始化,其中包含輸入值的數(shù)目、隱藏單元的個(gè)數(shù)、輸出值的數(shù)目,還包括輸入門(mén)參數(shù)、遺忘門(mén)參數(shù)、輸出門(mén)參數(shù)、候選記憶細(xì)胞參數(shù)、輸出層參數(shù)。初始化模型參數(shù)后,該步使用這些參數(shù)進(jìn)行遺忘門(mén)、輸入門(mén)、輸出門(mén)的計(jì)算,同時(shí)計(jì)算出輸出參數(shù)。LSTM的訓(xùn)練算法仍是反向傳播算法。第一,前向計(jì)算每個(gè)神經(jīng)元的輸出值。第二,反向計(jì)算每個(gè)神經(jīng)元的誤差項(xiàng),與RNN相同的是,LSTM誤差項(xiàng)的反向傳播也包括兩個(gè)方向:一個(gè)是沿時(shí)間的反向傳播,即從當(dāng)前時(shí)刻開(kāi)始,計(jì)算每個(gè)時(shí)刻的誤差項(xiàng);一個(gè)是將誤差項(xiàng)向上一層傳播。第三,根據(jù)誤差項(xiàng),計(jì)算每個(gè)權(quán)重的梯度。通常情況下TensorFlow或Keras框架是進(jìn)行預(yù)測(cè)的較好選擇。將測(cè)試集作為參數(shù),直接調(diào)用對(duì)應(yīng)的預(yù)測(cè)函數(shù)即可。16.3.1LSTM算法構(gòu)建LSTM算法構(gòu)建—19

LSTM算法首先對(duì)每個(gè)數(shù)據(jù)集進(jìn)行讀取操作,得到數(shù)據(jù)集列表,然后定義并初始化將要用到的模型參數(shù),然后定義LSTM模型,最終構(gòu)建模型并進(jìn)行數(shù)據(jù)預(yù)測(cè)。LSTM算法偽代碼:16.3.2LSTM算法描述LSTM算法實(shí)現(xiàn)—20

LSTM的優(yōu)點(diǎn)在于模型預(yù)測(cè)準(zhǔn)確率較高,高于RNN,但是其缺點(diǎn)也很明顯,當(dāng)LSTM的層數(shù)很多時(shí),訓(xùn)練模型的參數(shù)會(huì)超級(jí)多,因此會(huì)花費(fèi)很多時(shí)間,為了解決這一問(wèn)題,有學(xué)者提出了將LSTM的遺忘門(mén)與輸入門(mén)進(jìn)行合并的方法,即GRU(GatedRecurrentUnit,門(mén)控循環(huán)單元),其模型預(yù)測(cè)準(zhǔn)確率與LSTM不相上下,但訓(xùn)練時(shí)參數(shù)相較于LSTM大大減少,訓(xùn)練速度顯著快于LSTM。16.3.3LSTM算法實(shí)現(xiàn)LSTM算法實(shí)現(xiàn)—21

1前向計(jì)算LSTM的前向計(jì)算是通過(guò)式(16-1)~式(16-6)實(shí)現(xiàn)的,最終得到該時(shí)間序列的輸出值。2隨時(shí)間反向傳播算法LSTM的反向傳播算法與RNN相同,都使用BPTT算法。該算法是常用的訓(xùn)練RNN的方法,其本質(zhì)還是BP算法,只不過(guò)RNN處理時(shí)間序列數(shù)據(jù),因此要基于時(shí)間反向傳播,所以被稱(chēng)為隨時(shí)間反向傳播。BPTT的中心思想與BP算法相同,即沿著需要優(yōu)化的參數(shù)的負(fù)梯度方向不斷尋找最優(yōu)的點(diǎn)直至收斂。因此BPTT的核心為求各個(gè)參數(shù)的梯度。反向傳播算法主要包含以下3步。(1)前向計(jì)算每個(gè)神經(jīng)元的輸出值,計(jì)算的方法就是前向傳播計(jì)算。。(2)反向計(jì)算每個(gè)神經(jīng)元的誤差項(xiàng)。與RNN一樣,LSTM誤差項(xiàng)的反向傳播也包含兩個(gè)方向:一個(gè)是沿時(shí)間的反向傳播,即從當(dāng)前t時(shí)刻開(kāi)始,計(jì)算每個(gè)時(shí)刻的誤差項(xiàng);一個(gè)是將誤差項(xiàng)傳播給上一層。(3)根據(jù)相應(yīng)的誤差項(xiàng),計(jì)算每個(gè)權(quán)重的梯度。16.3.3LSTM算法實(shí)現(xiàn)LSTM算法實(shí)現(xiàn)—22

前向計(jì)算下面代碼中的calc_gate()方法實(shí)現(xiàn)了門(mén)的運(yùn)算操作,即用上一時(shí)間序列的輸入乘以權(quán)重,加上當(dāng)前時(shí)間序列的輸入乘以權(quán)重,再加上當(dāng)前門(mén)對(duì)應(yīng)的偏置。16.3.3LSTM算法實(shí)現(xiàn)LSTM算法實(shí)現(xiàn)—23

隨時(shí)間反向傳播算法下面代碼中的calc_gate()方法實(shí)現(xiàn)了門(mén)的運(yùn)算操作,即用上一時(shí)間序列的輸入乘以權(quán)重,加上當(dāng)前時(shí)間序列的輸入乘以權(quán)重,再加上當(dāng)前門(mén)對(duì)應(yīng)的偏置。16.3.4LSTM基于Keras-TensorFlow

框架實(shí)現(xiàn)股票價(jià)格的預(yù)測(cè)基于Keras-TensorFlow框架實(shí)現(xiàn)股票價(jià)格的預(yù)測(cè)—24

實(shí)驗(yàn)說(shuō)明(1)數(shù)據(jù)集來(lái)源于。該數(shù)據(jù)集包含7個(gè)屬性,分別是日期、開(kāi)盤(pán)價(jià)、最高價(jià)、最低價(jià)、收盤(pán)價(jià)、調(diào)整后的收盤(pán)價(jià),成交量,部分?jǐn)?shù)據(jù)見(jiàn)表16-2。(2)網(wǎng)絡(luò)中使用的是最近的5列數(shù)據(jù)。(3)數(shù)據(jù)被標(biāo)準(zhǔn)化為0~1之間。(4)數(shù)據(jù)集被劃分為訓(xùn)練集和測(cè)試集,二者比例為1:1。(5)LSTM網(wǎng)絡(luò)包含85個(gè)隱藏層、一個(gè)輸出層和一個(gè)輸入層,優(yōu)化器使用的是Adam,噪聲為0.1,時(shí)間步為240,迭代次數(shù)為100。(6)將訓(xùn)練集用來(lái)擬合數(shù)據(jù),用于預(yù)測(cè)測(cè)試集部分的股票價(jià)格,并和真實(shí)值進(jìn)行對(duì)比。16.3.4LSTM基于Keras-TensorFlow框架實(shí)現(xiàn)股票價(jià)格的預(yù)測(cè)基于Keras-TensorFlow框架實(shí)現(xiàn)股票價(jià)格的預(yù)測(cè)—25

實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)結(jié)果如圖16-12所示,在圖16-12的后半段中,綠色曲線代表真實(shí)值,藍(lán)色曲線代表預(yù)測(cè)值??梢钥闯觯?jīng)過(guò)訓(xùn)練后的數(shù)據(jù)值與真實(shí)值大部分?jǐn)?shù)據(jù)擬合得比較好,充分證明LSTM處理時(shí)序性問(wèn)題的優(yōu)越性。04算法總結(jié)PartFOUR—26

通過(guò)本章的學(xué)習(xí),我們了解了LSTM是針對(duì)RNN容易產(chǎn)生梯度消失和梯度爆炸而提出來(lái)的,目前常用于基于時(shí)間序列處理的場(chǎng)景,尤其是在自然語(yǔ)言處理中用得較多。目前有現(xiàn)成的框架可以方便地進(jìn)行調(diào)用,如Keras、TensorFlow等,使用戶(hù)不必了解算法底層的處理細(xì)節(jié),快速并且高效地構(gòu)建出神經(jīng)網(wǎng)絡(luò)模型。LSTM算法改善了RNN中存在的長(zhǎng)期依賴(lài)問(wèn)題,并且其表現(xiàn)通常比隱馬爾科夫模型(HMM)較好,其作為非線性模型,可作為復(fù)雜的非線性單元構(gòu)造更大型的深度神經(jīng)網(wǎng)絡(luò);但其缺點(diǎn)也很明顯,雖然RNN的梯度問(wèn)題得到了一定程度的解決,但程度還是不夠。對(duì)于超長(zhǎng)序列的處理依然很棘手,若LSTM的時(shí)間跨度

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論