版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
深度學(xué)習(xí)中激活函數(shù)的選擇問(wèn)題研究摘要深度學(xué)習(xí)是機(jī)械學(xué)習(xí)的一個(gè)子集,而機(jī)械學(xué)習(xí)本身則是人工智能和統(tǒng)計(jì)的一個(gè)子集。深度學(xué)習(xí)在計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別、時(shí)空數(shù)據(jù)挖掘等領(lǐng)域帶來(lái)了一系列突破。就在過(guò)去幾年中,深度學(xué)習(xí)的熱度呈現(xiàn)出了爆炸性的增長(zhǎng)。人們也開(kāi)始關(guān)注該領(lǐng)域的發(fā)展。而任何發(fā)展的基礎(chǔ)都離不開(kāi)創(chuàng)新,要想創(chuàng)新我們首先得理解深度學(xué)習(xí)的基礎(chǔ)知識(shí)。在深度學(xué)習(xí)中,激活函數(shù)扮演著十分重要的角色,是不可或缺的一個(gè)環(huán)節(jié)。而本文將以反向傳播算法為基礎(chǔ)(BP算法),以減小梯度消散為目的,找出不同情況下,最適合的激活函數(shù),并對(duì)其加以分析。關(guān)鍵詞:深度學(xué)習(xí);激活函數(shù);反向傳播算法;梯度下降目錄TOC\o"1-3"\h\u22649摘要 II1緒論1.1課題的研究背景及意義在現(xiàn)代社會(huì)中,隨著科技的不斷發(fā)展,機(jī)器學(xué)習(xí)被運(yùn)用到了我們生活中的許多方面:從我們每天都會(huì)用到的網(wǎng)絡(luò)搜索功能,以及與我們形影不離的智能手機(jī),再到人工智能系統(tǒng)(如AlphaGo),都表現(xiàn)出了驚人的作用。但是,對(duì)于傳統(tǒng)的機(jī)器學(xué)習(xí)算法,僅僅只屬于簡(jiǎn)單學(xué)習(xí)或者未涉及到深度學(xué)習(xí),只停留于淺層結(jié)構(gòu),例如下述幾種模型,高斯混合模型(GMM)、隱馬爾可夫模型(HMM)、最大炳模型(MEM)等。這些淺層模型的局限在于無(wú)法有效地表示復(fù)雜函數(shù),對(duì)輸入的原始信號(hào)的特征提取較為初級(jí),對(duì)于一些比較復(fù)雜的視覺(jué)問(wèn)題時(shí),這些模型的泛化表達(dá)能力就會(huì)存在一定的局限性,因此解決此類問(wèn)題就會(huì)呈現(xiàn)出難以解決甚至無(wú)法解決的情況。作為機(jī)器學(xué)習(xí)算法中延伸出來(lái)的分支,深度學(xué)習(xí)則可以在一定程度上解決上述問(wèn)題。深度學(xué)習(xí)旨在建立并實(shí)現(xiàn)對(duì)人腦進(jìn)行模擬,使得系統(tǒng)具有能夠自行學(xué)習(xí)、分析、改正的神經(jīng)網(wǎng)絡(luò)。深度學(xué)習(xí)的最大特點(diǎn)是,得到的初始數(shù)據(jù)需要通過(guò)許多層、相互疊加的非線性模型,最終將該數(shù)據(jù)轉(zhuǎn)化成為具有深層次的、復(fù)雜的特征表達(dá)。值得一提的是,在深度神經(jīng)網(wǎng)絡(luò)中,這些復(fù)雜的過(guò)程均不是通過(guò)人工來(lái)進(jìn)行的,而是通過(guò)神經(jīng)網(wǎng)絡(luò)自學(xué)能力,從大量數(shù)據(jù)中學(xué)習(xí)獲得的。深度學(xué)習(xí)在某些方面,對(duì)于機(jī)器學(xué)習(xí)起到了十分顯著的推動(dòng)性作用。證明了它善于發(fā)現(xiàn)高階原始數(shù)據(jù)的復(fù)雜結(jié)構(gòu)。在中國(guó)以內(nèi),甚至擴(kuò)大到整個(gè)世界,深度學(xué)習(xí)都受到了廣大研究人員以及一些研究高級(jí)技術(shù)公司的重視。在短短的幾年里,在傳統(tǒng)機(jī)器學(xué)習(xí)的各個(gè)領(lǐng)域都或多或少地融入了深度學(xué)習(xí)的應(yīng)用。計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別、自然語(yǔ)言處理、人機(jī)對(duì)弈已成為深度學(xué)習(xí)算法應(yīng)用的最常見(jiàn)、也是最為成功的研究領(lǐng)域。深度學(xué)習(xí)也在許多領(lǐng)域帶來(lái)了重大的突破,而這些領(lǐng)域則包括了語(yǔ)音識(shí)別、即時(shí)視覺(jué)翻譯(即拍照翻譯)、自動(dòng)駕駛汽車等等。而只有當(dāng)我們對(duì)深度神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)與有效的訓(xùn)練之后,才能成功地實(shí)現(xiàn)這些應(yīng)用。在這個(gè)過(guò)程中,如何選擇適用的激活函數(shù)十分重要。近幾年,人工神經(jīng)網(wǎng)出現(xiàn)了數(shù)不勝數(shù)的變化,也出現(xiàn)了各種各樣的功能和特征。大致分為兩種:循環(huán)型和非循環(huán)型。卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionNeuralNetworks,CNNs),這是最經(jīng)典的非循環(huán)網(wǎng)絡(luò),廣泛應(yīng)用于視覺(jué)識(shí)別任務(wù),這其中包括了目標(biāo)檢測(cè)、目標(biāo)分類以及字符識(shí)別。遞歸神經(jīng)網(wǎng)絡(luò)(RecurrentNeuralNetworks,RNNs)的主要目的則是對(duì)序列數(shù)據(jù)進(jìn)行一系列的處理與預(yù)測(cè),例如,對(duì)文本中即將出現(xiàn)的下一個(gè)字符進(jìn)行預(yù)測(cè)、語(yǔ)音識(shí)別以及手寫(xiě)識(shí)別等等。這些人工神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)被認(rèn)為是由很多個(gè)神經(jīng)元相互連接、相互作用而形成的,激活函數(shù)在其中起著非常重要的作用。本論文中,會(huì)介紹到各種激活函數(shù),并探討各個(gè)激活函數(shù)的特點(diǎn),發(fā)現(xiàn)它們的優(yōu)點(diǎn)以及缺點(diǎn),當(dāng)我們充分了解了激活函數(shù)后,就可以判斷出,在特定的情況下,哪一種激活函數(shù)是最適用的,使得系統(tǒng)獲得優(yōu)化,這樣便能讓神經(jīng)網(wǎng)絡(luò)變得更加合理,從而提高整個(gè)神經(jīng)網(wǎng)絡(luò)的性能。1.2深度學(xué)習(xí)的發(fā)展簡(jiǎn)史Minsly在1969年與SeymourPapert合著了Perceptrons一書(shū),該書(shū)是人工神經(jīng)網(wǎng)絡(luò)的早期分析。而這本書(shū)則推進(jìn)了人工智能符號(hào)處理的發(fā)展。在該書(shū)中明確指出,單個(gè)神經(jīng)元無(wú)法實(shí)現(xiàn)某些邏輯功能,例如XOR,并錯(cuò)誤地暗示多層網(wǎng)絡(luò)也會(huì)有同樣的問(wèn)題。后來(lái)發(fā)現(xiàn)三層網(wǎng)絡(luò)是可以實(shí)現(xiàn)這些功能的。多層神經(jīng)網(wǎng)絡(luò)在20世紀(jì)60年代被發(fā)現(xiàn),但是直到20世紀(jì)80年代才被拿出來(lái)真正研究。20世紀(jì)70年代,使用競(jìng)爭(zhēng)學(xué)習(xí)的自由組織地圖被引入[14]。神經(jīng)網(wǎng)絡(luò)的復(fù)興發(fā)生在20世紀(jì)80年代?;谥R(shí)或“專家”的系統(tǒng)也在20世紀(jì)80年代被引入。神經(jīng)網(wǎng)絡(luò)的反向傳播(BP),是一種使用梯度下降的學(xué)習(xí)方法,在20世紀(jì)80年代被重新發(fā)明,這也直接導(dǎo)致了該領(lǐng)域的更新。研究不僅開(kāi)始于人類神經(jīng)網(wǎng)絡(luò)(即人類大腦),還開(kāi)始于創(chuàng)建算法供有效的計(jì)算神經(jīng)網(wǎng)絡(luò)使用。這也最終將深度學(xué)習(xí)領(lǐng)向了機(jī)械學(xué)習(xí)中的相關(guān)應(yīng)用。進(jìn)展發(fā)生在20世紀(jì)80年代,此時(shí)AI研究人員開(kāi)始應(yīng)用嚴(yán)格的數(shù)學(xué)和統(tǒng)計(jì)分析來(lái)創(chuàng)建算法。將隱式馬爾科夫模型運(yùn)用到語(yǔ)音中。隱式馬爾科夫模型是一個(gè)具有不可被觀察到的狀態(tài)的模型,將其與龐大的數(shù)據(jù)庫(kù)相結(jié)合,他們最終創(chuàng)建了更加穩(wěn)固的語(yǔ)音識(shí)別。機(jī)械翻譯也得到了進(jìn)一步發(fā)展。數(shù)據(jù)挖掘,現(xiàn)在所知道的第一種機(jī)械學(xué)習(xí)的形式被創(chuàng)造出來(lái)。在20世紀(jì)90年代早期,VladimirVapnik和他的同事發(fā)明了一種監(jiān)督學(xué)習(xí)網(wǎng)絡(luò),該網(wǎng)絡(luò)的特別之處在于它有強(qiáng)大的計(jì)算功能,而該網(wǎng)絡(luò)一般可以被叫做支持向量機(jī)械(SVM)。這些網(wǎng)絡(luò)可以解決模式識(shí)別、回歸的問(wèn)題,還可以解決一些其他機(jī)械學(xué)習(xí)的問(wèn)題。而在過(guò)去幾年中,在深度學(xué)習(xí)這個(gè)領(lǐng)域中,出現(xiàn)了爆炸性的增長(zhǎng)。能夠使深度學(xué)習(xí)更加容易的實(shí)現(xiàn)的新型工具已經(jīng)被開(kāi)發(fā)出來(lái)。TensorFlow可以從亞馬遜AWS獲得。這使得深度學(xué)習(xí)在云端的部署變得余加容易起來(lái)。這其中包括了強(qiáng)大的可視化工具。TensorFlow允許你將深度學(xué)習(xí)部署到只有間歇連接到網(wǎng)絡(luò)的機(jī)器上。另外一個(gè)例子是IBM沃森,它允許你使用TensorFlow、Keras、PyTorch、Caffe、以及一些其他的框架。Keras是一個(gè)可以在Python中使用的一個(gè)比較流行的深度學(xué)習(xí)框架。而所有這些框架已經(jīng)允許深度學(xué)習(xí)被部署在任何位置。1.3國(guó)內(nèi)外研究現(xiàn)況隨著深度學(xué)習(xí)的發(fā)展,作為其中一個(gè)最為重要環(huán)節(jié)的激活函數(shù)也受到了越來(lái)越多的關(guān)注?,F(xiàn)如今,人們關(guān)注最多的話題就是人工智能。不可否認(rèn),人工智能領(lǐng)域在近些年取得了重大的飛躍,該成功離不開(kāi)深度學(xué)習(xí)相關(guān)算法的不斷進(jìn)步與改善,不管是國(guó)內(nèi)還是國(guó)外,現(xiàn)階段都是一個(gè)發(fā)展人工智能的最適合的時(shí)期。但是,不得不說(shuō)的是,深度學(xué)習(xí)還是一個(gè)十分年輕的領(lǐng)域,更不用說(shuō)以深度學(xué)習(xí)為基礎(chǔ)的人工智能了,二者還有一段很長(zhǎng)的路需要走,只有經(jīng)過(guò)不斷地研究,才能在此過(guò)程中一步步完善,變得熟練。而在深度學(xué)習(xí)算法中,存在著一個(gè)不可或缺的組成部分,那就是激活函數(shù),與深度學(xué)習(xí)、人工智能一樣,激活函數(shù)離成熟也是相差甚遠(yuǎn),同樣有許多未知的地方等待著研究員們?nèi)ヌ骄颗c摸索。盡管從先前不那么令人滿意的Sigmoid函數(shù),到后來(lái)相對(duì)比較優(yōu)秀的Relu函數(shù);從剛開(kāi)始的普遍梯度消失現(xiàn)象,到后來(lái)提高精度的自歸一化,都可以看出,最近幾年科學(xué)家在激活函數(shù)相關(guān)研究領(lǐng)域取得了重大的突破,這已經(jīng)不能稱之為量變了,應(yīng)該更進(jìn)一步稱之為質(zhì)的飛躍,但是激活函數(shù)領(lǐng)域還是有許多方面需要得到完善,而要想實(shí)現(xiàn)這一點(diǎn),那就需要研究者們堅(jiān)持不懈的努力了,現(xiàn)在不管是在國(guó)內(nèi)還是在國(guó)外,都仍然存在著大量的學(xué)者以及科學(xué)家在研究激活函數(shù)。在現(xiàn)在,研究人員在使用激活函數(shù)的時(shí)候,都會(huì)優(yōu)先選擇Relu函數(shù)及其變種,這說(shuō)明目前為止,Relu函數(shù)以及其變種作為激活函數(shù)可以基本滿足當(dāng)今深度學(xué)習(xí)模型的需求,并可以得到較為滿意的結(jié)果,但是隨著模型的不斷發(fā)展與進(jìn)步,如果激活函數(shù)不能做到不斷更新的話,那么面對(duì)逐漸復(fù)雜化的深度神經(jīng)網(wǎng)絡(luò)模型,就不能達(dá)到提高精度的目的,最終便會(huì)被淘汰。因此,就現(xiàn)在來(lái)看,Relu函數(shù)及其變種依然會(huì)被科學(xué)家們放在首要的研究位置,相信在不遠(yuǎn)的將來(lái),將會(huì)有更多更加完美的激活函數(shù)與大家見(jiàn)面。1.4本文組織框架本文的主要目的是探究在不同情況下,各種不同的激活函數(shù)在該情況下的性能差別。在本篇文章中,我將主要內(nèi)容分為五個(gè)章節(jié),每一章介紹的主要內(nèi)容可以概述為以下幾點(diǎn):第一章為基礎(chǔ)緒論,在這里我向讀者詳盡的講述了深度學(xué)習(xí)的理論和研究發(fā)展背景以及重要性和意義,深度學(xué)習(xí)從過(guò)去到現(xiàn)在的發(fā)展簡(jiǎn)史,最后簡(jiǎn)要的介紹了一下國(guó)內(nèi)外對(duì)激活函數(shù)的研究現(xiàn)況以及對(duì)未來(lái)激活函數(shù)的展望。第二章則向讀者們介紹了深度學(xué)習(xí)中幾種常見(jiàn)的神經(jīng)網(wǎng)絡(luò),其中包括有深度神經(jīng)網(wǎng)絡(luò),傳統(tǒng)神經(jīng)網(wǎng)絡(luò),還對(duì)反向傳播(BP)算法進(jìn)行了簡(jiǎn)要的介紹,之后又介紹了兩種神經(jīng)網(wǎng)絡(luò),分別為卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò),介紹該部分內(nèi)容,讓讀者更好地理解本文的內(nèi)容。第三章主要講述了深度學(xué)習(xí)中十分重要的一個(gè)結(jié)構(gòu)——激活函數(shù),首先介紹了激活函數(shù)在整個(gè)系統(tǒng)中的作用,在這之后又向讀者展示了幾種常用的激活函數(shù),并分析了它們各自的有點(diǎn)以及缺點(diǎn)。第四章為整個(gè)實(shí)驗(yàn)的過(guò)程與結(jié)果展示,首先展示了使用三個(gè)不同激活函數(shù)進(jìn)行運(yùn)行之后的結(jié)果,緊接著又對(duì)整體的準(zhǔn)確度進(jìn)行了分析,并探尋其中存在的聯(lián)系,最后找出相對(duì)較好的激活函數(shù)。第五章則主要是對(duì)整個(gè)實(shí)驗(yàn)結(jié)果的分析之后得出來(lái)的結(jié)論,以及對(duì)未來(lái)研究的展望,希望在以后能有更多的機(jī)會(huì)接觸到深度學(xué)習(xí)。
2深度神經(jīng)網(wǎng)絡(luò)2.1深度神經(jīng)網(wǎng)絡(luò)一個(gè)(前饋和深度)神經(jīng)網(wǎng)絡(luò),簡(jiǎn)稱DNN,是一個(gè)元組?=(L,T,Φ),其中是一個(gè)組層,是層之間的一組連接,是一組函數(shù),而每個(gè)函數(shù)都對(duì)應(yīng)一個(gè)非輸入層。在一個(gè)DNN中,是輸入層,是輸出層,除了上述所提到的兩個(gè)層以外的層,稱它們?yōu)殡[藏層。每一層都由個(gè)神經(jīng)元(或節(jié)點(diǎn))組成,第k層的第l個(gè)節(jié)點(diǎn)用表示,每個(gè)節(jié)點(diǎn)在1<k<K和1≤l≤時(shí),與兩個(gè)變量和相關(guān)聯(lián),分別記錄激活函數(shù)之前和之后的值。ReLU[1]是目前最常用的DNN激活函數(shù),根據(jù)該函數(shù)定義了每個(gè)隱藏點(diǎn)的激活值為若≥0(2-1)0否則每一個(gè)輸入節(jié)點(diǎn)在1≤l≤時(shí)和變量有關(guān),每一個(gè)輸出節(jié)點(diǎn)在1≤l≤時(shí)和變量有關(guān),因?yàn)樗麄儧](méi)有激活函數(shù)。我們讓是與層相關(guān)的向量空間,每個(gè)變量都有一個(gè)維度。值得注意的是,每一個(gè)點(diǎn)都是一個(gè)輸入。除輸入外,每一個(gè)節(jié)點(diǎn)通過(guò)預(yù)先訓(xùn)練的參數(shù)連接到前一層的節(jié)點(diǎn),對(duì)于滿足2≤k≤K,1≤l≤的所有k和l,我們有:(2-2)其中是(即第k-1層的第h個(gè)節(jié)點(diǎn))和(即第k層的第l個(gè)節(jié)點(diǎn)),是節(jié)點(diǎn)所謂的偏差。我們注意到這個(gè)定義既可以表示兩個(gè)完全連接的函數(shù),也可以表示卷積函數(shù)。函數(shù)是方程(2-1)和(2-2)的組合。由于在(2-1)中使用了ReLU,神經(jīng)網(wǎng)絡(luò)的行為是高度非線性的。最后,對(duì)于任意輸入,DNN分配一個(gè)標(biāo)簽,即輸出層中值最大的索引:。讓L成為一組標(biāo)簽。例子。圖2-1是一個(gè)四層的簡(jiǎn)單DNN。它的輸入空間是,其中R是實(shí)數(shù)的集合。圖2-1一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)給定一個(gè)特定的輸入x,深度神經(jīng)網(wǎng)絡(luò)?將被實(shí)例化,這個(gè)網(wǎng)絡(luò)實(shí)例我們選擇用?[x]來(lái)表示。在?[x]中,對(duì)于每個(gè)節(jié)點(diǎn),變量和的值是固定的,分別用和來(lái)表示。因此,在深度神經(jīng)網(wǎng)絡(luò)中,還有一個(gè)被確定的因素,那就是每個(gè)ReLU函數(shù)操作的激活。我們定義+1如果=(2-3)-1否則下標(biāo)?當(dāng)從上下文清除時(shí)將被省略。x的分類標(biāo)簽用?[x].label表示。圖2-2表示了一個(gè)簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)的架構(gòu)。圖2-2簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)它由輸入、輸出和一個(gè)或多個(gè)隱藏層組成。輸入層的任何一個(gè)節(jié)點(diǎn)都將有隱藏層的一個(gè)節(jié)點(diǎn)與之對(duì)應(yīng)并相連,而在輸出層中,也一定存在著足夠的節(jié)點(diǎn)與隱藏層中的每一個(gè)節(jié)點(diǎn)相連接。每一個(gè)聯(lián)系通常都有一定的分量。輸入層表示輸入網(wǎng)絡(luò)的原始信息,網(wǎng)絡(luò)的這一部分永遠(yuǎn)不會(huì)改變它的價(jià)值觀,輸入層會(huì)將每個(gè)接收到的輸入進(jìn)行復(fù)制,之后再發(fā)送到隱層的節(jié)點(diǎn)。隱藏層接受來(lái)自輸入層的數(shù)據(jù)。它使用輸入值并使用一些權(quán)值修改它們,這個(gè)新值比發(fā)送到輸出層,但它也會(huì)被一些權(quán)值從隱藏層和輸出層之間的連接修改。輸出層處理從隱藏層接收到的信息并生成輸出。此輸出由激活函數(shù)處理。2.2傳統(tǒng)神經(jīng)網(wǎng)絡(luò)模型圖2-3展示了在傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中的基本單元,其中有N個(gè)輸入以及M個(gè)輸出。圖2-3有N個(gè)輸入和M個(gè)輸出的單個(gè)神經(jīng)元其中與單個(gè)神經(jīng)元相關(guān)的計(jì)算包括有:網(wǎng)絡(luò)計(jì)算(2-4)式中n是輸入和權(quán)值的索引,從1到N;是輸入值的權(quán)值;而則是偏置權(quán)值。2)輸出計(jì)算(2-5)式中是該神經(jīng)元的輸出;是激活函數(shù),且在這個(gè)網(wǎng)絡(luò)中Sigmoid型函數(shù)是最常被使用的。對(duì)于更多連接在一起的神經(jīng)元,每個(gè)神經(jīng)元的兩個(gè)基本運(yùn)算(2-4)和(2-5)保留原來(lái)的樣子,不發(fā)生改變;而其中唯一的區(qū)別為輸可以有兩種來(lái)源,即一個(gè)神經(jīng)元的輸入既可以被前一層神經(jīng)元的輸出提供,也可以由神經(jīng)網(wǎng)絡(luò)的輸入來(lái)提供。權(quán)重值是參數(shù)唯一的類型,而且可以通過(guò)學(xué)習(xí)算法的運(yùn)用進(jìn)行自動(dòng)更新。以誤差反向傳播算法為基礎(chǔ),很多種梯度算法都被開(kāi)發(fā)出來(lái),來(lái)應(yīng)對(duì)傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)。其中,一階梯度算法[2]是穩(wěn)定的,但是消耗的時(shí)間很多,而且經(jīng)常不能夠收斂到十分小的誤差。而通過(guò)采用二階梯度方法,如LevenbergMarquardt算法[3]和神經(jīng)元對(duì)神經(jīng)元算法[4],訓(xùn)練的速度和精確度都能夠得到顯著性的提高。而在最近,[5]中開(kāi)發(fā)的最新算法逆轉(zhuǎn)了傳統(tǒng)的反向傳播的程序,并提高了多個(gè)輸出的傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效率。2.3反向傳播算法與梯度下降BP是一種人工神經(jīng)網(wǎng)絡(luò),而該網(wǎng)絡(luò)的基礎(chǔ)則是誤差反向傳播算法(BP算法)。它由兩個(gè)部分組成,第一個(gè)部分是對(duì)信息的正向傳播,而第二部分就是這里提到的誤差的反向傳播。輸入層的每個(gè)神經(jīng)元將會(huì)接收到所有來(lái)自外部的輸入信息,然后通過(guò)節(jié)點(diǎn)與節(jié)點(diǎn)之間的連接將信息傳遞給中間層的神經(jīng)元。中間層是內(nèi)部信息處理層,它的主要任務(wù)是將收到的信息轉(zhuǎn)換成有用的信息。而中間層該被設(shè)計(jì)為單層隱藏層還是多層隱藏層的標(biāo)準(zhǔn)則是:是否能夠匹配信息的轉(zhuǎn)換能力。該信息經(jīng)過(guò)進(jìn)一步的處理,由最后一層隱藏層傳遞到輸出層上的每個(gè)神經(jīng)元,這就可以被稱為完成了一次學(xué)習(xí)的正向傳播。最后再由輸出層將處理數(shù)據(jù)后的結(jié)果輸出到外部。當(dāng)輸出層的實(shí)際輸出與系統(tǒng)的期望輸出相矛盾時(shí),再來(lái)進(jìn)行誤差的反傳播。通過(guò)輸出層,根據(jù)誤差梯度下降對(duì)每個(gè)權(quán)值進(jìn)行修正,并逐層反向傳播到隱藏層和輸入層。整個(gè)系統(tǒng)也在不斷地進(jìn)行著信息的正向傳播和誤差的反向傳播,這不僅是一個(gè)不斷修正每一層權(quán)重的過(guò)程,對(duì)于一個(gè)神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),這也是一個(gè)進(jìn)行不斷學(xué)習(xí)與訓(xùn)練的過(guò)程。這個(gè)過(guò)程只有當(dāng)出現(xiàn)以下兩種情況時(shí)才會(huì)停止,一種是直到網(wǎng)絡(luò)的輸出誤差降低到可以被接受的范圍內(nèi),另一種則是整個(gè)系統(tǒng)達(dá)到了預(yù)先設(shè)置的學(xué)習(xí)時(shí)間。圖2-4BP網(wǎng)絡(luò)結(jié)構(gòu)BP網(wǎng)絡(luò)具有如圖2-4所示的三層拓?fù)浣Y(jié)構(gòu)。它們可以被稱為輸入層、中間層(在大多是情況下該層被稱作隱藏層)和輸出層。其特點(diǎn)是:觀察圖中任意一層的神經(jīng)元,可以發(fā)現(xiàn)它們都僅僅是與相鄰層的神經(jīng)元進(jìn)行連接,再看向同一層的神經(jīng)元,發(fā)現(xiàn)他們之間是沒(méi)有進(jìn)行連接的。在該條件下所構(gòu)成的神經(jīng)網(wǎng)絡(luò)是具有結(jié)構(gòu)層次的。針對(duì)線性可分問(wèn)題,解決方法只有一個(gè),那就是采用單層的前饋神經(jīng)網(wǎng)絡(luò)。而針對(duì)非線性問(wèn)題,能夠用的方法也只有一個(gè),那就是用帶有隱藏層的多層神經(jīng)網(wǎng)絡(luò)來(lái)解決。BP網(wǎng)絡(luò)的基本處理單元(除輸入層單元外)是一種非線性輸入-輸出關(guān)系。常用的函數(shù)是f(x)=1/(1+)。處理單元的輸入和輸出值并不是一直不變的,而是可以一直變化的。那么BP網(wǎng)絡(luò)的學(xué)習(xí)是如何進(jìn)行的呢?首先對(duì)于一個(gè)網(wǎng)絡(luò),需要給定的一個(gè)訓(xùn)練集,在給定訓(xùn)練集之后,再進(jìn)行一系列的訓(xùn)練來(lái)實(shí)現(xiàn)學(xué)習(xí)的過(guò)程。在正常情況下,能夠定量地反映學(xué)習(xí)性能的是網(wǎng)絡(luò)的均方根誤,定義為:Erms其中,“m”表示訓(xùn)練集中模對(duì)的個(gè)數(shù),“n”表示該網(wǎng)絡(luò)在輸出層的單元數(shù),“”表示預(yù)期產(chǎn)出,“”表示實(shí)際產(chǎn)出。對(duì)于給定的訓(xùn)練集,當(dāng)Erms<0.1[6]時(shí),一般已經(jīng)滿足了學(xué)習(xí)需求。Rojas(2005)認(rèn)為BP算法可以分解為四個(gè)主要步驟。他提出,只有先選擇好一個(gè)網(wǎng)絡(luò)權(quán)值且該權(quán)值是隨機(jī)的,才能再通過(guò)對(duì)反向傳播算法的使用來(lái)計(jì)算必要的修正。上述算法可以主要分解為下列的四個(gè)步驟:i)前饋計(jì)算ii)向輸出層反向傳播iii)向隱含層反向傳播iv)權(quán)值更新當(dāng)誤差函數(shù)的值足夠小時(shí),算法停止。這是BP算法非常粗略和基本的公式。其他科學(xué)家也提出了一些不同的定義,但羅哈斯的定義似乎相當(dāng)準(zhǔn)確,很容易理解。最后一步,權(quán)重更新是通過(guò)算法進(jìn)行的。接下來(lái)簡(jiǎn)略地介紹一下BP算法。先看下列呈現(xiàn)出來(lái)的均方誤差代價(jià)函數(shù)公式(2-7),這是一個(gè)比較常見(jiàn)的形12h式,其中,在神經(jīng)網(wǎng)絡(luò)中是最末尾處的輸出,而則是網(wǎng)絡(luò)中的樣本。在生活進(jìn)行實(shí)際操作時(shí),代價(jià)函數(shù)通常都是通過(guò)加L2范數(shù)之后得到的權(quán)重項(xiàng)。也就是說(shuō),它是將所有權(quán)價(jià)值的平方相加之后得來(lái)的。那么它的目的又是什么呢?目的其實(shí)很簡(jiǎn)單,就是為了權(quán)重的振幅,減少參數(shù),從而達(dá)到避免過(guò)度擬合現(xiàn)象發(fā)生的目標(biāo)。其公式為:(2-8)通過(guò)對(duì)梯度下降算法的運(yùn)用,整個(gè)神經(jīng)網(wǎng)絡(luò)的代價(jià)函數(shù)將得到優(yōu)化,而在這其中,每進(jìn)行一次迭代,它的參數(shù)將以下列公式的形式進(jìn)行更新:Wij(l)=Wij(l)?在式(2-11)和(2-12)中,首先在一個(gè)樣本組中產(chǎn)生出其中任何一個(gè)樣本所對(duì)應(yīng)的代價(jià)函數(shù)的偏導(dǎo)數(shù),每進(jìn)行一次就得到一個(gè)偏導(dǎo)數(shù)。最后將整體樣本的平均值作為總代價(jià)函數(shù)的偏導(dǎo)數(shù)。其中是每個(gè)輸出為的樣本標(biāo)簽和模型的平方之后相減。??Wij(l)如何計(jì)算每一層的偏導(dǎo)數(shù)呢?這里就要利用到反向傳播算法(BP),且BP算法是進(jìn)行逐層求導(dǎo)。在根據(jù)上述(2-9)和(2-10)式子,對(duì)進(jìn)行過(guò)梯度下降迭代后的參數(shù)進(jìn)行更新,根據(jù)這個(gè)循環(huán)連續(xù)地進(jìn)行下去,直到出現(xiàn)代價(jià)函數(shù)為收斂的情況停止循環(huán)。2.4卷積神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)卷積神經(jīng)網(wǎng)絡(luò)(簡(jiǎn)稱CNN)與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)相差并不是很大,組成卷積神經(jīng)網(wǎng)絡(luò)的神經(jīng)元可以通過(guò)自我學(xué)習(xí)來(lái)進(jìn)行優(yōu)化。每個(gè)神經(jīng)元仍然是首先收到一個(gè)輸入值,然后再進(jìn)行一個(gè)操作(比如在一個(gè)非線性函數(shù)前面加上一個(gè)標(biāo)量乘積)——這是無(wú)數(shù)神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)。從輸入的原始圖像向量到最終輸出的類分?jǐn)?shù),整個(gè)網(wǎng)絡(luò)仍然會(huì)表達(dá)單一的感知分?jǐn)?shù)函數(shù)(權(quán)重)。與類相關(guān)的損失函數(shù)將被包含在整個(gè)神經(jīng)網(wǎng)絡(luò)的最后一層中,在這其中,所有常規(guī)的技巧和常規(guī)提示在傳統(tǒng)的ANN中仍然是適用的。CNN與傳統(tǒng)人工神經(jīng)網(wǎng)絡(luò)唯一顯著的區(qū)別是,CNN主要用于圖像的模式識(shí)別領(lǐng)域。這使得我們可以將特定于圖像的特征編碼到體系結(jié)構(gòu)中,使網(wǎng)絡(luò)更適合以圖像為中心的任務(wù)——同時(shí)進(jìn)一步減少建立模型所需的參數(shù)。卷積神經(jīng)網(wǎng)絡(luò)由三種類型的層組成。這些層可以依次分為卷積層、池層和完全連接層。當(dāng)這些層被放在一起堆積起來(lái)的時(shí)候,就形成了一個(gè)卷積神經(jīng)網(wǎng)絡(luò)的基本架構(gòu)。一個(gè)簡(jiǎn)化的CNNMNIST分類體系結(jié)構(gòu)如圖2-5所示。圖2-5一個(gè)簡(jiǎn)單的CNN架構(gòu),僅包含5層上面的CNN示例的基本功能可以分為四個(gè)關(guān)鍵區(qū)域:與其他形式的人工神經(jīng)網(wǎng)絡(luò)一樣,輸入層將保存圖像的像素值。卷積層通過(guò)計(jì)算神經(jīng)元的權(quán)值與與輸入體積相連的區(qū)域之間的標(biāo)量積來(lái)確定連接到輸入局部區(qū)域的神經(jīng)元的輸出。整流線性單元(通常簡(jiǎn)稱為ReLU)旨在應(yīng)用一個(gè)“elementwise”激活函數(shù),如sigmoid,用于前一層產(chǎn)生的激活的輸出。然后池化層將進(jìn)行簡(jiǎn)單的向下采樣,而這樣本則是沿著給定輸入的維度空間得來(lái)的,進(jìn)一步減少處于激活中的參數(shù)數(shù)量。然后,完全連接的層將執(zhí)行與標(biāo)準(zhǔn)ANN相同的職責(zé),并嘗試從激活產(chǎn)生類別分?jǐn)?shù),用于分類。為了提高性能,還建議在這些層之間使用ReLU。2.5循環(huán)神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)一個(gè)標(biāo)準(zhǔn)的循環(huán)神經(jīng)網(wǎng)絡(luò)(RecurrentNeuralNetwork,RNN)如圖2-6所示??梢钥闯?,隱含層的輸出和輸入節(jié)點(diǎn)之間存在獨(dú)特的反饋連接。遞歸神經(jīng)網(wǎng)絡(luò)的輸出與輸入之間的關(guān)系可以描述為:?(t)=fWi?x其中t=1,2,...,n圖2-6RNN架構(gòu)其中和表示在時(shí)步t時(shí),整個(gè)網(wǎng)絡(luò)的輸入數(shù)據(jù)和輸出數(shù)據(jù)。表示隱藏層在時(shí)步t時(shí)所呈現(xiàn)出來(lái)的臨時(shí)狀態(tài)(并非不變的),且被設(shè)為0。和分別表示輸入隱藏層和輸出隱藏層之間的權(quán)重矩陣。而為時(shí)步t?1時(shí)最后一個(gè)隱藏狀態(tài)與時(shí)步t時(shí)當(dāng)前隱藏狀態(tài)之間的遞歸權(quán)矩陣。和分別給出了隱藏層和輸出層的偏差。f(x)和g(x)是隱層和輸出層的活動(dòng)函數(shù)。最常見(jiàn)的函數(shù)是sigmoid和softmax函數(shù),如下所示:(2-15)(2-16)一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)必須針對(duì)每一個(gè)特定的任務(wù)進(jìn)行訓(xùn)練。遞歸神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法為時(shí)間反向傳播(BPTT)[7]。其核心思想是截?cái)酂o(wú)限遞歸,將網(wǎng)絡(luò)擴(kuò)展為有限前饋網(wǎng)絡(luò)。然后可以像其他前饋網(wǎng)絡(luò)結(jié)構(gòu)一樣訓(xùn)練擴(kuò)展的網(wǎng)絡(luò),方法是(i).計(jì)算給定輸入數(shù)據(jù)的網(wǎng)絡(luò)的實(shí)際輸出,(ii).通過(guò)逐層反向傳播實(shí)際輸出和期望輸出之間的偏差來(lái)更新每個(gè)矩陣的權(quán)值。每個(gè)權(quán)重()的更新可以表示為:wji←其中η表示學(xué)習(xí)速率;是在時(shí)步t時(shí),從相鄰層的節(jié)點(diǎn)j反向傳播過(guò)來(lái)的誤差。T為訓(xùn)練循環(huán)神經(jīng)網(wǎng)絡(luò)的BPTT步驟,是節(jié)點(diǎn)i的輸入值。當(dāng)選擇softmax函數(shù)作為輸出層的激活函數(shù)時(shí),以交叉熵作為損失函數(shù),則輸出層節(jié)點(diǎn)p的誤差導(dǎo)數(shù)()可計(jì)算如下:δp其中,和分別表示循環(huán)神經(jīng)網(wǎng)絡(luò)的實(shí)際的輸出值和期望的輸出值。當(dāng)隱藏層的激活函數(shù)為sigmoid的時(shí)候,在隱藏層中的k節(jié)點(diǎn)的誤差導(dǎo)數(shù)()為:δk(f′(x)=f(x其中是隱藏層中k節(jié)點(diǎn)在時(shí)步t時(shí)的輸出,f(x)是隱藏層的激活函數(shù)。是反向傳播誤差隨著時(shí)間的積累。和分別表示式(2-13)和(2-14)中和的權(quán)重。是輸出層在同一時(shí)步t時(shí)的誤差,是從相鄰時(shí)步t+1反向傳播的隱藏層誤差,且應(yīng)該被設(shè)為0。圖2-7截?cái)嗟挠?xùn)練RNN需要注意的是,雖然擴(kuò)展的循環(huán)神經(jīng)網(wǎng)絡(luò)看起來(lái)像一個(gè)深度神經(jīng)網(wǎng)絡(luò),但在擴(kuò)展的循環(huán)神經(jīng)網(wǎng)絡(luò)中應(yīng)該只有3個(gè)不同的權(quán)重矩陣()。換句話說(shuō),不同時(shí)間步長(zhǎng)的對(duì)應(yīng)層之間的權(quán)值矩陣(圖2-7中相同顏色的箭頭)必須一起更新并保持一樣,因?yàn)樗鼈儊?lái)自同一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)。
3深度學(xué)習(xí)中的激活函數(shù)3.1簡(jiǎn)介激活函數(shù)是神經(jīng)網(wǎng)絡(luò)中用來(lái)計(jì)算輸入和偏差的加權(quán)之和的函數(shù),神經(jīng)元能否被觸發(fā)就是由激活函數(shù)來(lái)決定的。激活函數(shù)將會(huì)通過(guò)一系列的梯度處理(這里一般指的是梯度下降)對(duì)所得到的數(shù)據(jù)進(jìn)行處理,然后會(huì)產(chǎn)生一個(gè)輸出提供給神經(jīng)網(wǎng)絡(luò),這其中也包括了數(shù)據(jù)中所含有的參數(shù)。
激活函數(shù)在神經(jīng)網(wǎng)絡(luò)中,不僅可以是線性的,還可以是非線性的,而這又取決于它所代表的功能,并用于控制伸進(jìn)網(wǎng)絡(luò)的輸出,跨越不同的領(lǐng)域,從最基本的目標(biāo)識(shí)別和分類,再到演講識(shí)別,分割,場(chǎng)景理解和描述,機(jī)器翻譯、測(cè)試到語(yǔ)音系統(tǒng),癌癥探測(cè)系統(tǒng),指紋檢測(cè),天氣預(yù)報(bào),自動(dòng)駕駛汽車和一些其他的領(lǐng)域,早期的研究成果明確地表示出了,只要正確地選擇了激活函數(shù),神經(jīng)網(wǎng)絡(luò)的計(jì)算結(jié)果將會(huì)得到很大的改善與提高。
而在神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)所存在的位置則取決于其在網(wǎng)絡(luò)中的功能,所以,當(dāng)激活函數(shù)被放在隱藏層時(shí),它將學(xué)習(xí)到的線形映射轉(zhuǎn)換成為非線性的形式之后進(jìn)行傳播,當(dāng)其在輸出層的時(shí)候,它的作用則是進(jìn)行預(yù)測(cè)。3.2幾種常見(jiàn)的激活函數(shù)3.2.1Sigmoid函數(shù)在一些文獻(xiàn)中[8],Sigmoid激活函數(shù)有的時(shí)候也會(huì)被稱為其他的名字,如在這里可以稱作壓縮函數(shù)或者邏輯函數(shù)。Sigmoid函數(shù)是一種非線性的激活函數(shù),且最常見(jiàn)的是被應(yīng)用于前饋神經(jīng)網(wǎng)絡(luò)中。它是一個(gè)有界且可微的實(shí)函數(shù),定義為實(shí)輸入值,處處為正導(dǎo)數(shù),而且該函數(shù)具有一定的平滑度。Sigmoid函數(shù)可以由下列函數(shù)式子給出:(3-1)其圖像為圖3-1Sigmoid函數(shù)圖像Neal[9]強(qiáng)調(diào)了Sigmoid函數(shù)的主要優(yōu)點(diǎn),簡(jiǎn)單易懂,主要運(yùn)用于淺層函數(shù)。與之相對(duì)應(yīng)的,Sigmoid激活函數(shù)的不足之處也是很容易被發(fā)現(xiàn)的,這其中就包括有當(dāng)從更深的隱藏層向輸入層進(jìn)行反向傳播的過(guò)程時(shí)有可能會(huì)產(chǎn)生的一系列副作用,而在這其中就包括有急劇阻尼梯度、梯度飽和、收斂速度過(guò)于緩慢和以非零中心的輸出,最終將會(huì)導(dǎo)致系統(tǒng)在不同的方向上進(jìn)行梯度更新。3.2.2Tanh函數(shù)雙曲正切函數(shù)即Tanh函數(shù),是一個(gè)光滑的[10]零中心函數(shù),其范圍在-1到1之間,因此Tanh函數(shù)的輸出為:(3-2)其圖像為圖3-2tanh函數(shù)圖像對(duì)于多層神經(jīng)網(wǎng)絡(luò),tanh函數(shù)與sigmoid函數(shù)相比,在訓(xùn)練的時(shí)候展現(xiàn)出了更好的性能與效果,所以成為了該情況下的首選函數(shù)。但是,tanh函數(shù)和sigmoid函數(shù)一樣,也不能很好地解決梯度消散問(wèn)題。該函數(shù)的優(yōu)點(diǎn)是它產(chǎn)生的輸出為零中心輸出,從而可以起到幫助反向傳播過(guò)程的作用。3.2.3ReLU函數(shù)整流線性單元(ReLU)激活函數(shù)是在2010年提出的,而提出該激活函數(shù)的科學(xué)家是Nair和Hinton,從那以后,在深度學(xué)習(xí)中,建立神經(jīng)網(wǎng)絡(luò)時(shí)人們更喜歡選擇ReLU激活函數(shù),而ReLU函數(shù)也取得了從深度學(xué)習(xí)創(chuàng)立最初到現(xiàn)在最顯著地成果。ReLU是一種十分特別的激活函數(shù),它不僅可以進(jìn)行快速的學(xué)習(xí),并且還被證明是目前為止效果最好函數(shù),在多個(gè)領(lǐng)域均可以用到ReLU激活函數(shù)[11]。與另外兩只比較常見(jiàn)的激活函數(shù)——Sigmoid和tanh激活函數(shù)相比,它在深度學(xué)習(xí)中提供了更好的性能和泛化。ReLU代表了一個(gè)近似線性的函數(shù),因此保留了線性模型的特性,這使得很容易便可以通過(guò)梯度下降方法對(duì)ReLU函數(shù)進(jìn)行優(yōu)化。ReLU函數(shù)會(huì)對(duì)每個(gè)輸入的值進(jìn)行一個(gè)預(yù)處理,其中小于零的值會(huì)被當(dāng)成0來(lái)看待,因此,ReLU函數(shù)由下列式子定義:f(x其函數(shù)圖像為圖3-3ReLU函數(shù)圖像ReLU函數(shù)最顯著地優(yōu)點(diǎn)是它的計(jì)算速度快,因?yàn)樵摵瘮?shù)不計(jì)算指數(shù)和除法。然而ReLU函數(shù)也存在著一個(gè)明顯的局限性,在整個(gè)訓(xùn)練過(guò)程中,它有時(shí)會(huì)表現(xiàn)得十分脆弱,進(jìn)一步將導(dǎo)致梯度消失現(xiàn)象的產(chǎn)生。3.2.4ELU函數(shù)指數(shù)線性單元(ELUs)是Clevertetal.,2015提出的另一種類型的激活函數(shù),用于加速深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。ELU函數(shù)被定義為:f(其圖像為圖3-4ELU函數(shù)圖像ELU的主要優(yōu)點(diǎn)是,該函數(shù)可以通過(guò)對(duì)正值使用恒等式來(lái)緩解梯度消失問(wèn)題的產(chǎn)生,并改進(jìn)學(xué)習(xí)特性。它們具有負(fù)值,允許將平均單元激活推近于零,從而減少計(jì)算復(fù)雜度,從而提高學(xué)習(xí)速度[12]。ELU代表了一個(gè)很好的替代ReLU,因?yàn)樗ㄟ^(guò)在訓(xùn)練期間將平均激活推向零來(lái)減少偏差偏移。然而,ELU的一個(gè)關(guān)鍵局限性是,ELU的值不以零為中心。
4不同激活函數(shù)的效果對(duì)比Fashion-MNIST數(shù)據(jù)集MNIST作為手寫(xiě)數(shù)字集,其數(shù)據(jù)結(jié)構(gòu)比較簡(jiǎn)單,而Fashion-MNIST是一個(gè)圖像數(shù)據(jù)集,其數(shù)據(jù)就更加趨于復(fù)雜。該數(shù)據(jù)集的由來(lái)是德國(guó)的一家時(shí)尚公司旗下的科技研發(fā)部門(mén),它按照人們?nèi)粘5拇┐畋环殖闪耸畟€(gè)類別,這其中有將近7萬(wàn)張不同物品的圖片,該數(shù)據(jù)集大致如下圖。圖4-1Fashion-MNIST數(shù)據(jù)集與MNIST數(shù)據(jù)集相比,F(xiàn)ashion-MNIST呈現(xiàn)出來(lái)的數(shù)據(jù)更加復(fù)雜,MNIST數(shù)據(jù)集結(jié)構(gòu)過(guò)于單調(diào),經(jīng)過(guò)實(shí)驗(yàn)我們發(fā)現(xiàn),MNIST數(shù)據(jù)集不再具有實(shí)際意義,因?yàn)檫\(yùn)用深度學(xué)習(xí)算法進(jìn)行訓(xùn)練后發(fā)現(xiàn),幾乎全部精確度均達(dá)到了驚人的95%以上,這就使得結(jié)果不具有比較意義。因此在這里,我選擇使用Fashion-MNIST數(shù)據(jù)集來(lái)替代普通的MNIST數(shù)據(jù)集。4.2不同激活函數(shù)的效果在該實(shí)驗(yàn)中,我選擇使用VisualStudioCode進(jìn)行。選擇學(xué)習(xí)率為0.015,進(jìn)行4650次迭代,分別使用Sigmoid激活函數(shù)、tanh激活函數(shù)、ReLU激活函數(shù)、ELU激活函數(shù)等進(jìn)行實(shí)驗(yàn),并保存每次迭代之后產(chǎn)生的數(shù)據(jù),最后通過(guò)Matplotlib繪制出整體精確度曲線圖進(jìn)行比較。4.2.1結(jié)果初步觀察對(duì)算法進(jìn)行運(yùn)行后,可以得到以下結(jié)果(部分):圖4-2ELU函數(shù)結(jié)果(部分)圖4-3LeakyReLU函數(shù)結(jié)果(部分)圖4-4Softplus函數(shù)結(jié)果(部分)由上述結(jié)果圖可以看出,對(duì)于不同的激活函數(shù),隨著迭代次數(shù)的增加,整個(gè)算法的精確度(accuracy)幾乎呈現(xiàn)出上升的趨勢(shì),只有極少數(shù)情況會(huì)出現(xiàn)精確度有所下降的情況。進(jìn)一步比較圖4-2、圖4-3和圖4-4中數(shù)據(jù),我們可以初步認(rèn)為,在相同條件下,Softplus函數(shù)表現(xiàn)出來(lái)的精確度最低,即使用該激活函數(shù)時(shí),整體的分類效果相較于ELU函數(shù)和LeakyReLU函數(shù)更差,而ELU和LeakyReLU則比較相近,可能隨著迭代次數(shù)的增加會(huì)出現(xiàn)更加明顯的偏差。4.2.2精確度曲線通過(guò)Matplotlib,可以繪制出下列精確度曲線圖:圖4-5精確度曲線圖由圖4-5可以看出,幾乎所有的激活函數(shù)都呈現(xiàn)出精確度先急劇上升,最后趨于穩(wěn)定的趨勢(shì)。其中selu函數(shù)是一個(gè)特例,可以發(fā)現(xiàn),該函數(shù)在上升后迅速下降,通過(guò)運(yùn)行結(jié)果我們發(fā)現(xiàn),從第300次迭代該是,loss便顯現(xiàn)出發(fā)散的現(xiàn)象,這表明在學(xué)習(xí)率為0.015的情況下,該激活函數(shù)不適用于此處。我們放大圖4-5中一小部分進(jìn)行觀察。圖4-6放大后的精確度圖觀察圖4-6中放大的局部圖,從中可以直觀的看出,在相同的迭代次數(shù)下與別的激活函數(shù)相比ReLU和ELU的準(zhǔn)確度相對(duì)更高,這與我們之前介紹的激活函數(shù)相符合。而相較于大多數(shù)激活函數(shù),Sigmoid函數(shù)的精確度普遍偏低,這也體現(xiàn)了Sigmoid函數(shù)的局限性。說(shuō)明針對(duì)該數(shù)據(jù)集,我們更傾向于選擇ELU和ReLU激活函數(shù)。通過(guò)修改學(xué)習(xí)率為0.001后,我們發(fā)現(xiàn)selu函數(shù)也可以正常使用了,下面展示部分?jǐn)?shù)據(jù):圖4-7更改學(xué)習(xí)率后selu函數(shù)的結(jié)果圖通過(guò)圖4-7中結(jié)果可以知道,雖然在降低學(xué)習(xí)率之后,該激活函數(shù)不在出現(xiàn)發(fā)散的情況,但發(fā)現(xiàn)其精確度并不高。再來(lái)觀察一下其精確度曲線:圖4-8selu函數(shù)對(duì)應(yīng)的精確度曲線與其他激活函數(shù)相比,在降低了學(xué)習(xí)率后可以發(fā)現(xiàn),該曲線更加平滑,即收斂速度更慢,但是降低學(xué)習(xí)率也達(dá)到了降低loss值的作用,由此可以推測(cè),若再次降低學(xué)習(xí)率,那么整體的精確度又將提高。5總結(jié)與展望5.1總結(jié)本篇文章的目的在于探究深度學(xué)習(xí)中激活函數(shù)的選擇問(wèn)題,在實(shí)驗(yàn)中,我定義了九種不同的激活函數(shù),其中也包括了現(xiàn)在用得最多的ReLU函數(shù),并通過(guò)Matplotlib繪制出了精確度曲線。在控制學(xué)習(xí)率為0.015的情況下,對(duì)圖片進(jìn)行分析發(fā)現(xiàn),相較于其他的激活函數(shù),ReLU函數(shù)的精確度相對(duì)較高,而Sigmoid函數(shù)的精確度則相對(duì)較低,這與我們最初的認(rèn)識(shí)是相符合的。然而在該情況下,selu函數(shù)表現(xiàn)出loss值發(fā)散的現(xiàn)象,可能是因?yàn)閷W(xué)習(xí)率太高,可能導(dǎo)致該系統(tǒng)的學(xué)習(xí)速度過(guò)快,這樣將會(huì)導(dǎo)致系統(tǒng)跳過(guò)一些重要信息,直接學(xué)習(xí)到后面的內(nèi)容。事實(shí)證明,當(dāng)我將系統(tǒng)的學(xué)習(xí)率降為0.001時(shí),整個(gè)網(wǎng)絡(luò)的loss值明顯下降,也提高了精確度,但是收斂的速度明顯下降??偟膩?lái)說(shuō),激活函數(shù)在深度學(xué)習(xí)中是不可被替代的一個(gè)環(huán)節(jié)。整個(gè)神經(jīng)網(wǎng)絡(luò)可以簡(jiǎn)單地劃分為三層,它們分別為輸入層、隱藏層以及輸出層,而激活函數(shù)一般則在隱藏層和輸出層作用。在深度學(xué)習(xí)算法中普遍出現(xiàn)的梯度消散以及梯度爆炸問(wèn)題,要想得到很好的解決,就要加深對(duì)激活函數(shù)的理解,面對(duì)不同的數(shù)據(jù)集時(shí),要找到最適合的激活函數(shù)還是存在著一定難度的,但是當(dāng)我們拿到一個(gè)未知的數(shù)據(jù)集時(shí),我們可以首先嘗試使用ReLU激活函數(shù),若結(jié)果不夠理想,則再替換其他的激活函數(shù)。5.2展望經(jīng)過(guò)長(zhǎng)時(shí)間對(duì)Deeplearning(深度學(xué)習(xí))相關(guān)知識(shí)的學(xué)習(xí),發(fā)現(xiàn)雖然該領(lǐng)域存在一定的難度,但是卻有著無(wú)限的未來(lái),現(xiàn)代人們的生活離不開(kāi)人工智能,而深度學(xué)習(xí)作為人工智能中不可或缺的環(huán)節(jié),有著很大的研究?jī)r(jià)值。本次畢業(yè)設(shè)計(jì)由于時(shí)間有限,所以不能更加深入地對(duì)深度學(xué)習(xí)領(lǐng)域進(jìn)行探究,希望在未來(lái)能有更多的機(jī)會(huì)接觸并研究該領(lǐng)域。在本文中,僅僅只是探究了不同激活函數(shù)對(duì)于Fashion-MNIST數(shù)據(jù)集的影響,所以不具有普遍性,在以后的研究中希望能夠?qū)Ω嗟臄?shù)據(jù)集進(jìn)行分析,并找出選擇激活函數(shù)的規(guī)律,比較各個(gè)激活函數(shù)的優(yōu)點(diǎn)與缺點(diǎn),找到最適合的激活函數(shù)。
參考文獻(xiàn)[1]XiaoweiHuangetal.Safetyandtrustworthinessofdeepneuralnetworks:Asurvey.arXivpreprintarXiv:1812.08342,2018[2]D.E.Rumelhart,G.EHintonandR.J.Williams,"LearningRepresentationsbyBack-PropagatingErrors,"Nature,vol.323,pp.533-536,1986.[3]M.T.Hagan,M.B.Menhaj,"TrainingFeedforwardNetworkswiththeMarquardtAlgorithm,"IEEETrans.onNeuralNetworks,vol.5,no.6,pp.989-993,Nov.1994.[4]B.M.WilamowskiandH.Yu,"ImprovedComputationforLevenbergMarquardtTraining,"IEEETrans.onNeuralNetworks,vol.21,no.6,pp.930-937,June2010.[5]B.M.WilamowskiandH.Yu,"NeuralNetworkLearningWithoutBackpropagation,"IEEETrans.onNeuralNetworks,vol.21,no.11,pp.1793-1803,Nov.2010.[6]LiuJunhua,IntelligentSensorSystem.Xian:XidianUniversitypress.1999.382-385.(inChinese)[7]M.Bodén,“Aguidetorecurrentneuralnetworksandbackpropagation,”TheDallasproject,SICStechnicalreport,2002.[8]J.Turian,J.Bergstra,andY.Bengio,“Quadraticfeaturesanddeeparchitecturesforchunking,”inProceedingsofHumanLanguageTechnologies:The2009AnnualConferenceoftheNorthAmericanChapteroftheAssociationforComputationalLinguistics,vol.CompanionVolume:2009,pp.245–248.[Online].Available:/citation.cfm[9]R.M.Neal,“Connectionistlearningofbeliefnetworks,”ArtificialIntelligence,vol.56,no.1,pp.71–113,1992.[Online].Available:/10.1016/0004-3702(92)90065-6[10]Y.LeCun,Y.Bengio,andG.Hinton,“Deeplearning,”Nature,vol.521,no.7553,pp.436–444,2015.[Online].Available:/10.1038/nature14539[11]P.Ramachandran,B.Zoph,andQ.V.Le,“SearchingforActivationFunctions”ArXiv,2017.[Online].Available:1710.05941;/abs/1710.05941[12]D.A.Clevert,T.Unterthiner,andS.Hochreiter,“FastandAccurateDeepNetworkLearningbyExponentialLinearUnits(ELUs),”arXiv,2015.[Online].Available:/abs/1511.07289
附錄附上此次實(shí)驗(yàn)的代碼:importtorchfromtorchimportnnfromtorchvisionimportdatasetsimportactivation_selffromtorch.autogradimportVariableimporttorchvision.transformsastransformsimportnumpyasnp#importvisdomimporttorchvision#數(shù)據(jù)預(yù)處理transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,),(0.5,))])#訓(xùn)練集trainset=datasets.FashionMNIST('./F_MNIST_data/',download=True,train=True,transform=transform)trainloader=torch.utils.data.DataLoader(trainset,batch_size=64,shuffle=True)#測(cè)試集testset=datasets.FashionMNIST('./F_MNIST_data/',download=True,train=False,transform=transform)testloader=torch.utils.data.DataLoader(testset,batch_size=64,shuffle=True)classCNNModule(nn.Module):def__init__(self):super(CNNModule,self).__init__()n1=nn.Conv2d(in_channels=1,out_channels=16,kernel_size=5,stride=1,padding=2)self.relu1=nn.ELU()nn.init.xavier_uniform_(n1.weight)self.maxpool1=nn.MaxPool2d(kernel_size=2)n2=nn.Conv2d(in_channels=16,out_channels=32,kernel_size=5,stride=1,padding=2)#此處進(jìn)行調(diào)試自己實(shí)現(xiàn)的激活函數(shù),并進(jìn)行對(duì)比#self.relu2=activation_self.my_sigmoid_()#使用自己定義的Sigmoid激活函數(shù)#self.relu2=activation_self.my_tanh_()#使用自己定義的Tanh激活函數(shù)#self.relu2=activation_self.my_relu_.apply
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業(yè)健康促進(jìn)與員工健康權(quán)益保障
- 長(zhǎng)沙2025年湖南長(zhǎng)沙工業(yè)學(xué)院引進(jìn)博士人才筆試歷年參考題庫(kù)附帶答案詳解
- 金華浙江金華市民政局編外用工招聘筆試歷年參考題庫(kù)附帶答案詳解
- 職業(yè)健康與女職工發(fā)展平衡策略-1
- 溫州2025年浙江溫州市龍灣區(qū)人民檢察院聘用制書(shū)記員招錄筆試歷年參考題庫(kù)附帶答案詳解
- 瀘州2025年四川瀘州市江陽(yáng)區(qū)教育系統(tǒng)招聘教師3人筆試歷年參考題庫(kù)附帶答案詳解
- 江門(mén)廣東江門(mén)恩平市基層農(nóng)技推廣體系改革與建設(shè)項(xiàng)目特聘農(nóng)技員遴選筆試歷年參考題庫(kù)附帶答案詳解
- 昭通云南昭通彝良縣醫(yī)共體總醫(yī)院龍海分院招聘合同制人員筆試歷年參考題庫(kù)附帶答案詳解
- 恩施2025年湖北恩施州中心醫(yī)院招聘筆試歷年參考題庫(kù)附帶答案詳解
- 常州2025年江蘇常州經(jīng)開(kāi)區(qū)社會(huì)保障和衛(wèi)生健康局下屬事業(yè)單位招聘19人筆試歷年參考題庫(kù)附帶答案詳解
- 果農(nóng)水果出售合同范本
- 2025年事業(yè)單位聯(lián)考A類職測(cè)真題及答案
- DB11-T 693-2024 施工現(xiàn)場(chǎng)臨建房屋應(yīng)用技術(shù)標(biāo)準(zhǔn)
- 起重機(jī)械安全風(fēng)險(xiǎn)辨識(shí)報(bào)告
- 2025年山東省村級(jí)后備干部選拔考試題(含答案)
- 村社長(zhǎng)考核管理辦法
- 兒童顱咽管瘤臨床特征與術(shù)后復(fù)發(fā)風(fēng)險(xiǎn)的深度剖析-基于151例病例研究
- 防潮墻面涂裝服務(wù)合同協(xié)議
- GB/T 15237-2025術(shù)語(yǔ)工作及術(shù)語(yǔ)科學(xué)詞匯
- 外賣跑腿管理制度
- 冷鏈物流配送合作協(xié)議
評(píng)論
0/150
提交評(píng)論