Python數(shù)據(jù)挖掘算法與應(yīng)用 課件 第10章 深度學(xué)習(xí)簡(jiǎn)介_(kāi)第1頁(yè)
Python數(shù)據(jù)挖掘算法與應(yīng)用 課件 第10章 深度學(xué)習(xí)簡(jiǎn)介_(kāi)第2頁(yè)
Python數(shù)據(jù)挖掘算法與應(yīng)用 課件 第10章 深度學(xué)習(xí)簡(jiǎn)介_(kāi)第3頁(yè)
Python數(shù)據(jù)挖掘算法與應(yīng)用 課件 第10章 深度學(xué)習(xí)簡(jiǎn)介_(kāi)第4頁(yè)
Python數(shù)據(jù)挖掘算法與應(yīng)用 課件 第10章 深度學(xué)習(xí)簡(jiǎn)介_(kāi)第5頁(yè)
已閱讀5頁(yè),還剩78頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第10章

深度學(xué)習(xí)簡(jiǎn)介IntroductiontoDeepLearning深度學(xué)習(xí)概述10.2學(xué)習(xí)目標(biāo)10.110.310.4感知機(jī)前饋神經(jīng)網(wǎng)絡(luò)反向傳播算法10.5卷積神經(jīng)網(wǎng)絡(luò)10.6循環(huán)神經(jīng)網(wǎng)絡(luò)10.7生成對(duì)抗網(wǎng)絡(luò)1深度學(xué)習(xí)概述OverviewofPredictiveModelsChapter01基本概念深度學(xué)習(xí)(DL,DeepLearning)是機(jī)器學(xué)習(xí)(ML,MachineLearning)領(lǐng)域中一個(gè)新的研究方向,它被引入機(jī)器學(xué)習(xí)使其更接近于最初的目標(biāo)——人工智能(AI,ArtificialIntelligence)。[1]深度學(xué)習(xí)是學(xué)習(xí)樣本數(shù)據(jù)的內(nèi)在規(guī)律和表示層次,這些學(xué)習(xí)過(guò)程中獲得的信息對(duì)諸如文字、圖像和聲音等數(shù)據(jù)的解釋有很大的幫助。它的最終目標(biāo)是讓機(jī)器能夠像人一樣具有分析學(xué)習(xí)能力,能夠識(shí)別文字、圖像和聲音等數(shù)據(jù)。深度學(xué)習(xí)是一個(gè)復(fù)雜的機(jī)器學(xué)習(xí)算法,在語(yǔ)音和圖像識(shí)別方面取得的效果,遠(yuǎn)遠(yuǎn)超過(guò)先前相關(guān)技術(shù)。人工智能、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的關(guān)系2016年年初,由DeepMind公司研發(fā)的AlphaGo以4:1的成績(jī)擊敗了曾18次榮獲世界冠軍的圍棋選手李世石(LeeSedol)。AlphaGo聲名鵑起,一時(shí)間“人工智能”、“機(jī)器學(xué)習(xí)”、“深度神經(jīng)網(wǎng)絡(luò)”和“深度學(xué)習(xí)”的報(bào)道在媒體鋪天蓋地般的宣傳下席卷了全球,那么“人工智能”、“機(jī)器學(xué)習(xí)”、“深度神經(jīng)網(wǎng)絡(luò)”和“深度學(xué)習(xí)”之間有怎么樣的關(guān)系呢?人工智能自20世紀(jì)50年代提出以來(lái),經(jīng)過(guò)幾十年的發(fā)展,目前研究的問(wèn)題包括知識(shí)表現(xiàn)、智能搜索、推理、規(guī)劃、機(jī)器學(xué)習(xí)與知識(shí)獲取、組合調(diào)度問(wèn)題、感知問(wèn)題、模式識(shí)別、邏輯程序設(shè)計(jì)軟計(jì)算、不精確和不確定的管理等。人工智能包括機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí)主要解決的問(wèn)題為分類、回歸和關(guān)聯(lián),其中最具代表性的有支持向量機(jī)、決策樹(shù)、邏輯回歸、樸素貝葉斯等算法。人工智能、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的關(guān)系深度學(xué)習(xí)是機(jī)器學(xué)習(xí)中的重要分支,由神經(jīng)網(wǎng)絡(luò)深化而來(lái),如圖10.1所示。人工智能

知識(shí)表現(xiàn)智能搜索推理規(guī)劃?rùn)C(jī)器學(xué)習(xí)與知識(shí)獲取組合調(diào)度問(wèn)題感知問(wèn)題模式識(shí)別邏輯程序設(shè)計(jì)軟計(jì)算不精確不確定的管理機(jī)器學(xué)習(xí)

分類回歸關(guān)聯(lián)深度學(xué)習(xí)

深度神經(jīng)網(wǎng)絡(luò)深度置信網(wǎng)絡(luò)深度強(qiáng)化學(xué)習(xí)圖10.1人工智能、機(jī)器學(xué)習(xí)、深度神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)之間的關(guān)系深度學(xué)習(xí)發(fā)展歷程早期絕大多數(shù)機(jī)器學(xué)習(xí)與信號(hào)處理技術(shù)都使用淺層結(jié)構(gòu),在這些淺層結(jié)構(gòu)中一般含有一到兩層非線性特征變換,常見(jiàn)的淺層結(jié)構(gòu)包括支持向量機(jī)、高斯混合模型、條件隨機(jī)場(chǎng)、邏輯回歸等。但研究已經(jīng)證明,淺層結(jié)構(gòu)在解決大多數(shù)簡(jiǎn)單問(wèn)題或者有較多限制條件的問(wèn)題上效果明顯,但是受制于有限的建模和表示能力,在遇到一些復(fù)雜的涉及自然信號(hào)的問(wèn)題(如人類語(yǔ)言、聲音、圖像與視覺(jué)場(chǎng)景等)時(shí)就會(huì)陷入困境。受人類信息處理機(jī)制的啟發(fā),研究者們開(kāi)始模仿視覺(jué)和聽(tīng)覺(jué)等系統(tǒng)中的深度層次化結(jié)構(gòu)、從豐富的感官輸入信號(hào)中提取復(fù)雜結(jié)構(gòu)并構(gòu)建內(nèi)部表示,提出了更高效的深度學(xué)習(xí)方法。追測(cè)到20世紀(jì)40年代、美國(guó)著名的控制論學(xué)家WarrenMaculloach和邏輯學(xué)家WalterPitts在分析與總結(jié)了生物神經(jīng)元的基本特征后,設(shè)計(jì)了一種人工神經(jīng)元模型,并指出了它們運(yùn)行簡(jiǎn)單邏輯運(yùn)算的機(jī)制,這種簡(jiǎn)單的神經(jīng)元被稱為M-P神經(jīng)元。20世紀(jì)40年代末,心理學(xué)家DonaldHebbian在生物神經(jīng)可塑性機(jī)制的基礎(chǔ)上提出了一種無(wú)監(jiān)督學(xué)習(xí)規(guī)則,稱為Hebbian學(xué)習(xí),同期AlanTuring的論文中描述了一種“B型圖靈機(jī)”,之后,研究人員將Hebbian學(xué)習(xí)的思想應(yīng)用到“B型圖靈機(jī)”上。到了1958年,Rosenblatt提出可以模擬人類感知能力的神經(jīng)網(wǎng)絡(luò)模型——稱之為感知機(jī)(Perceptron),并提出了一種接近于人類學(xué)習(xí)過(guò)程的學(xué)習(xí)算法,通過(guò)迭代、試錯(cuò)使得模型逼近正解。深度學(xué)習(xí)發(fā)展歷程在這一時(shí)期,神經(jīng)網(wǎng)絡(luò)在自動(dòng)控制、模式識(shí)別等眾多應(yīng)用領(lǐng)域取得了顯著的成效,大量的神經(jīng)網(wǎng)絡(luò)計(jì)算器也在科學(xué)家們的努力中問(wèn)世,神經(jīng)網(wǎng)絡(luò)從萌芽期進(jìn)入第一個(gè)發(fā)展高潮。但是,好景不長(zhǎng),1969年Minsky和Papert指出了感知機(jī)網(wǎng)絡(luò)的兩個(gè)關(guān)鍵缺陷:第一個(gè)是感知機(jī)無(wú)法處理異或回路問(wèn)題;第二個(gè)是當(dāng)時(shí)的計(jì)算資源嚴(yán)重制約了大型神經(jīng)網(wǎng)絡(luò)所需要的計(jì)算。以上兩大缺陷使得大批研究人員對(duì)神經(jīng)網(wǎng)絡(luò)失去了信心,神經(jīng)網(wǎng)絡(luò)的研究進(jìn)入了十多年的“冰河期”。1975年Werbos博士在論文中發(fā)表了反向傳播算法,使得訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)模型成為現(xiàn)實(shí)。1983年JohnHopfield提出了一種用于聯(lián)想記憶和優(yōu)化計(jì)算的神經(jīng)網(wǎng)絡(luò)、稱為Hopfield網(wǎng)絡(luò),在旅行商問(wèn)題上獲得了突破。受此啟發(fā),GeoffreyHinton于1984年提出了一種隨機(jī)化版本的Hopfield網(wǎng)絡(luò)——玻爾茲曼機(jī)。1989年YannLecun將反向傳播算法應(yīng)用到卷積神經(jīng)網(wǎng)絡(luò),用于識(shí)別郵政手寫數(shù)字并投入真實(shí)應(yīng)用。深度學(xué)習(xí)發(fā)展歷程神經(jīng)網(wǎng)絡(luò)的研究熱潮剛起,支持向量機(jī)和其它機(jī)器學(xué)習(xí)算法卻更快地流行起來(lái),神經(jīng)網(wǎng)絡(luò)雖然構(gòu)建簡(jiǎn)單,通過(guò)增加神經(jīng)元數(shù)量、堆疊網(wǎng)絡(luò)層就可以增強(qiáng)網(wǎng)絡(luò)的能力、但是付出的代價(jià)是指數(shù)級(jí)增長(zhǎng)的計(jì)算量。20世紀(jì)末期的計(jì)算機(jī)性能和數(shù)據(jù)規(guī)模不足以支持訓(xùn)練大規(guī)模的神經(jīng)網(wǎng)絡(luò),相比之下Vapnik基于統(tǒng)計(jì)學(xué)習(xí)理論提出了支持向量機(jī)(SupportVectorMachine,SVM),通過(guò)核(kernel)技巧把非線性問(wèn)題轉(zhuǎn)換成線性問(wèn)題,其理論基礎(chǔ)清晰、證明完備,具有較好的可解釋性,得到了廣泛認(rèn)同。同時(shí),統(tǒng)計(jì)機(jī)器學(xué)習(xí)專家從理論角度懷疑神經(jīng)網(wǎng)絡(luò)的泛化能力,使得神經(jīng)網(wǎng)絡(luò)的研究又一次陷入了低潮。2006年Hinton等人提出用限制玻爾茲曼機(jī)(RestrietedBoltzamannMachine)通過(guò)非監(jiān)督學(xué)習(xí)的方式建模神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),再由反向傳播算法學(xué)習(xí)網(wǎng)絡(luò)內(nèi)部的參數(shù),使用逐層預(yù)訓(xùn)練的方法提取數(shù)據(jù)的高維特征。逐層預(yù)訓(xùn)練的技巧后來(lái)被推廣到不同的神經(jīng)網(wǎng)絡(luò)架構(gòu)上,極大地提高了神經(jīng)網(wǎng)絡(luò)的泛化能力。而隨著計(jì)算機(jī)硬件能力的提高,特別是圖形處理器(GraphiesProcessingUnit,GPU)強(qiáng)大的并行計(jì)算能力非常適合神經(jīng)網(wǎng)絡(luò)運(yùn)行時(shí)的矩陣運(yùn)算,計(jì)算機(jī)硬件平臺(tái)可以為更多層的神經(jīng)網(wǎng)絡(luò)提供足夠的算力支持,使得神經(jīng)網(wǎng)絡(luò)的層數(shù)不斷加深,因此以Hinton為代表的研究人員將不斷變深的神經(jīng)網(wǎng)絡(luò)重新定義為深度學(xué)習(xí)。深度學(xué)習(xí)發(fā)展歷程2012年,Hinton的學(xué)生AlexKrizhevsky在計(jì)算機(jī)視覺(jué)領(lǐng)域聞名的ImageNet分類比賽中脫穎而出,以高出第二名10個(gè)百分點(diǎn)的成績(jī)震驚四座。而發(fā)展到現(xiàn)在,隨著深度神經(jīng)網(wǎng)絡(luò)不斷加深,能力不斷加強(qiáng),其對(duì)照片的分類能力已經(jīng)超過(guò)人類,2010-2016年的ImageNet分類錯(cuò)誤率從0.28%降到了0.03%;物體識(shí)別的平均準(zhǔn)確率從0.23%上升到了0.66%。深度學(xué)習(xí)方法不僅在計(jì)算機(jī)領(lǐng)域大放異彩,也在無(wú)人駕駛、自然語(yǔ)言處理、語(yǔ)音識(shí)別與金融大數(shù)據(jù)分析方面都有廣泛應(yīng)用。2感知機(jī)RegressionAnalysisPredictionModelChapter02感知機(jī)的起源感知機(jī)算法是由美國(guó)科學(xué)家FrankRosenblatt在1957年提出的,它是一種十分簡(jiǎn)單易實(shí)現(xiàn)的機(jī)器學(xué)習(xí)方法,但它也是很多知名方法的起源,由此揭開(kāi)了人工神經(jīng)網(wǎng)絡(luò)研究的序幕。感知機(jī)接收多個(gè)輸入信號(hào),輸出一個(gè)信號(hào),如圖10.2所示。x2x1x3yw1w2w3圖10.2接收三個(gè)輸入信號(hào)的感知機(jī)感知機(jī)的起源圖10.2中感知機(jī)接收三個(gè)信號(hào),其結(jié)構(gòu)非常簡(jiǎn)單,x1、x2、x3代表人們選擇的輸入信號(hào)(Input),y為輸出信號(hào)(Output),w1、w2、w3為感知機(jī)內(nèi)部的參數(shù),稱為權(quán)重(Weight),圖中的○通常稱為“神經(jīng)元”或者“節(jié)點(diǎn)”。輸入信號(hào)與權(quán)重相乘后求和,與一個(gè)閾值θ比較輸出0或1,用數(shù)學(xué)式來(lái)表達(dá)為:(10-1)感知機(jī)的多個(gè)輸入信號(hào)都有各自的權(quán)重,權(quán)重越大,對(duì)應(yīng)信號(hào)的重要性就越高。為了表達(dá)簡(jiǎn)潔,我們用向量的形式重寫上式,其中w和x都是向量,向量中的元素分別代表權(quán)重與輸入,并使用偏置(Bias)代表閾值,令b=-θ,則有:(10-2)感知機(jī)的起源當(dāng)輸出1時(shí),稱此神經(jīng)元被激活。其中權(quán)重w是體現(xiàn)輸入信號(hào)重要性的參數(shù),而偏置b是調(diào)整神經(jīng)元被激活容易程度的參數(shù),此處我們稱w為權(quán)重,稱b為偏置,但參照上下文有時(shí)也會(huì)將w、b統(tǒng)稱為權(quán)重。用感知機(jī)解決一個(gè)簡(jiǎn)單的問(wèn)題:使用感知機(jī)來(lái)實(shí)現(xiàn)含有兩個(gè)輸入的與門(ANDgate)。由與門的真值表y1(表10.1)可以知道,與門僅在兩個(gè)輸入為1時(shí)輸出1,否則輸出0。表10.1二輸入與門、與非門、或門真值表x1x2y1y2y3y4000100010111100111111010感知機(jī)的起源使用感知機(jī)來(lái)表示這個(gè)與門y1需要做的就是設(shè)置感知機(jī)中的參數(shù),設(shè)置參數(shù)w=[1,1]和b=-1,可以驗(yàn)證,感知機(jī)滿足表10.1第3欄y1的條件;設(shè)置參數(shù)w=[0.5,0.5]和b=―0.6也可以滿足表10.1第3欄y1的條件。實(shí)際上,滿足表10.1第3欄y1的條件的參數(shù)有無(wú)數(shù)多個(gè)。那么對(duì)于含有兩個(gè)輸入的與非門(NANDgate)呢?對(duì)照與非門的真值表y2,設(shè)置參數(shù)w=[-0.2,-0.2],b=0.3可以讓感知機(jī)表達(dá)與非門y2;設(shè)置參數(shù)w=[0.4,0.5],b=-0.3可以讓感知機(jī)表達(dá)或門(ORgate)y3,真值表如表10.1第四欄y2和第五欄y3所示。感知機(jī)的起源如上,我們已經(jīng)使用感知機(jī)表達(dá)了與門、與非門、或門,而其中重要的一點(diǎn)是我們使用的感知機(jī)的形式是相同的,只有參數(shù)的權(quán)重與閾值不同。而這里決定感知機(jī)參數(shù)的不是計(jì)算機(jī)而是人,對(duì)權(quán)重和偏置賦予了不同值而讓感知機(jī)實(shí)現(xiàn)了不同的功能??雌饋?lái)感知機(jī)只不過(guò)是一種新的邏輯門,沒(méi)有特別之處。但是,我們可以設(shè)計(jì)學(xué)習(xí)算法(LearningAlgorithm),使得計(jì)算機(jī)能夠自動(dòng)地調(diào)整感知的權(quán)重和偏移,而不需要人的直接干預(yù)。這些學(xué)習(xí)算法使得我們能夠用一種根本上區(qū)別于傳統(tǒng)邏輯門的方法使用感知機(jī),不需要手工設(shè)置參數(shù),也無(wú)須顯式地排布邏輯門組成電路,取而代之地,可以通過(guò)簡(jiǎn)單的學(xué)習(xí)來(lái)解決問(wèn)題。感知機(jī)的局限性

感知機(jī)所面臨的問(wèn)題主要分為兩個(gè)方面,一方面是這類算法只能處理線性可分的問(wèn)題,即它只能表示由一條直線分割的空間,對(duì)于線性不可分的問(wèn)題,簡(jiǎn)單的單層感知機(jī)沒(méi)有可行解,一個(gè)代表性的例子就是感知機(jī)的異或門(XORGate)問(wèn)題,如表10.1第六欄y4所示。我們已經(jīng)使用感知機(jī)來(lái)表示與門、與非門和或門,但是對(duì)于這種邏輯電路門,找不出一組合適的參數(shù)w和b來(lái)滿足表10.1第六欄y4的條件。將或門和異或門的響應(yīng)可視化,如圖10.3所示。圖10.3感知機(jī)局限性示意圖-0.50-0.500.000.000.501.001.500.501.001.50-0.50-0.500.000.000.501.001.500.501.001.50ORgateXORgate感知機(jī)的局限性

對(duì)于圖10.3中左側(cè)的或門,對(duì)應(yīng)的感知機(jī)表示如下:上式所示的感知機(jī)會(huì)生成由直線x1+x2-0.5=0分割開(kāi)的兩個(gè)空間,其中一個(gè)空間輸出1,另一個(gè)空間輸出0,或門在(x1,x2)=(0.0)處輸出0,在(x1,x2)處為(0,1)、(1,0)和(1,1)處輸出1,而直線x1+x2-0.5=0正確地分割開(kāi)了這四個(gè)點(diǎn)。而對(duì)于異或門,想用一條直線將不同標(biāo)記的點(diǎn)分開(kāi)是不可能做到的。感知機(jī)需要人工選擇特定的特征作為輸入,這就意味著很多的問(wèn)題被轉(zhuǎn)移到了如何提取特征,使得特征的線性關(guān)系得以解決,對(duì)于這樣的特征,還是需要人來(lái)提取,感知機(jī)愛(ài)莫能助,這就極大地限制了感知機(jī)的應(yīng)用,而對(duì)于研究者而言,最緊迫的任務(wù)是如何自動(dòng)提取這些復(fù)雜的特征,然而當(dāng)研究者找到自動(dòng)提取特征的方法時(shí),感知機(jī)已經(jīng)陷入了寒冬二十余年。1975年,Werbos博士在其論文中證明將多層感知機(jī)堆疊成神經(jīng)網(wǎng)絡(luò)、并利用反向傳播算法訓(xùn)練神經(jīng)網(wǎng)絡(luò)自動(dòng)學(xué)習(xí)參數(shù)、解決了“異或門”等問(wèn)題,圖10.4給出了多層感知機(jī)對(duì)于“異或門“的可行解。感知機(jī)的局限性

對(duì)于圖10.3中左側(cè)的或門,對(duì)應(yīng)的感知機(jī)表示如下:上式所示的感知機(jī)會(huì)生成由直線x1+x2-0.5=0分割開(kāi)的兩個(gè)空間,其中一個(gè)空間輸出1,另一個(gè)空間輸出0,或門在(x1,x2)=(0.0)處輸出0,在(x1,x2)處為(0,1)、(1,0)和(1,1)處輸出1,而直線x1+x2-0.5=0正確地分割開(kāi)了這四個(gè)點(diǎn)。而對(duì)于異或門,想用一條直線將不同標(biāo)記的點(diǎn)分開(kāi)是不可能做到的。感知機(jī)需要人工選擇特定的特征作為輸入,這就意味著很多的問(wèn)題被轉(zhuǎn)移到了如何提取特征,使得特征的線性關(guān)系得以解決,對(duì)于這樣的特征,還是需要人來(lái)提取,感知機(jī)愛(ài)莫能助,這就極大地限制了感知機(jī)的應(yīng)用,而對(duì)于研究者而言,最緊迫的任務(wù)是如何自動(dòng)提取這些復(fù)雜的特征,然而當(dāng)研究者找到自動(dòng)提取特征的方法時(shí),感知機(jī)已經(jīng)陷入了寒冬二十余年。1975年,Werbos博士在其論文中證明將多層感知機(jī)堆疊成神經(jīng)網(wǎng)絡(luò)、并利用反向傳播算法訓(xùn)練神經(jīng)網(wǎng)絡(luò)自動(dòng)學(xué)習(xí)參數(shù)、解決了“異或門”等問(wèn)題,圖10.4給出了多層感知機(jī)對(duì)于“異或門“的可行解。感知機(jī)的局限性

圖10.4多層感知機(jī)y1y3y2x1x2使用三個(gè)簡(jiǎn)單感知機(jī)y1、y2、y3,組成一個(gè)兩層的感知機(jī),可以滿足表10.1中的異或門y4響應(yīng)條件,感知機(jī)y1、y2、y3的形式如下面3個(gè)式子所示。不難驗(yàn)證這個(gè)兩層的感知機(jī)對(duì)輸入信號(hào)的響應(yīng)與異或門一致。3前饋神經(jīng)網(wǎng)絡(luò)OverviewofPredictiveModelsChapter03前饋神經(jīng)網(wǎng)絡(luò)

解決感知機(jī)困境的方法就是將感知機(jī)堆疊,進(jìn)而形成多層神經(jīng)網(wǎng)絡(luò),研究者們也稱為深度神經(jīng)網(wǎng)絡(luò)(DeepNeuralNetwork,DNN)。神經(jīng)元

神經(jīng)元(Neuron)是構(gòu)成神經(jīng)網(wǎng)絡(luò)的基本單元,它主要是模擬生物神經(jīng)元的結(jié)構(gòu)和特性,接受一組輸入信號(hào)并產(chǎn)生輸出?,F(xiàn)代人工神經(jīng)元模型由連接、求和節(jié)點(diǎn)和激活函數(shù)組起,如圖10.5所示。Σf()x1x2xn...圖10.5人工神經(jīng)元結(jié)構(gòu)示意圖圖10.5中Σ表示求和,f()表示激活函數(shù)。神經(jīng)元

神經(jīng)元接受n個(gè)輸入信號(hào)x1,x2,…,xn,用向量x=[x1,x2,…,xn]表示,神經(jīng)元中的加權(quán)和稱為凈輸入(NetInput)。(10-3)回顧一下感知機(jī)的表達(dá)式:并將其形式改寫成:y=f(x),在引入了函數(shù)f(x)后,感知機(jī)就可以寫成神經(jīng)元的形式,輸入信號(hào)會(huì)被f(x)轉(zhuǎn)換,轉(zhuǎn)換后的值就是輸出y。這種將輸入信號(hào)的總和轉(zhuǎn)換為輸出信號(hào)的函數(shù)稱為激活函數(shù)(ActivationFunction)。f(x)表示的激活函數(shù)以閾值為界,一旦輸入超過(guò)閥值就切換輸出,這樣的函數(shù)稱為階躍函數(shù)(StepFunction),可以說(shuō)感知機(jī)是使用階躍函數(shù)作為激活函數(shù)。實(shí)際上,當(dāng)我們將階躍函數(shù)換作其它的激活函數(shù)時(shí),就開(kāi)始進(jìn)入神經(jīng)網(wǎng)絡(luò)的世界了,那么為什么需要使用激活函數(shù)呢?又有哪些激活函數(shù)可供使用呢?神經(jīng)元

首先討論第一個(gè)問(wèn)題,之前介紹的感知機(jī)無(wú)法解決線性不可分的問(wèn)題,是因?yàn)檫@類線性模型的表達(dá)力不夠,從輸入到加權(quán)求和都是線性運(yùn)算,而激活函數(shù)一般是非線性的,為神經(jīng)網(wǎng)絡(luò)引入了非線性因素,這樣才能逼近更復(fù)雜的數(shù)據(jù)分布,激活函數(shù)也限制了輸出的范圍,控制該神經(jīng)元是否激活。激活函數(shù)對(duì)于神經(jīng)網(wǎng)絡(luò)有非常重要的意義,它提升非線性表達(dá)能力,緩解梯度消失問(wèn)題,將特征圖映射到新的特征空間以加速網(wǎng)絡(luò)收斂等。不同的激活函數(shù)對(duì)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練與預(yù)測(cè)都有不同的影響,接下來(lái)討論第二個(gè)問(wèn)題,詳細(xì)介紹神經(jīng)網(wǎng)絡(luò)中經(jīng)常使用的激活函數(shù)及它們的特點(diǎn)。神經(jīng)元1.sigmoidsigmoid函數(shù)是一個(gè)在生物學(xué)中常見(jiàn)的S型函數(shù),也稱為S型生長(zhǎng)曲線,在信息學(xué)科中也稱為L(zhǎng)ogistic函數(shù)。sigmoid函數(shù)可以使輸出平滑面連續(xù)地限制在0~1,在0附近表現(xiàn)為近似線性函數(shù),而遠(yuǎn)離0的區(qū)域表現(xiàn)出非線性,輸入越小,越接近于0;輸入越大,越接近于1。sigmoid函數(shù)的數(shù)學(xué)表達(dá)式為:(10-4)其函數(shù)圖像如圖10.6所示。圖10.6sigmoid函數(shù)與感知機(jī)使用的階躍激活函數(shù)相比,sigmoid函數(shù)是連續(xù)可導(dǎo)的,其數(shù)學(xué)性質(zhì)更好。sigmoid函數(shù)的導(dǎo)數(shù)如下:

1-1xy0神經(jīng)元1.sigmoidsigmoid函數(shù)的導(dǎo)數(shù)可直接用函數(shù)的輸出計(jì)算,簡(jiǎn)單高效,但sigmoid函數(shù)的輸出恒大于0。非零中心化的輸出會(huì)使得其后一層的神經(jīng)元的輸入發(fā)生偏置偏移,可能導(dǎo)致梯度下降的收斂速度變慢。另一個(gè)缺點(diǎn)是sigmoid函數(shù)導(dǎo)致的梯度消失問(wèn)題,由上面sigmoid函數(shù)的導(dǎo)數(shù)表達(dá)式可知在遠(yuǎn)離0的兩端,導(dǎo)數(shù)值趨于0,梯度也趨于0,此時(shí)神經(jīng)元的權(quán)重?zé)o法再更新,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練變得困難。

神經(jīng)元2.tanhtanh函數(shù)繼承自sigmoid函數(shù),改進(jìn)了sigmoid變化過(guò)于平緩的問(wèn)題,它將輸入平滑地限制在-1~1的范圍內(nèi)。tanh函數(shù)的數(shù)學(xué)表達(dá)式為:

即(10-5)其函數(shù)圖像如圖10.7所示。圖10.7tanh函數(shù)tanh函數(shù)的導(dǎo)數(shù)為:對(duì)比tanh函數(shù)和sigmoid函數(shù)圖像以及式(10-5)可以看出,其實(shí)tanh函數(shù)就是sigmoid函數(shù)的縮放平移版。tanh函數(shù)的輸出是以零為中心的,解決了sigmoid函數(shù)的偏置偏移問(wèn)題,而且tanh在線性區(qū)的樣度更大,能加快神經(jīng)網(wǎng)絡(luò)的收斂,但是在tanh函數(shù)兩端的梯度也趨于零,梯度消失問(wèn)題依然沒(méi)有解決。還有其它的一些激活函數(shù),如rectifier函數(shù)等,這里不再贅述。

-11xy0前饋神經(jīng)網(wǎng)絡(luò)單一神經(jīng)元的功能是有限的,需要很多神經(jīng)元連接在一起傳遞信息來(lái)協(xié)作完成復(fù)雜的功能,這就是神經(jīng)網(wǎng)絡(luò)。按神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)可以分為前饋神經(jīng)網(wǎng)絡(luò)(FeedforwardNeuralNetwork)、反饋神經(jīng)網(wǎng)絡(luò)(RecurrentNeuralNetwork)和圖網(wǎng)絡(luò)(GraphNeuralNetwork),本部分重點(diǎn)討論前饋神經(jīng)網(wǎng)絡(luò)。在前饋神經(jīng)網(wǎng)絡(luò)中,神經(jīng)元按信息先后進(jìn)行分組,每組構(gòu)成神經(jīng)網(wǎng)絡(luò)的一層,下一層的接入僅來(lái)自上一層的輸入,不存在回環(huán),信息總是向前傳播,沒(méi)有反向回饋,網(wǎng)絡(luò)結(jié)構(gòu)可以用一個(gè)有向無(wú)環(huán)圖來(lái)表示。如圖10.8所示。圖10.8前饋神經(jīng)網(wǎng)絡(luò)示意圖圖10.8網(wǎng)絡(luò)中最左邊的一層被稱作輸入層,其中的神經(jīng)元被稱為輸入神經(jīng)元。最右邊的一層是輸出層,包含的神經(jīng)元被稱為輸出神經(jīng)元。本圖中,輸入層有2個(gè)神經(jīng)元x1,x2,輸出層有1個(gè)神經(jīng)元y。網(wǎng)絡(luò)中處于輸入層與輸出層之間的層被稱作隱層,一個(gè)網(wǎng)絡(luò)中往往有多個(gè)隱層。

x2x1a11a12a13yw1w2w3w4w5w6w11w12w13前饋神經(jīng)網(wǎng)絡(luò)例10.1圖10.8是一個(gè)簡(jiǎn)單的前饋神經(jīng)網(wǎng)絡(luò)圖,該圖中有3層結(jié)構(gòu),第一層為輸入層,第二層為隱藏層,第三層則為輸出層,假設(shè)圖中的x1=0.7、x2=0.9、w1=0.2、w2=0.3、w3=0.4、w4=0.3、w5=-0.5、w6=0.2、w11=0.6、w12=0.1、

w13=-0.2為連接邊的權(quán)值。下面利用該圖說(shuō)明前饋神經(jīng)網(wǎng)絡(luò)的計(jì)算過(guò)程。(1)利用輸入層計(jì)算隱藏層的權(quán)重(2)利用隱藏層計(jì)算輸出層的權(quán)值由于最終y的值大于0,因此y的結(jié)果為正類。觀察上圖,輸入為x1和x2,將輸入轉(zhuǎn)化為矩陣表示X=[x1,x2],權(quán)值W為如下所示,隱藏層的a表示如下所示。

,a=[a11a12a22],X=[x1x2],由輸入層計(jì)算的隱藏層又進(jìn)一步計(jì)算的輸出層轉(zhuǎn)化為矩陣表示為:

前饋神經(jīng)網(wǎng)絡(luò)上述的前饋神經(jīng)網(wǎng)絡(luò)只是簡(jiǎn)單的實(shí)現(xiàn)了神經(jīng)網(wǎng)絡(luò)的計(jì)算過(guò)程(網(wǎng)絡(luò)中的權(quán)值都是預(yù)先設(shè)置好的),而神經(jīng)網(wǎng)絡(luò)的優(yōu)化過(guò)程就是優(yōu)化神經(jīng)元中參數(shù)取值的過(guò)程。

訓(xùn)練與預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)訓(xùn)練其實(shí)就是從數(shù)據(jù)中學(xué)習(xí),通過(guò)不斷地修改網(wǎng)絡(luò)中所有權(quán)值W和偏置b,使得神經(jīng)網(wǎng)絡(luò)的輸出盡可能地逼近真實(shí)模型的輸出。在神經(jīng)網(wǎng)絡(luò)中,衡量網(wǎng)絡(luò)預(yù)測(cè)結(jié)果-F(x)與真實(shí)值y之間差別的指標(biāo)稱為損失函數(shù)(LossFunction),損失函數(shù)值越小,表示神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)結(jié)果越接近真實(shí)值。大多數(shù)情況下,對(duì)權(quán)重W和偏置b做出的微小變動(dòng)并不會(huì)使得神經(jīng)網(wǎng)絡(luò)輸出所期望的結(jié)果,這導(dǎo)致我們很難去刻畫如何優(yōu)化權(quán)重和偏置。因此,需要代價(jià)函數(shù)來(lái)更好地指導(dǎo)我們?nèi)绾稳ジ淖儥?quán)重和偏置以達(dá)到更好的效果。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練就是調(diào)整權(quán)重W和偏置b使得損失函數(shù)值盡可能的小,在訓(xùn)練過(guò)程中,將損失函數(shù)值逐漸收斂,當(dāng)其小于設(shè)定閾值時(shí)訓(xùn)練停止,得到一組使得神經(jīng)網(wǎng)絡(luò)擬合真實(shí)模型的權(quán)重W和偏置b。具體來(lái)說(shuō),對(duì)于一個(gè)神經(jīng)網(wǎng)絡(luò)F,其權(quán)重W和偏置b(用隨機(jī)值來(lái)初始化),給定一個(gè)樣本(x,y),將x輸入到神經(jīng)網(wǎng)絡(luò)F,經(jīng)過(guò)一次前饋網(wǎng)絡(luò)計(jì)算出預(yù)測(cè)結(jié)果=F(x)。計(jì)算損失值loss=L(,y),要使得神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)結(jié)果盡可能的接近真實(shí)值,就要讓損失值盡可能小,于是神經(jīng)網(wǎng)絡(luò)的訓(xùn)練問(wèn)題演化為一個(gè)優(yōu)化問(wèn)題,如下式:(10-6)神經(jīng)網(wǎng)絡(luò)需要解決的問(wèn)題主要為分類和回歸問(wèn)題。分類是輸出變量為有限個(gè)離散變量的預(yù)測(cè)問(wèn)題,目的是尋找決策邊界。例如,判斷手寫郵編是不是6,判斷結(jié)果“是”與“不是”,這是個(gè)二分類問(wèn)題;判斷一個(gè)動(dòng)物是貓、是狗還是其他,這是個(gè)多分類問(wèn)題?;貧w問(wèn)題是輸入變量與輸出變量均為連續(xù)變量的預(yù)測(cè)問(wèn)題,目的是找到最優(yōu)擬合方法。例如預(yù)測(cè)明天的股市指數(shù)就是個(gè)大家都希望結(jié)果能夠準(zhǔn)確的回歸問(wèn)題。

訓(xùn)練與預(yù)測(cè)1.損失函數(shù)神經(jīng)網(wǎng)絡(luò)進(jìn)行分類和回歸任務(wù)時(shí)會(huì)使用不同的損失函數(shù),下面列出一些常用的分類損失和回歸損失。(1)分類損失函數(shù)Logistic損失:

(10-7)負(fù)對(duì)數(shù)似然損失:

(10-8)交叉熵?fù)p失:

(10-9)Logistic損失用于解決每個(gè)類別的二分類問(wèn)題,為了方便數(shù)據(jù)集把最大似然轉(zhuǎn)化為負(fù)對(duì)數(shù)似然,而得到負(fù)對(duì)數(shù)似然損失,交叉熵?fù)p失是從兩個(gè)類別擴(kuò)展到M個(gè)類別,交叉熵?fù)p失在二分類時(shí)應(yīng)當(dāng)是負(fù)對(duì)數(shù)似然損失。

訓(xùn)練與預(yù)測(cè)1.損失函數(shù)(2)回歸損失函數(shù)均方誤差(L2損失):

(10-10)平均絕對(duì)誤差(L1損失):

(10-11)均方對(duì)數(shù)差損失:

(10-12)Huber損失:

(10-13)L2損失是使用最廣泛的損失函數(shù),在優(yōu)化過(guò)程中更為穩(wěn)定和準(zhǔn)確,但是對(duì)于局外點(diǎn)敏感。L1損失會(huì)比較有效地懲罰局外點(diǎn),但它的導(dǎo)數(shù)不連續(xù)使得尋找最優(yōu)解的過(guò)程低效。Huber損失由L2損失與L1損失合成,當(dāng)δ趨于0時(shí)退化成了L1損失,當(dāng)δ趨于無(wú)窮時(shí)則退化為L(zhǎng)2損失。δ決定了模型處理局外點(diǎn)的行為,當(dāng)殘差大于δ時(shí)使用L1損失,很小時(shí)則使用更為合適的L2損失來(lái)進(jìn)行優(yōu)化。Huber損失函數(shù)克服了Ll損失和L2損失的缺點(diǎn),不僅可以保持損失函數(shù)具有連續(xù)的導(dǎo)數(shù),同時(shí)可以利用L2損失梯度隨誤差減小的特性來(lái)得到更精確的最小值,也對(duì)局外點(diǎn)具有更好的魯棒性。但Huber損失函數(shù)的良好表現(xiàn)得益于精心訓(xùn)練的超參數(shù)δ。

訓(xùn)練與預(yù)測(cè)2.參數(shù)學(xué)習(xí)參數(shù)學(xué)習(xí)是神經(jīng)網(wǎng)絡(luò)的關(guān)鍵,神經(jīng)網(wǎng)絡(luò)使用參數(shù)學(xué)習(xí)算法把從數(shù)據(jù)中學(xué)習(xí)到的“知識(shí)”保存在參數(shù)里面。對(duì)于訓(xùn)練集中的每一個(gè)樣本(x,y)計(jì)算其損失(如均方誤差損失),那么在整個(gè)訓(xùn)練集上的損失為:

,其中,是標(biāo)簽y對(duì)應(yīng)的向量表示,有了目標(biāo)函數(shù)和訓(xùn)練樣本,可以通過(guò)梯度下降算法來(lái)學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的參數(shù)。使用梯度下降法求神經(jīng)網(wǎng)絡(luò)的參數(shù),需要計(jì)算損失函數(shù)對(duì)參數(shù)的偏導(dǎo)數(shù),直接使用鏈?zhǔn)椒▽?duì)每個(gè)參數(shù)逐一求偏導(dǎo)效率很低,計(jì)算量大,而在20世紀(jì)90年代計(jì)算機(jī)能力還不足以為龐大的神經(jīng)網(wǎng)絡(luò)提供足夠的算力支持,這也是當(dāng)時(shí)神經(jīng)網(wǎng)絡(luò)陷入低潮的原因之一。

4反向傳播算法OverviewofPredictiveModelsChapter04反向傳播算法

反向傳播算法(BackpropagationLearning,BP算法)在1970年代由Werbos博士提出,但是直到1986年DavidRumelhart、GeoffreyHinton和RonaldWilliams發(fā)表的論文中才說(shuō)明反向傳播算法能更快地計(jì)算神經(jīng)網(wǎng)絡(luò)中各層參數(shù)的梯度,解決了參數(shù)逐一求偏導(dǎo)效率低下的問(wèn)題,使得神經(jīng)網(wǎng)絡(luò)能應(yīng)用到一些原來(lái)不能解決的問(wèn)題上。

反向傳播學(xué)習(xí)算法

反向傳播學(xué)習(xí)是前饋神經(jīng)網(wǎng)絡(luò)的有指導(dǎo)學(xué)習(xí)方法,和所有的有指導(dǎo)學(xué)習(xí)過(guò)程一樣,它包括訓(xùn)練和檢驗(yàn)兩個(gè)階段。在訓(xùn)練階段中,訓(xùn)練實(shí)例重復(fù)通過(guò)網(wǎng)絡(luò)。對(duì)于每個(gè)訓(xùn)練實(shí)例,計(jì)算網(wǎng)絡(luò)輸出值,根據(jù)輸出值修改各個(gè)權(quán)值。這個(gè)權(quán)值的修改方向是從輸出層開(kāi)始,反向移動(dòng)到隱層,改變權(quán)值的目的是訓(xùn)練集的最小化錯(cuò)誤率。訓(xùn)練過(guò)程是個(gè)迭代過(guò)程,網(wǎng)絡(luò)訓(xùn)練直到滿足一個(gè)特定的終止條件為止。終止條件可以是網(wǎng)絡(luò)收斂到最小的錯(cuò)誤值,也可以是一個(gè)訓(xùn)練時(shí)間標(biāo)準(zhǔn),也可以是最大迭代次數(shù)。反向傳播學(xué)習(xí)算法

,例10.2利用圖10.9所示的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和輸入實(shí)例說(shuō)明反向傳播學(xué)習(xí)方法。x3x1a1a2a3ow11w12w13w21w31w32w1ow2ow3ox2w22w23w33圖10.9神經(jīng)網(wǎng)絡(luò)示意圖輸入向量:[0.8,1.0,0.4]。目標(biāo):描述使用BP學(xué)習(xí)算法訓(xùn)練前饋神經(jīng)網(wǎng)絡(luò)的過(guò)程(一次迭代過(guò)程)。方法:使用圖10.9所示的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)、輸入向量,表10.2中的初始權(quán)值和式(10-4)的sigmoid函數(shù)。假設(shè)與圖10.9所示的輸入向量相關(guān)的目標(biāo)輸出值為0.67,該輸入的計(jì)算輸出與目標(biāo)值之間存在誤差。假設(shè)該誤差與輸出節(jié)點(diǎn)相關(guān)的所有網(wǎng)絡(luò)連接都有關(guān),故需從輸出層開(kāi)始到輸入層,逐層修正輸出層與隱層、隱層之間和隱層與輸入層之間的權(quán)值。即將節(jié)點(diǎn)o的輸出誤差反向傳播到網(wǎng)絡(luò)中,修改所有12個(gè)相關(guān)的網(wǎng)絡(luò)權(quán)重值,每個(gè)連接權(quán)重的修改量使用公式計(jì)算得出。該公式利用節(jié)點(diǎn)o的輸出誤差、各個(gè)節(jié)點(diǎn)的輸出值和sigmoid函數(shù)的導(dǎo)數(shù)推導(dǎo)出,且公式具備平滑實(shí)際誤差和避免對(duì)訓(xùn)練實(shí)例矯枉過(guò)正的能力。反向傳播學(xué)習(xí)算法

表10.2圖10.9所示的神經(jīng)網(wǎng)絡(luò)的初始權(quán)值步驟1:計(jì)算節(jié)點(diǎn)a1、a2、a3和o的輸入和輸出值。(1)節(jié)點(diǎn)a1的輸入=0.1×0.8+0.2×1.0+0.3×0.4=0.4(2)節(jié)點(diǎn)a1的輸出=f(0.4)=0.599(3)節(jié)點(diǎn)a2的輸入=(-0.2)×0.8+(-0.1)×1.0+0.1×0.4=-0.22(4)節(jié)點(diǎn)a2的輸出=f(-0.22)=0.445(5)節(jié)點(diǎn)a3的輸入=0.1×0.8+(-0.1)×1.0+0.2×0.4=0.06(6)節(jié)點(diǎn)a3的輸出=f(0.06)=0.515(7)節(jié)點(diǎn)o的輸入=0.3×0.599+0.5×0.445+0.4×0.515=0.608(8)節(jié)點(diǎn)o的輸出=f(0.608)=0.648

標(biāo)記w11w21w31w12w22w32w13w23w33w1ow2ow3o權(quán)值0.100.200.30-0.20-0.100.100.10-0.100.200.30.50.4反向傳播學(xué)習(xí)算法步驟2:計(jì)算輸出層和隱層的誤差,公式如式(10-14)、式(10-15)和式(10-16)所示。Loss(o)=(y-oy)[f’(xo)](10-14)其中y為目標(biāo)輸出oy即節(jié)點(diǎn)o的計(jì)算輸出;(y-oy)為實(shí)際輸出誤差;f’(xo)為sigmoid函數(shù)的一階導(dǎo)數(shù):xo為sigmoid函數(shù)在節(jié)點(diǎn)o處的輸入。式(10-14)表示實(shí)際輸出誤差與sigmoid函數(shù)的一階導(dǎo)數(shù)相乘,sigmoid函數(shù)在xo處的導(dǎo)數(shù)可簡(jiǎn)單地計(jì)算為oy(1-oy)。則有:Loss(o)=(y-oy)oy(1-oy)(10-15)隱層節(jié)點(diǎn)的輸出誤差的一般公式為:(10-16)其中l(wèi)oss(o)表示節(jié)點(diǎn)o的計(jì)算輸出誤差;wio表示節(jié)點(diǎn)ai與輸出節(jié)點(diǎn)o之間的連接權(quán)重;表示sigmoid函數(shù)的一階導(dǎo)數(shù);xi表示節(jié)點(diǎn)ai處的sigmoid函數(shù)的輸入。依據(jù)式(10-15),。再由題目假設(shè)目標(biāo)輸出值為0.67,從而有:loss(o)=(0.67-0.648)×0.648×(1-0.648)=0.005

loss(a1)=0.005×0.3×0.599×(1-0.599)=0.00036loss(a2)=0.005×0.5×0.445×(1-0.445)=0.000617

loss(a3)=0.005×0.4×0.515×(1-0.515)=0.0005

反向傳播學(xué)習(xí)算法步驟3:更新12個(gè)權(quán)重值。反向傳播過(guò)程的最后一步是使用梯度下降法(Delta法則)進(jìn)行權(quán)重校正,更新與輸出節(jié)點(diǎn)連接相關(guān)的權(quán)重,目標(biāo)是最小化平方誤差和,該誤差被定義為計(jì)算輸出和實(shí)際輸出之間的歐式距離。權(quán)重校正公式如下:(10-17)其中Δwio為加到當(dāng)前權(quán)值上的增量值,Δwio的計(jì)算公式為:o其中:r為學(xué)習(xí)率參數(shù),1>r>0,本例中取r=0.3;loss(o)為節(jié)點(diǎn)o的計(jì)算誤差;Oi為節(jié)點(diǎn)ai的輸出值。Δw1o=0.3×0.005×0.599=0.0009,w1o的校正值=0.3+0.0009=0.3009Δw2o=0.3×0.005×0.445=0.0007,w2o的校正值=0.5+0.0007=0.5007Δw3o=0.3×0.005×0.515=0.0007,w3o的校正值=0.4+0.0007=0.40007Δw11=0.3×0.00036×0.8=0.0000864,w11的校正值=0.1+0.0000864=0.1000864Δw21=0.3×0.00036×1.0=0.000108,w21的校正值=0.2+0.000108=0.200108Δw31=0.3×0.00036×0.4=0.0000432,w31的校正值=0.3+0.0000432=0.3000432

反向傳播學(xué)習(xí)算法Δw12=0.3×0.000617×0.8=0.000148,w12的校正值=-0.2+0.000148=-0.19985Δw22=0.3×0.000617×1.0=0.000185,w22的校正值=-0.1+0.000185=-0.09982Δw32=0.3×0.000617×0.4=0.000074,w32的校正值=0.1+0.000074=0.100074Δw13=0.3×0.0005×0.8=0.00012,w13的校正值=0.1+0.00012=0.10012Δw23=0.3×0.0005×1.0=0.00015,w23的校正值=-0.1+0.00015=-0.09985Δw33=0.3×0.0005×0.4=0.00006,w33的校正值=0.2+0.00006=0.20006至此,一次迭代過(guò)程結(jié)束,校正的所有權(quán)值如表10.3所示。表10.3第一次迭代后圖10.9所示的神經(jīng)網(wǎng)絡(luò)的權(quán)值

w11w21w31w12w22w320.10008640.2001080.3000432-0.19985-0.099820.100074

w13w23w33w1ow2ow3o0.10012-0.099850.200060.30090.50070.40007反向傳播學(xué)習(xí)算法總結(jié)上述過(guò)程,得到反向?qū)W習(xí)傳播算法描述如下:算法描述:step1初始化網(wǎng)絡(luò);step1-1若有必要,變換輸入屬性值為[0,1]區(qū)間的數(shù)值數(shù)據(jù),確定輸出屬性格式;step1-2通過(guò)選擇輸入層、隱層和輸出層的節(jié)點(diǎn)個(gè)數(shù),來(lái)創(chuàng)建神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu);step1-3將所有連接的權(quán)重初始化為[-1.0,1.0]區(qū)間的隨機(jī)值;step1-4為學(xué)習(xí)參數(shù)選擇一個(gè)[0,1]區(qū)間的值;step1-5選取一個(gè)終止條件;step2對(duì)于所有訓(xùn)練集實(shí)例:step2-1讓訓(xùn)練實(shí)例通過(guò)神經(jīng)網(wǎng)絡(luò);step2-2確定輸出誤差;step2-3使用Delta法則更新網(wǎng)絡(luò)權(quán)重;

反向傳播學(xué)習(xí)算法step3如果不滿足終止條件,重復(fù)步驟step2;step4在檢驗(yàn)數(shù)據(jù)集上檢測(cè)網(wǎng)絡(luò)的準(zhǔn)確度,如果準(zhǔn)確度不是最理想的,改變一個(gè)或多個(gè)網(wǎng)絡(luò)參數(shù),從step1開(kāi)始。可以在網(wǎng)絡(luò)訓(xùn)練達(dá)到一定的總周期數(shù),或是目標(biāo)輸出與計(jì)算輸出之間的均方根誤差rms(表示網(wǎng)絡(luò)訓(xùn)練的程度)達(dá)到一定標(biāo)準(zhǔn)時(shí),終止網(wǎng)絡(luò)訓(xùn)練。通常的標(biāo)準(zhǔn)是當(dāng)rms低于0.10時(shí),終止反向傳播學(xué)習(xí)。往往假設(shè)在進(jìn)行了充分的迭代后,反向?qū)W習(xí)技術(shù)一定收斂。然而不能保證收斂是最理想的,所以可能需要使用多種神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法,以反復(fù)實(shí)驗(yàn)才能得到理想的結(jié)果。

反向傳播學(xué)習(xí)的Python實(shí)現(xiàn)例10.3用Python實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)示例。importnumpyasnpfromsklearn.datasetsimportload_digitsfromsklearn.preprocessingimportLabelBinarizer#標(biāo)簽二值化fromsklearn.model_selectionimporttrain_test_split#切割數(shù)據(jù),交叉驗(yàn)證法defsigmoid(x):return1/(1+np.exp(-x))defdsigmoid(x):returnx*(1-x)classNeuralNetwork:def__init__(self,layers):#(64,100,10)#權(quán)重的初始化,范圍-1到1:+1的一列是偏置值self.V=np.random.random((layers[0]+1,layers[1]+1))*2-1self.W=np.random.random((layers[1]+1,layers[2]))*2-1deftrain(self,X,y,lr=0.11,epochs=10000):

反向傳播學(xué)習(xí)的Python實(shí)現(xiàn)#添加偏置值:最后一列全是1temp=np.ones([X.shape[0],X.shape[1]+1])temp[:,0:-1]=XX=tempforninrange(epochs+1):#在訓(xùn)練集中隨機(jī)選取一行(一個(gè)數(shù)據(jù)):randint()在范圍內(nèi)隨機(jī)生成一個(gè)int類型i=np.random.randint(X.shape[0])x=[X[i]]#轉(zhuǎn)為二維數(shù)據(jù):由一維一行轉(zhuǎn)為二維一行x=np.atleast_2d(x)#L1:輸入層傳遞給隱藏層的值;輸入層64個(gè)節(jié)點(diǎn),隱藏層100個(gè)節(jié)點(diǎn)#L2:隱藏層傳遞到輸出層的值;輸出層10個(gè)節(jié)點(diǎn)L1=sigmoid(np.dot(x,self.V))L2=sigmoid(np.dot(L1,self.W))

反向傳播學(xué)習(xí)的Python實(shí)現(xiàn)#L2_delta:輸出層對(duì)隱藏層的誤差改變量#L1_delta:隱藏層對(duì)輸入層的誤差改變量L2_delta=(y[i]-L2)*dsigmoid(L2)L1_delta=L2_delta.dot(self.W.T)*dsigmoid(L1)#計(jì)算改變后的新權(quán)重self.W+=lr*L1.T.dot(L2_delta)self.V+=lr*x.T.dot(L1_delta)#每訓(xùn)練1000次輸出一次準(zhǔn)確率ifn%1000==0:predictions=[]forjinrange(X_test.shape[0]):#獲取預(yù)測(cè)結(jié)果:返回與十個(gè)標(biāo)簽值逼近的距離,數(shù)值最大的選為本次的預(yù)測(cè)值o=self.predict(X_test[j])#將最大的數(shù)值所對(duì)應(yīng)的標(biāo)簽返回

反向傳播學(xué)習(xí)的Python實(shí)現(xiàn)predictions.append(np.argmax(o))#np.equal():相同返回true,不同返回falseaccuracy=np.mean(np.equal(predictions,y_test))print('迭代次數(shù):',n,'準(zhǔn)確率:',accuracy)defpredict(self,x):#添加偏置值:最后一列全是1temp=np.ones([x.shape[0]+1])temp[0:-1]=xx=temp#轉(zhuǎn)為二維數(shù)據(jù):由一維一行轉(zhuǎn)為二維一行x=np.atleast_2d(x)#L1:輸入層傳遞給隱藏層的值;輸入層64個(gè)節(jié)點(diǎn),隱藏層100個(gè)節(jié)點(diǎn)#L2:隱藏層傳遞到輸出層的值;輸出層10個(gè)節(jié)點(diǎn)L1=sigmoid(np.dot(x,self.V))L2=sigmoid(np.dot(L1,self.W))returnL2

反向傳播學(xué)習(xí)的Python實(shí)現(xiàn)#載入數(shù)據(jù):8*8的數(shù)據(jù)集digits=load_digits()X=digits.dataY=digits.target#輸入數(shù)據(jù)歸一化:當(dāng)數(shù)據(jù)集數(shù)值過(guò)大,乘以較小的權(quán)重后還是很大的數(shù),代入sigmoid激活函數(shù)就趨近于1,不利于學(xué)習(xí)X-=X.min()X/=X.max()NN=NeuralNetwork([64,100,10])#sklearn切分?jǐn)?shù)據(jù)X_train,X_test,y_train,y_test=train_test_split(X,Y)#標(biāo)簽二值化:將原始標(biāo)簽(十進(jìn)制)轉(zhuǎn)為新標(biāo)簽(二進(jìn)制)labels_train=LabelBinarizer().fit_transform(y_train)labels_test=LabelBinarizer().fit_transform(y_test)print('開(kāi)始訓(xùn)練')NN.train(X_train,labels_train,epochs=20000)print('訓(xùn)練結(jié)束')

反向傳播學(xué)習(xí)的Python實(shí)現(xiàn)程序運(yùn)行結(jié)果如圖10.10所示。

圖10.10例10.3程序運(yùn)行結(jié)果反向傳播學(xué)習(xí)的Python實(shí)現(xiàn)

Sklearn中神經(jīng)網(wǎng)絡(luò)API中含有多層感知機(jī)分類器MLPClassifier()和神經(jīng)網(wǎng)絡(luò)回歸預(yù)測(cè)函數(shù)LPRegressor()。MLPClassifier()常用形式如下:MLPClassifier(hidden_layer_sizes=(100,),activation=’relu’,solver=’adam’,alpha=0.0001,learning_rate_init=0.001,max_iter=200,momentum=0.9)參數(shù)說(shuō)明:(1)hidden_??layer_sizes:tuple,默認(rèn)值(100,)。第i個(gè)元素表示第i個(gè)隱藏層中的神經(jīng)元數(shù)量。(2)activation:激活函數(shù)。取值{’identity’,’logistic’,’tanh’,’relu’},默認(rèn)’relu’?!痠dentity’:隱藏層的激活函數(shù),返回f(x)=x;’logistic’:sigmoid函數(shù),返回f(x)=1/(1+exp(-x));’tanh’:雙曲tan函數(shù),返回f(x)=tanh(x);’relu’:整流后的線性單位函數(shù),返回f(x)=max(x)。(3)slover:取值{’lbfgs’,’sgd’,’adam’},默認(rèn)’adam’。權(quán)重優(yōu)化的求解器:’lbfgs’是準(zhǔn)牛頓方法族的優(yōu)化器;’sgd’是隨機(jī)梯度下降;’adam’由Kingma、Diederik和JimmyBa提出的基于隨機(jī)梯度的優(yōu)化器。注意:默認(rèn)優(yōu)化器’adam’相對(duì)較大的數(shù)據(jù)集(包含數(shù)千個(gè)訓(xùn)練樣本或更多)方面在訓(xùn)練時(shí)間和驗(yàn)證分?jǐn)?shù)方面都有很好的表現(xiàn)。但是,對(duì)于小型數(shù)據(jù)集,’lbfgs’可以更快地收斂并且表現(xiàn)更好。反向傳播學(xué)習(xí)的Python實(shí)現(xiàn)

(4)alpha:float,可選,默認(rèn)為0.0001。L2懲罰(正則化項(xiàng))參數(shù)。(5)learning_rate_init:double,可選,默認(rèn)為0.001。使用初始學(xué)習(xí)率。它控制更新權(quán)重的步長(zhǎng)。僅在solver=’sgd’或’adam’時(shí)使用。(6)max_iter:int,optional,默認(rèn)值200。最大迭代次數(shù)。(7)momentum:float,默認(rèn)0.9,梯度下降更新的動(dòng)量,應(yīng)該在0和1之間。僅在solver='sgd’時(shí)使用。使用sklearn庫(kù)構(gòu)建BP神經(jīng)網(wǎng)絡(luò),只需構(gòu)建多層感知機(jī)分類器MLPClassifier,輸入神經(jīng)網(wǎng)絡(luò)隱藏層的神經(jīng)單元個(gè)數(shù),并通過(guò)fit()方法進(jìn)行訓(xùn)練,訓(xùn)練完成后通過(guò)predict()方法進(jìn)行預(yù)測(cè)即可。對(duì)識(shí)別手寫數(shù)字來(lái)說(shuō),測(cè)試結(jié)果準(zhǔn)確率較高,能達(dá)到98%。反向傳播學(xué)習(xí)的Python實(shí)現(xiàn)

例10.4MLPClassifier()應(yīng)用示例。fromsklearn.neural_networkimportMLPClassifierfromsklearn.datasetsimportload_digitsfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportclassification_reportimportmatplotlib.pyplotaspltdigits=load_digits()x_data=digits.datay_data=digits.targetprint(x_data.shape)print(y_data.shape)#數(shù)據(jù)拆分x_train,x_test,y_train,y_test=train_test_split(x_data,y_data)反向傳播學(xué)習(xí)的Python實(shí)現(xiàn)

#構(gòu)建模型,2個(gè)隱藏層,第一個(gè)隱藏層有100個(gè)神經(jīng)元,第2隱藏層50個(gè)神經(jīng)元,訓(xùn)練500周期mlp=MLPClassifier(hidden_layer_sizes=(100,50),max_iter=500)mlp.fit(x_train,y_train)#測(cè)試集準(zhǔn)確率的評(píng)估predictions=mlp.predict(x_test)print(classification_report(y_test,predictions))程序運(yùn)行結(jié)果如圖10.11所示。圖10.11例10.4程序運(yùn)行結(jié)果5卷積神經(jīng)網(wǎng)絡(luò)OverviewofPredictiveModelsChapter05卷積神經(jīng)網(wǎng)絡(luò)

卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetwork,CNN)是多層感知機(jī)的變種,由生物學(xué)家休博爾和維瑟爾在早期關(guān)于貓視覺(jué)皮層的研究發(fā)展而來(lái),視覺(jué)皮層的細(xì)胞存在一個(gè)復(fù)雜的構(gòu)造,這些細(xì)胞對(duì)視覺(jué)輸入空間的子區(qū)域非常敏感,稱之為感受野(ReceptiveField)。卷積神經(jīng)網(wǎng)絡(luò)概述卷積神經(jīng)網(wǎng)絡(luò)是一種具有局部連接、權(quán)重共享等特性的前饋神經(jīng)網(wǎng)絡(luò),它是由多層感知機(jī)(MLP)演變而來(lái),由于其具有局部區(qū)域連接、權(quán)值共享、降采樣的結(jié)構(gòu)特點(diǎn),使得卷積神經(jīng)網(wǎng)絡(luò)在圖像處理領(lǐng)域表現(xiàn)出色,廣泛應(yīng)用于人臉識(shí)別、物品識(shí)別、醫(yī)學(xué)影像和遙感科學(xué)等領(lǐng)域。對(duì)卷積神經(jīng)網(wǎng)絡(luò)的研究可追溯至日本學(xué)者福島邦彥(KunihikoFukushima)提出的neocognition模型,他仿造生物的視覺(jué)皮層(visualcortex)設(shè)計(jì)了以“neocognition”命名的神經(jīng)網(wǎng)絡(luò),這是一個(gè)具有深度結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),也是最早被提出的深度學(xué)習(xí)算法之一。WeiZhang于1988年提出了一個(gè)基于二維卷積的“平移不變?nèi)斯ど窠?jīng)網(wǎng)絡(luò)”用于檢測(cè)醫(yī)學(xué)影像。1989年,YannLeCun等對(duì)權(quán)重進(jìn)行隨機(jī)初始化后使用了隨機(jī)梯度下降進(jìn)行訓(xùn)練,并首次使用了“卷積”一詞,“卷積神經(jīng)網(wǎng)絡(luò)”因此得名。1998年,YannLeCun等人在之前卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上構(gòu)建了更加完備的卷積神經(jīng)網(wǎng)絡(luò)LeNet-5,并在手寫數(shù)字的識(shí)別問(wèn)題上取得了很好的效果,LeNet-5的結(jié)構(gòu)也成為現(xiàn)代卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ),這種卷積層、池化層堆疊的結(jié)構(gòu)可以保持輸入圖像的平移不變性,自動(dòng)提取圖像特征。近些年來(lái),研究者們通過(guò)逐層訓(xùn)練參數(shù)與預(yù)訓(xùn)練的方法使得卷積神經(jīng)網(wǎng)絡(luò)可以設(shè)計(jì)得更復(fù)雜,訓(xùn)練效果更好。卷積神經(jīng)網(wǎng)絡(luò)快速的發(fā)展,在各大研究領(lǐng)域取得了較好的成績(jī),特別是在圖像分類、目標(biāo)檢測(cè)和語(yǔ)義分割等任務(wù)上不斷突破。

卷積神經(jīng)網(wǎng)絡(luò)整體結(jié)構(gòu)1.卷積層卷積層會(huì)對(duì)輸入的特征(或原始數(shù)據(jù))進(jìn)行卷積操作,輸出卷積后產(chǎn)生特征圖。卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心部分,卷積層的加入使得神經(jīng)網(wǎng)絡(luò)能夠共享權(quán)重,能夠進(jìn)行局部感知,并開(kāi)始層次化地對(duì)圖像進(jìn)行抽象理解。CNN中所用到的卷積是離散卷積。離散卷積本質(zhì)上是一種加權(quán)求和,所以CNN中的卷積本質(zhì)上就是利用一個(gè)共享參數(shù)的過(guò)濾器,通過(guò)計(jì)算中心點(diǎn)以及相鄰像素點(diǎn)的加權(quán)求和來(lái)構(gòu)成特征圖,實(shí)現(xiàn)空間特征的提取。先來(lái)看一個(gè)一維卷積的例子,如圖10.12所示。

卷積神經(jīng)網(wǎng)絡(luò)主要由卷積層(ConvolutionalLayer)、池化層(PoolingLayer)和全連接層(Full-connectedLayer)三種網(wǎng)絡(luò)層構(gòu)成,在卷積層與全連接層后通常會(huì)連接激活函數(shù),與之前介紹的前饋神經(jīng)網(wǎng)絡(luò)一樣,卷積神經(jīng)網(wǎng)絡(luò)也可以像搭積木一樣通過(guò)組裝層來(lái)組裝。圖10.12一維卷積運(yùn)算卷積神經(jīng)網(wǎng)絡(luò)整體結(jié)構(gòu)

其中xi是輸入信號(hào),wk是卷積核(也稱濾波器),如圖10.11所示,隨著卷積核[-1,0,1]滑過(guò)輸入信號(hào),對(duì)應(yīng)位置的元素相乘并計(jì)算出的總和(也稱乘加運(yùn)算)作為相應(yīng)窗口位置的輸出,一般情況下卷積核的長(zhǎng)度n遠(yuǎn)小于輸入信號(hào)序列長(zhǎng)度。輸入信號(hào)xi與卷積核wk的一堆卷積操作可以寫為:

,也可以寫成Y=W

?X,其中代表卷積運(yùn)算。相比于一維卷積,二維卷積在兩個(gè)維度上以一定的間隔帶動(dòng)二維濾波窗口,并在窗口內(nèi)進(jìn)行乘加運(yùn)算,如圖10.12所示,對(duì)于一個(gè)(4,4)的輸入,卷積核的大小是(3,3),輸出大小是(2,2)。當(dāng)卷積核窗口滑過(guò)輸入時(shí),卷積核與窗口內(nèi)(圖中陰影部分)的輸入元素作乘加運(yùn)算,并將結(jié)果保存到輸出對(duì)應(yīng)的位置,當(dāng)卷積核窗口滑過(guò)所有位置后二維卷積操作完成。卷積神經(jīng)網(wǎng)絡(luò)整體結(jié)構(gòu)

如圖10.13所示。圖10.13二維卷積卷積神經(jīng)網(wǎng)絡(luò)整體結(jié)構(gòu)對(duì)于輸入信號(hào)X∈RH×W與卷積核W∈Rh×w的二維卷積操作Y=W

?X,表達(dá)式為:

卷積神經(jīng)網(wǎng)絡(luò)整體結(jié)構(gòu)例10.5離散型卷積的Python實(shí)現(xiàn)。asrray=[[40,24,135],[200,239,238],[90,34,94],[100,100,100]]kernel=[[0.0,0.6],[0.1,0.3]]k=2defmy_conv(input,kernel,size):out_h=(len(input)-len(kernel)+1)out_w=(len(input[0])-len(kernel)+1)out=[[0foriinrange(out_w)]forjinrange(out_h)]foriinrange(out_h):forjinrange(out_w):out[i][j]=compute_conv(input,kernel,i,j,size)returnoutdefcompute_conv(input,kernel,i,j,size):#定義卷積操作

res=0forkkinrange(size):forkinrange(size):res+=input[i+kk][j+k]*kernel[kk][k]returnint(res)result=my_conv(asrray,kernel,k)foriinrange(len(result)):print(''.join(map(str,result[i])))卷積神經(jīng)網(wǎng)絡(luò)整體結(jié)構(gòu)2.池化層池化層的引入是仿照人的視覺(jué)系統(tǒng)對(duì)視覺(jué)輸入對(duì)象進(jìn)行降維和抽象,它實(shí)際上是一種形式的降采樣。有多種不同形式的非線性池化函數(shù),而其中“最大池化(Maxpooling)”是最為常見(jiàn)的,它是將輸入的圖像劃分為若干個(gè)矩形區(qū)域,對(duì)每個(gè)子區(qū)域輸出最大值。直覺(jué)上,這種機(jī)制能夠有效地原因在于,在發(fā)現(xiàn)一個(gè)特征之后,它的精確位置遠(yuǎn)不及它和其它特征相對(duì)位置的關(guān)系重要。池化層會(huì)不斷地減小數(shù)據(jù)的空間大小,因此參數(shù)的數(shù)量和計(jì)算量也會(huì)下降,這在一定程度上也控制了過(guò)擬合。池化層濾波器大小一般為(2,2),類似于卷積運(yùn)算,隨著濾波器的移動(dòng),依次選擇窗口內(nèi)的最大值作為輸出,結(jié)果如圖10.14所示。

圖10.14池化操作卷積神經(jīng)網(wǎng)絡(luò)整體結(jié)構(gòu)2.池化層池化操作后的結(jié)果相比其輸入縮小了。在卷積神經(jīng)網(wǎng)絡(luò)的工作中,池化層有如下主要作用:(1)特征不變性:池化操作使模型更加關(guān)注是否存在某些特征而不是特征具體的位置。其中不變形性包括,平移不變性、旋轉(zhuǎn)不變性和尺度不變性。平移不變性是指輸出結(jié)果對(duì)輸入對(duì)小量平移基本保持不變,例如,輸入為(1,3),最大池化將會(huì)取3,如果將輸入右移一位得到(3,-1),輸出的結(jié)果仍將為3。對(duì)伸縮的不變形,如果原先的神經(jīng)元在最大池化操作后輸出3,那么經(jīng)過(guò)伸縮(尺度變換)后,最大池化操作在該神經(jīng)元上很大概率的輸出仍是3。(2)特征降維(下采樣):池化相當(dāng)于在空間范圍內(nèi)做了維度約減,從而使模型可以抽取更加廣范圍的特征。同時(shí)減小了下一層的輸入,進(jìn)而減少計(jì)算量和參數(shù)個(gè)數(shù)。(3)在一定程度上防止過(guò)擬合,更方便優(yōu)化。

卷積神經(jīng)網(wǎng)絡(luò)整體結(jié)構(gòu)3.全連接層前面介紹了使用全連接層堆疊的方式構(gòu)造前饋神經(jīng)網(wǎng)絡(luò)模型,前一層的神經(jīng)元與后一層的神經(jīng)元全部相連,這種連接方式有什么問(wèn)題呢?首先,使用全連接層構(gòu)造的前饋神經(jīng)網(wǎng)絡(luò)模型需要大量的參數(shù),以常見(jiàn)的單通道640×480的圖像為例,圖像輸入時(shí)需要640×480=307200個(gè)節(jié)點(diǎn),假設(shè)網(wǎng)絡(luò)有三個(gè)隱層,每層100個(gè)結(jié)點(diǎn),則需要640×480×100+100×100+100×100=3.074×107個(gè)連接,這樣的計(jì)算資源消耗是難以接受的。其次,輸入數(shù)據(jù)的形狀被“忽略”了,所有輸入到全連接層的數(shù)據(jù)被拉平成了一堆數(shù)據(jù),例如輸入圖像時(shí),輸入數(shù)據(jù)是在高、寬、通道方向上的三維數(shù)據(jù),這個(gè)形狀中包含重要的空間信息。一般來(lái)說(shuō)空間上鄰近的像素會(huì)是相似的值,各通道之間的像素值有密切的關(guān)聯(lián),而相距較遠(yuǎn)像素之間關(guān)聯(lián)性較少,三維形狀中可能含有值得提取的本質(zhì)模式。而在全連接層,圖像被平整成一堆數(shù)據(jù)后,一個(gè)像素點(diǎn)對(duì)應(yīng)一個(gè)神經(jīng)元,圖像相鄰像素間的關(guān)聯(lián)被破壞,無(wú)法利用與形狀相關(guān)的信息。

卷積神經(jīng)網(wǎng)絡(luò)整體結(jié)構(gòu)3.全連接層在全連接構(gòu)成的前饋神經(jīng)網(wǎng)絡(luò)中,網(wǎng)絡(luò)的參數(shù)除了權(quán)重還有偏置,在卷積神經(jīng)網(wǎng)絡(luò)中卷積核的參數(shù)對(duì)應(yīng)全連接的權(quán)重,同時(shí)在卷積神經(jīng)網(wǎng)絡(luò)中也存在偏置,如圖10.15所示.

圖10.15卷積運(yùn)算偏置卷積層中參數(shù)的數(shù)量是所有卷積核中參數(shù)的總和,相較于全接連的方式,極大地減少了參數(shù)的數(shù)量,而且卷積層可以保持?jǐn)?shù)據(jù)的形狀不變,圖像數(shù)據(jù)輸入卷積層時(shí),卷積層以三維數(shù)據(jù)的形式接收,經(jīng)過(guò)卷積操作后同樣以三維數(shù)據(jù)的形式輸出至少一層,保留了空間信息。6循環(huán)神經(jīng)網(wǎng)絡(luò)OverviewofPredictiveModelsChapter06循環(huán)神經(jīng)網(wǎng)絡(luò)

循環(huán)神經(jīng)網(wǎng)絡(luò)(RerrentNeuralNetwork,RNN)出現(xiàn)于20世紀(jì)80年代,其雛形見(jiàn)于美國(guó)物理學(xué)家J.J.Hopfield于1982年提出的可用作聯(lián)想存儲(chǔ)器的互聯(lián)網(wǎng)絡(luò)——Hopfield神經(jīng)網(wǎng)絡(luò)模型。卷積神經(jīng)網(wǎng)絡(luò)擅長(zhǎng)處理大小可變的圖像,而循環(huán)神經(jīng)網(wǎng)絡(luò)則對(duì)可變長(zhǎng)度的序列數(shù)據(jù)有較強(qiáng)的處理能力。循環(huán)神經(jīng)網(wǎng)絡(luò)概述循環(huán)神經(jīng)網(wǎng)絡(luò)用于解決訓(xùn)練樣本輸入是連續(xù)的序列,且序列的長(zhǎng)短不一的問(wèn)題,比如基于時(shí)間序列的問(wèn)題。基礎(chǔ)的神經(jīng)網(wǎng)絡(luò)只在層與層之間建立了權(quán)連接,循環(huán)神經(jīng)網(wǎng)絡(luò)最大的不同之處就是在層之間的神經(jīng)元之間也建立了權(quán)連接。循環(huán)網(wǎng)絡(luò)在每一個(gè)時(shí)間點(diǎn)都有一個(gè)單獨(dú)的參數(shù),可以在時(shí)間上共享不同序列長(zhǎng)度或序列不同位置的統(tǒng)計(jì)強(qiáng)度,并使得模型能夠擴(kuò)展到應(yīng)用于不同形式的樣本。簡(jiǎn)單循環(huán)網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖10.16所示。

圖10.16結(jié)構(gòu)示意圖循環(huán)神經(jīng)網(wǎng)絡(luò)概述在t時(shí)刻,H會(huì)讀取輸入層的輸入x(t),并輸出一個(gè)值o(t),同時(shí)H的狀態(tài)值會(huì)從當(dāng)前步傳遞到下一步。也就是說(shuō),H的輸入除了來(lái)自輸入層的輸入數(shù)據(jù)x(t),還來(lái)自于上一時(shí)刻H的輸出。這樣就不難理解循環(huán)神經(jīng)網(wǎng)絡(luò)的工作過(guò)程了。理論上來(lái)講,一個(gè)完整的循環(huán)神經(jīng)網(wǎng)絡(luò)可以看作是同一網(wǎng)絡(luò)結(jié)構(gòu)被無(wú)限運(yùn)行的結(jié)果(一些存在的客觀原因使得無(wú)限運(yùn)行無(wú)法真正地完成)。循環(huán)神經(jīng)網(wǎng)絡(luò)在每一個(gè)時(shí)刻會(huì)有一個(gè)輸入x(t),H根據(jù)x(t)和上一個(gè)H的結(jié)果提供一個(gè)輸出o(t)。將循環(huán)神經(jīng)網(wǎng)絡(luò)的計(jì)算圖按時(shí)間先后展開(kāi)后如圖10.17所示。

圖10.16結(jié)構(gòu)示意圖循環(huán)神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)模式

循環(huán)神經(jīng)網(wǎng)絡(luò)要求每一個(gè)時(shí)刻都有一個(gè)輸入,但是不一定每個(gè)時(shí)刻都需要有輸出。這涉及了循環(huán)神經(jīng)網(wǎng)絡(luò)的不同設(shè)計(jì)模式。最簡(jiǎn)單循環(huán)體結(jié)構(gòu)的循環(huán)神經(jīng)網(wǎng)絡(luò)如圖10.18所示。圖10.18在循環(huán)網(wǎng)絡(luò)中使用單層全連結(jié)構(gòu)作為循環(huán)體(隱藏層)循環(huán)神經(jīng)網(wǎng)絡(luò)運(yùn)算

對(duì)于簡(jiǎn)單循環(huán)網(wǎng)絡(luò)計(jì)算圖,輸入層到隱藏層的參數(shù)為權(quán)重矩陣U,隱藏層到輸出層的參數(shù)為權(quán)重矩陣V,隱藏層到隱藏層的反饋連接參數(shù)為權(quán)重矩陣W,該循環(huán)神經(jīng)網(wǎng)絡(luò)的前向傳播插值公式為:其中的網(wǎng)絡(luò)參數(shù)為三個(gè)權(quán)重矩陣U、V和W以及兩個(gè)偏置向量b和c。該循環(huán)神經(jīng)網(wǎng)絡(luò)將一個(gè)輸入序列映射為相同長(zhǎng)度的輸出序列。對(duì)于分類任務(wù),我們可以將輸出層的神經(jīng)元分別通過(guò)softmax分類層(主要作用是輸出各個(gè)類的概率)進(jìn)行分類;對(duì)于回歸任務(wù),我們可以直接將輸出層神經(jīng)元的信息作為需要使用的回歸值。一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)前向傳播的具體計(jì)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論