




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/PPT論壇:
1.1深度學(xué)習(xí)有多深?1.2深度學(xué)習(xí)如何學(xué)?1.3深度學(xué)習(xí)如何提速?1.4主流深度學(xué)習(xí)框架1.5本書內(nèi)容與體系結(jié)構(gòu)第一章初識深度學(xué)習(xí)1.1深度學(xué)習(xí)有多深?本章從深度學(xué)習(xí)有多深、深度學(xué)習(xí)發(fā)展路徑、深度學(xué)習(xí)如何學(xué)、深度學(xué)習(xí)如何提速等方面入手,初識深度學(xué)習(xí)概念、硬件支持系統(tǒng)、主流軟件框架、應(yīng)用平臺體系。摘要1.1.1深度學(xué)習(xí)概念深度學(xué)習(xí)(DL,DeepLearning)的概念最早由多倫多大學(xué)的G.E.Hinton等[1]于2006年提出,是基于樣本數(shù)據(jù)通過一定的訓(xùn)練方法得到包含多個層級的深度網(wǎng)絡(luò)結(jié)構(gòu)的機器學(xué)習(xí)(ML,MachineLearning)過程[2]。機器學(xué)習(xí)通常以使用決策樹、推導(dǎo)邏輯規(guī)劃、聚類、貝葉斯網(wǎng)絡(luò)等傳統(tǒng)算法對結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行分析為基礎(chǔ),對真實世界中的事件做出決策和預(yù)測。深度學(xué)習(xí)被引入機器學(xué)習(xí)使其更接近于最初的目標(biāo)—人工智能(AI,ArtificialIntelligence),其動機在于建立模型模擬人類大腦的神經(jīng)連接結(jié)構(gòu),通過組合低層特征形成更加抽象的高層表示、屬性類別或特征,給出數(shù)據(jù)的分層特征表示;1.1深度學(xué)習(xí)有多深?它從數(shù)據(jù)中提取知識來解決和分析問題時,使用人工神經(jīng)網(wǎng)絡(luò)算法,允許發(fā)現(xiàn)分層表示來擴展標(biāo)準(zhǔn)機器學(xué)習(xí)。這些分層表示能夠解決更復(fù)雜的問題,并且以更高的精度、更少的觀察和更簡便的手動調(diào)諧,潛在地解決其他問題。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)隨機初始化網(wǎng)絡(luò)權(quán)值,很容易導(dǎo)致網(wǎng)絡(luò)收斂到局部最小值。為解決這一問題,Hinton提出使用無監(jiān)督預(yù)訓(xùn)練方法優(yōu)化網(wǎng)絡(luò)初始權(quán)值,再進(jìn)行權(quán)值微調(diào),拉開了深度學(xué)習(xí)的序幕。深度學(xué)習(xí)所得到的深度網(wǎng)絡(luò)結(jié)構(gòu)包含大量的單一元素(神經(jīng)元),每個神經(jīng)元與大量其他神經(jīng)元相連接,神經(jīng)元間的連接強度(權(quán)值)在學(xué)習(xí)過程中修改并決定網(wǎng)絡(luò)的功能。1.1深度學(xué)習(xí)有多深?通過深度學(xué)習(xí)得到的深度網(wǎng)絡(luò)結(jié)構(gòu)符合神經(jīng)網(wǎng)絡(luò)的特征[3],因此深度網(wǎng)絡(luò)就是深層次的神經(jīng)網(wǎng)絡(luò),即深度神經(jīng)網(wǎng)絡(luò)(deepneuralnetworks,DNN)。深度神經(jīng)網(wǎng)絡(luò)是由多個單層非線性網(wǎng)絡(luò)疊加而成的[4-5],常見的單層網(wǎng)絡(luò)按照編碼解碼情況分為3類:只包含編碼器部分、只包含解碼器部分、既有編碼器部分也有解碼器部分。編碼器提供從輸入到隱含特征空間的自底向上的映射,解碼器以重建結(jié)果盡可能接近原始輸入為目標(biāo)將隱含特征映射到輸入空間[6]。深度神經(jīng)網(wǎng)絡(luò)分為以下3類(如圖1.1所示)。1.1深度學(xué)習(xí)有多深?(1)前饋深度網(wǎng)絡(luò)(feed-forwarddeepnetworks,F(xiàn)FDN),由多個編碼器層疊加而成,如多層感知機(multi-layerperceptrons,MLP)[7-8]、卷積神經(jīng)網(wǎng)絡(luò)(convolutionalneuralnetworks,CNN)[9-10]等。(2)反饋深度網(wǎng)絡(luò)(feed-backdeepnetworks,F(xiàn)BDN),由多個解碼器層疊加而成,如反卷積網(wǎng)絡(luò)(deconvolutionalnetworks,DN)[11]、層次稀疏編碼網(wǎng)絡(luò)(hierarchicalsparsecoding,HSC)[12]等。(3)雙向深度網(wǎng)絡(luò)(bi-directionaldeepnetworks,BDDN),通過疊加多個編碼器層和解碼器層構(gòu)成(每層可能是單獨的編碼過程或解碼過程,也可能既包含編碼過程也包含解碼過程),如深度玻爾茲曼機(DeepBoltzmannMachines,DBM)[13-14]、深度信念網(wǎng)絡(luò)(deepbeliefnetworks,DBN)[15]、棧式自編碼器(stackedauto-encoders,SAE)[16-17]等。1.1深度學(xué)習(xí)有多深?圖1.1深度神經(jīng)網(wǎng)絡(luò)分類1.1.2深度學(xué)習(xí)發(fā)展1.1深度學(xué)習(xí)有多深?1.深度學(xué)習(xí)發(fā)展沿革深度學(xué)習(xí)是神經(jīng)網(wǎng)絡(luò)發(fā)展到一定時期的產(chǎn)物。最早的神經(jīng)網(wǎng)絡(luò)模型可以追溯到1943年McCulloch等提出的McCulloch-Pitts計算結(jié)構(gòu),簡稱MP模型[18],它大致模擬了人類神經(jīng)元的工作原理,但需要手動設(shè)置權(quán)重,十分不便。1958年,Rosenblatt提出了感知機模型(perceptron)[19]。與MP模型相比,感知機模型能更自動合理地設(shè)置權(quán)重,但1969年Minsky和Paper證明了感知機模型只能解決線性可分問題,并且否定了多層神經(jīng)網(wǎng)絡(luò)訓(xùn)練的可能性,甚至提出了“基于感知機的研究終會失敗”的觀點,此后十多年的時間內(nèi),神經(jīng)網(wǎng)絡(luò)領(lǐng)域的研究基本處于停滯狀態(tài)。1986年,欣頓(GeofferyHinton)和羅姆哈特(DavidRumelhart)等提出的反向傳播(BackPropagation,BP)算法,解決了兩層神經(jīng)網(wǎng)絡(luò)所需要的復(fù)雜計算量問題,大大減少了原來預(yù)計的計算量,這不僅有力回?fù)袅薓insky等人的觀點,更引領(lǐng)了神經(jīng)網(wǎng)絡(luò)研究的第二次高潮。隨著20世紀(jì)80年代末到90年代初共享存儲器方式的大規(guī)模并行計算機的出現(xiàn),計算處理能力大大提升,深度學(xué)習(xí)有了較快的發(fā)展。1989年,YannLeCun等提出的卷積神經(jīng)網(wǎng)絡(luò)是一種包含卷積層的深度神經(jīng)網(wǎng)絡(luò)模型,較早嘗試深度學(xué)習(xí)對圖像的處理。1.1深度學(xué)習(xí)有多深?2012年,Hinton構(gòu)建深度神經(jīng)網(wǎng)絡(luò),并應(yīng)用于ImageNet上,取得了質(zhì)的提升和突破,同年,人們逐漸熟悉谷歌大腦(GoogleBrain)團(tuán)隊。2013年,歐洲委員會發(fā)起模仿人腦的超級計算機項目,百度宣布成立深度學(xué)習(xí)機構(gòu)。2014年,深度學(xué)習(xí)模型Top-5在ImageNet2014計算機識別競賽上拔得頭籌,騰訊和京東也同時分別成立了自己的深度學(xué)習(xí)研究室。2015年至2017年初,谷歌公司的人工智能團(tuán)隊DeepMind所創(chuàng)造的阿爾法狗(AlphaGo)相繼戰(zhàn)勝了人類職業(yè)圍棋選手,這只“狗”引起世界的關(guān)注,人類圍棋大師們陷入沉思。這一切都顯著地表明了一個事實:深度學(xué)習(xí)正在有條不紊地發(fā)展著,其影響力不斷擴大。深度學(xué)習(xí)發(fā)展沿革,如圖1.2所示[20]。圖1.2深度學(xué)習(xí)發(fā)展主線1.1深度學(xué)習(xí)有多深?機器學(xué)習(xí)和深度學(xué)習(xí)之間的關(guān)系是包含與被包含的關(guān)系,如圖1.3所示。圖1.3機器學(xué)習(xí)和深度學(xué)習(xí)之間的關(guān)系1.1深度學(xué)習(xí)有多深?2.深度學(xué)習(xí)的局限瓶頸1.1深度學(xué)習(xí)有多深?深度神經(jīng)網(wǎng)絡(luò)(DNN)是一個強大的框架,可應(yīng)用于各種業(yè)務(wù)問題。當(dāng)前,深度學(xué)習(xí)仍有一定的局限。第一,深度學(xué)習(xí)技術(shù)具有啟發(fā)式特征。深度學(xué)習(xí)能否解決一個給定的問題還暫無定論,因為目前還沒有數(shù)學(xué)理論可以表明一個“足夠好”的深度學(xué)習(xí)解決方案是存在的。該技術(shù)是啟發(fā)式的,工作即代表有效。第二,深度學(xué)習(xí)技術(shù)具有不可預(yù)期性。深度學(xué)習(xí)涉及的諸多隱含層,屬“黑箱模型”,會破壞合規(guī)性,對白箱模型形成挑戰(zhàn)。第三,深度學(xué)習(xí)系統(tǒng)化具有不成熟性。目前,沒有適合所有行業(yè)或企業(yè)需要的通用深度學(xué)習(xí)網(wǎng)絡(luò),各行業(yè)或企業(yè)需要混合和匹配可用工具創(chuàng)建自己的解決方案,并與更新迭代的軟件相互兼容。第四,部分錯誤的結(jié)果造成不良影響。目前,深度學(xué)習(xí)不能以100%精度解決問題。深度學(xué)習(xí)延續(xù)了較淺層機器學(xué)習(xí)的大多數(shù)風(fēng)險和陷阱。第五,深度學(xué)習(xí)的學(xué)習(xí)速度不如人意。深度學(xué)習(xí)系統(tǒng)需要進(jìn)行大量訓(xùn)練才有可能成功1.1深度學(xué)習(xí)有多深?盡管深度學(xué)習(xí)在圖像識別、語音識別等領(lǐng)域都得到落地和應(yīng)用,涌現(xiàn)出了依圖、商湯、寒武紀(jì)等人工智能企業(yè),但是深度學(xué)習(xí)依舊存在困擾產(chǎn)學(xué)研的瓶頸。第一,數(shù)據(jù)瓶頸。幾乎所有的深度神經(jīng)網(wǎng)絡(luò)都需要大量數(shù)據(jù)作為訓(xùn)練樣本,如果無法獲取大量的標(biāo)注數(shù)據(jù),深度學(xué)習(xí)無法展開。雖然谷歌等互聯(lián)網(wǎng)巨頭開始研發(fā)人造數(shù)據(jù)技術(shù),但是真正的效果還有待評估。第二,認(rèn)知瓶頸。這是由深度學(xué)習(xí)的特性決定。深度學(xué)習(xí)對感知型任務(wù)支持較好,而對認(rèn)知型任務(wù)支持的層次較低,無法形成理解、直覺、頓悟和自我意識的能力??茖W(xué)家推斷,可能是這一切源于人類知識認(rèn)識的局限,而深度學(xué)習(xí)在某些方面已經(jīng)超越了人類的認(rèn)知能力和認(rèn)知范圍。1.2深度學(xué)習(xí)如何學(xué)?1.2.1機器學(xué)習(xí)的一般方法機器學(xué)習(xí)按照方法可以分為兩大類:監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)。其中,監(jiān)督學(xué)習(xí)主要由分類和回歸等問題組成,無監(jiān)督學(xué)習(xí)主要由聚類和關(guān)聯(lián)分析等問題組成。深度學(xué)習(xí)屬于監(jiān)督學(xué)習(xí)中的一種。監(jiān)督學(xué)習(xí)的一般方法,如圖1.4所示[20]。圖1.4監(jiān)督學(xué)習(xí)的一般方法1.2深度學(xué)習(xí)如何學(xué)?1.2.1深度學(xué)習(xí)的一般方法隨著深度學(xué)習(xí)的爆發(fā),最新的深度學(xué)習(xí)算法已經(jīng)遠(yuǎn)遠(yuǎn)超越了傳統(tǒng)的機器學(xué)習(xí)算法對于數(shù)據(jù)的預(yù)測和分類精度。深度學(xué)習(xí)不需要自己去提取特征,而是自動地對數(shù)據(jù)進(jìn)行篩選,自動地提取數(shù)據(jù)高維特征。在模型訓(xùn)練階段,使用大量有標(biāo)簽的或沒標(biāo)簽的樣本進(jìn)行訓(xùn)練和學(xué)習(xí),建立深度神經(jīng)網(wǎng)絡(luò)模型;在預(yù)測階段,基于已學(xué)習(xí)模型,提取數(shù)據(jù)更加抽象的特征表示。圖1.5為深度學(xué)習(xí)的一般方法,與傳統(tǒng)機器學(xué)習(xí)中的監(jiān)督學(xué)習(xí)一般方法(圖1.4)相比,少了特征工程,節(jié)約了工程師們大量工作時間。1.2深度學(xué)習(xí)如何學(xué)?圖1.5深度學(xué)習(xí)的一般方法在這兩個階段,都需要進(jìn)行大量的運算操作,隨著深度神經(jīng)網(wǎng)絡(luò)模型層數(shù)的增多,與之相對應(yīng)的權(quán)重參數(shù)也以幾何級倍數(shù)增長,從而對硬件的計算能力有著越來越高的需求。1.3深度學(xué)習(xí)如何提速?要對深度學(xué)習(xí)進(jìn)行提速,就要明白深度學(xué)習(xí)的應(yīng)用系統(tǒng)架構(gòu),如圖1.6所示[20]。圖1.6表明,該系統(tǒng)由硬件支持系統(tǒng)、深度學(xué)習(xí)框架、支持技術(shù)系統(tǒng)和應(yīng)用層面4個部分構(gòu)成。該應(yīng)用系統(tǒng),首先要有一個巨大的數(shù)據(jù)集,并選定一種深度學(xué)習(xí)模型,每個模型都有一些內(nèi)部參數(shù)需要調(diào)整,以便學(xué)習(xí)數(shù)據(jù)。而這種參數(shù)調(diào)整實際上可以歸結(jié)為優(yōu)化問題,在調(diào)整這些參數(shù)時,就相當(dāng)于優(yōu)化特定的約束條件。圖1.6深度學(xué)習(xí)的應(yīng)用系統(tǒng)架構(gòu)1.3深度學(xué)習(xí)如何提速?百度的硅谷人工智能實驗室(SVAIL)已經(jīng)為深度學(xué)習(xí)硬件提出了DeepBench基準(zhǔn),這一基準(zhǔn)著重衡量基本計算的硬件性能,而不是學(xué)習(xí)模型的表現(xiàn)。這種方法旨在找到使計算變慢或低效的瓶頸。因此,重點在于設(shè)計一個對于深層神經(jīng)網(wǎng)絡(luò)訓(xùn)練的基本操作執(zhí)行效果最佳的架構(gòu)。那么基本操作有哪些呢?現(xiàn)在的深度學(xué)習(xí)DeepBench基準(zhǔn),提出四種基本運算:(1)矩陣相乘(MatrixMultiplication)—幾乎所有的深度學(xué)習(xí)模型都包含這一運算,它的計算十分密集。(2)卷積(Convolution)—這是另一個常用的運算,占用了模型中大部分的每秒浮點運算(浮點/秒)。(3)循環(huán)層(RecurrentLayers)—模型中的反饋層,并且基本上是前兩個運算的組合。(4)AllReduce——這是一個在優(yōu)化前對學(xué)習(xí)到的參數(shù)進(jìn)行傳遞或解析的運算序列。在跨硬件分布的深度學(xué)習(xí)網(wǎng)絡(luò)上執(zhí)行同步優(yōu)化時(如AlphaGo的例子),這一操作尤其有效。1.3深度學(xué)習(xí)如何提速?除此之外,深度學(xué)習(xí)的硬件加速器需要具備數(shù)據(jù)級別和流程化的并行性、多線程和高內(nèi)存帶寬等特性。另外,由于數(shù)據(jù)的訓(xùn)練時間很長,所以硬件架構(gòu)必須低功耗。因此,效能功耗比(PerformanceperWatt)是硬件架構(gòu)的評估標(biāo)準(zhǔn)之一。為了解決CPU在大量數(shù)據(jù)運算效率低能耗高的問題,目前有兩種發(fā)展路線:一是延用傳統(tǒng)馮諾依曼架構(gòu),主要以3種類型芯片為代表:GPU、FPGA、ASIC;二是采用人腦神經(jīng)元結(jié)構(gòu)設(shè)計的芯片,已完全擬人化為目標(biāo),追求在芯片架構(gòu)上不斷逼近人腦,這類芯片被稱為類腦芯片。1.3深度學(xué)習(xí)如何提速?1.3.1基于馮諾依曼架構(gòu)的加速芯片基于馮·諾依曼結(jié)構(gòu)的計算機將程序和處理該程序的數(shù)據(jù)用同樣的方式分別存儲在兩個區(qū)域,一個為指令集,一個為數(shù)據(jù)集。計算機每次進(jìn)行運算時需要在CPU和內(nèi)存這兩個區(qū)域往復(fù)調(diào)用,因而在雙方之間產(chǎn)生數(shù)據(jù)流量。而隨著深度學(xué)習(xí)算法的出現(xiàn),對芯片計算力的要求不斷提高,馮·諾伊曼瓶頸愈加明顯:當(dāng)CPU需要在巨大的資料上執(zhí)行一些簡單指令時,資料流量將嚴(yán)重降低整體效率,CPU將會在資料輸入或輸出時閑置。不僅如此,傳統(tǒng)芯片效率低。芯片工作時,大部分的電能將轉(zhuǎn)化為熱能,一個不帶散熱器的計算機,其CPU產(chǎn)生的熱量就可在短時間內(nèi)將其自身融化。其他的智能化設(shè)備,也因芯片復(fù)雜耗能太高,導(dǎo)致續(xù)航能力差,不管如何改善工藝,高溫和漏電都是難以避免的問題。1.3深度學(xué)習(xí)如何提速?1.GPU加速技術(shù)GPU(GraphicsProcessingUnit,圖形處理器)作為硬件加速器之一,通過大量圖形處理單元與CPU協(xié)同工作,對深度學(xué)習(xí)、數(shù)據(jù)分析,以及大量計算的工程應(yīng)用進(jìn)行加速。自2007年NVIDIA公司發(fā)布第一個支持CUDA(ComputeUnifiedDeviceArchitecture,統(tǒng)一計算設(shè)備架構(gòu))的GPU后,GPU越來越強大,能夠解決復(fù)雜的計算問題。(1)GPU與顯卡的區(qū)別顯卡也叫顯示適配器,分為獨立顯卡和主板上集成顯卡,獨立顯卡主要由GPU、顯存和接口電路構(gòu)成,集成顯卡沒有獨立顯存而是使用主板上的內(nèi)存。GPU是圖形處理器,一般是焊接在顯卡上,大部分情況下所說GPU就是指顯卡,但實際上GPU是顯示卡的“心臟”,是顯卡的一個核心零部件,核心組成部分,兩者是“寄生與被寄生”關(guān)系。GPU本身并不能單獨工作,只有配合上附屬電路和接口,才能工作。這時它就變成了顯卡。參考鏈接:/s?id=1607965696317204020&wfr=spider&for=pc1.3深度學(xué)習(xí)如何提速?1.3深度學(xué)習(xí)如何提速?(2)GPU與CPU的區(qū)別比較GPU和CPU就是比較兩者如何處理任務(wù)的。如圖1.7所示,CPU使用幾個核心處理單元去優(yōu)化串行順序任務(wù),而GPU是大規(guī)模并行架構(gòu)擁有數(shù)以千計的更小、更高效的處理單元,用于處理多個并行小任務(wù),處理速度非???,最適合深度學(xué)習(xí)需要高效的矩陣操作和大量的卷積操作;GPU執(zhí)行矩陣操作和卷積操作比CPU快很多的真正原因是GPU的高帶寬、高速緩存、并行單元多。CPU擁有復(fù)雜的系統(tǒng)指令,能夠進(jìn)行復(fù)雜的任務(wù)操作和調(diào)度,兩者只互不能相互代替。在執(zhí)行多任務(wù)時,CPU需要等待帶寬,而GPU能夠優(yōu)化帶寬。換言之,CPU擅長操作小的內(nèi)存塊,而GPU則擅長操作大的內(nèi)存塊。1.3深度學(xué)習(xí)如何提速?圖1.7
GPU與CPU內(nèi)部結(jié)構(gòu)1.3深度學(xué)習(xí)如何提速?(3)GPU種類對于深度學(xué)習(xí)的加速器GPU,現(xiàn)在主要品牌有AMD、NVIDIA、Intel的XeonPhi。其中,NVIDIA公司的GUP使用最為廣泛,利用其計算加速標(biāo)準(zhǔn)庫cuDNN在CUDA平臺中構(gòu)建深度學(xué)習(xí)網(wǎng)絡(luò)變得非常容易,而且在同一張顯卡上比不使用cnDNN的速度提升5倍之多。近年來,NVIDIA的GPU架構(gòu)有Tesla(特斯拉)、Fermi(費米)、Kepler(開普勒)、Maxwell(麥克斯韋)、Pascal(帕斯卡)、Volta(伏特)、Turing(圖靈)等。2017年5月,NVIDIA發(fā)布新的GPU架構(gòu)Volta可以實現(xiàn)4倍于Pascal架構(gòu)的性能,GV100是采用Volta架構(gòu)的第一款GPU,TeslaV100是使用GV100GPU的第一個AI芯片。與Pascal架構(gòu)相比,TeslaV100對深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練和預(yù)測階段的性能分別提高12倍和5倍。GPU在浮點計算、并行處理等方面的性能遠(yuǎn)遠(yuǎn)高于CPU。同時,越來越多的深度學(xué)習(xí)標(biāo)準(zhǔn)庫支持基于GPU加速,如OpenCL、CUDA等。NVIDIA的GPU云平臺NGC,提供Caffe、Caffe2、MXNet、CNTK、Theano、TensorFlow、Torch等框架、深度學(xué)習(xí)SDK等,此舉將大大促進(jìn)深度學(xué)習(xí)技術(shù)的發(fā)展。1.3深度學(xué)習(xí)如何提速?2.FPGA現(xiàn)場可編程門陣列(Fieldprogrammablegatearray,F(xiàn)PGA)也是OpenCL支持的硬件。與GPU相比,F(xiàn)PGA的硬件配置靈活,且在運行深度學(xué)習(xí)中關(guān)鍵的子程序(例如對滑動窗口的計算)時,單位能耗下通常能比GPU提供更好的表現(xiàn)。然而,F(xiàn)PGA配置需要具體硬件的知識,難度介于通用處理器(Generalpurposeprocessor,GPP)和專用集成電路(Applicationspecificintegratedcircuit,ASIC)之間;FPGA既能提供集成電路的性能優(yōu)勢,又具備GPP可重新配置的靈活性。FPGA能夠簡單地通過使用觸發(fā)器(FF)來實現(xiàn)順序邏輯,并通過使用查找表(Lookuptable,LUT)來實現(xiàn)組合邏輯?,F(xiàn)代的FPGA還含諸如全處理器內(nèi)核、通信內(nèi)核、運算內(nèi)核和塊內(nèi)存(BRAM)等硬化組件來實現(xiàn)一些常用功能。另外,目前的FPGA趨勢趨向于系統(tǒng)芯片(SystemonChip,SoC)設(shè)計方法,即ARM協(xié)處理器和FPGA通常位于同一芯片中。1.3深度學(xué)習(xí)如何提速?2.FPGA(1)1987年,VHDL成為IEEE標(biāo)準(zhǔn);(2)1992年,GANGLION成為首個FPGA神經(jīng)網(wǎng)絡(luò)硬件實現(xiàn)項目(Coxetal.);(3)1994年,Synopsys推出第一代FPGA行為綜合方案;(4)1996年,VIP成為首個FPGA的CNN實現(xiàn)方案(Cloutieretal.);(5)2005年,F(xiàn)PGA市場價值接近20億美元;(6)2006年,首次利用BP算法在FPGA上實現(xiàn)5GOPS的處理能力;(7)2011年,Altera推出OpenCL,支持FPGA;出現(xiàn)大規(guī)模的基于FPGA的CNN算法研究(Farabetetal.);(8)2016年,在微軟Catapult項目的基礎(chǔ)上,出現(xiàn)基于FPGA的數(shù)據(jù)中心CNN算法加速(Ovtcharovetal.)。目前的FPGA市場由Xilinx主導(dǎo),占據(jù)超過85%的市場份額。此外,F(xiàn)PGA正迅速取代ASIC和應(yīng)用專用標(biāo)準(zhǔn)產(chǎn)品(Applicationspecificstandardproducts,ASSP)來實現(xiàn)固定功能邏輯。對于深度學(xué)習(xí)而言,F(xiàn)PGA提供了優(yōu)于GPP加速能力的顯著潛力。GPP在軟件層面的執(zhí)行依賴于傳統(tǒng)的馮·諾依曼架構(gòu),指令和數(shù)據(jù)存儲于外部存儲器中,在需要時再取出;其瓶頸在于處理器和存儲器之間的通信嚴(yán)重削弱了GPP的性能,尤其影響深度學(xué)習(xí)經(jīng)常需要獲取存儲信息的速率。而FPGA的可編程邏輯原件不依賴于馮·諾伊曼結(jié)構(gòu),可實現(xiàn)普通邏輯功能中的數(shù)據(jù)和路徑控制,,能夠利用分布式片上存儲器以及深度利用流水線并行,與前饋性深度學(xué)習(xí)方法自然契合;支持部分動態(tài)重新配置,即當(dāng)FPGA的一部分被重新配置時而不擾亂其他部分正在進(jìn)行的計算,這對大規(guī)模深度學(xué)習(xí)模式產(chǎn)生影響,可用于無法由單個FPGA容納的模型,同時還可通過將中間結(jié)果保存在本地存儲以降低高昂的全球存儲讀取費用。1.3深度學(xué)習(xí)如何提速?2.FPGAFPGA架構(gòu)是為應(yīng)用程序?qū)iT定制的,在開發(fā)FPGA深度學(xué)習(xí)技術(shù)時,較少強調(diào)使算法適應(yīng)某固定計算結(jié)構(gòu),從而留出更多的自由去探索算法層面的優(yōu)化。需要很多復(fù)雜的下層硬件控制操作技術(shù)很難在上層軟件語言中實現(xiàn),但能提高FPGA的執(zhí)行效率;然而這種執(zhí)行效率提升是以需要大量編譯(定位和回路)時間為代價的。FPGA最常用的語言是Verilog和VHDL,兩者均為硬件描述語言(HDL)。這些與傳統(tǒng)的軟件語言之間的主要區(qū)別是,HDL只是單純描述硬件,而C語言等軟件語言則描述順序指令,并無需了解硬件層面的執(zhí)行細(xì)節(jié)。有效描述硬件需要數(shù)字化設(shè)計和電路的專業(yè)知識,盡管一些下層的實現(xiàn)決定可以留給自動合成工具去實現(xiàn),但往往無法達(dá)到高效的設(shè)計。因此,研究人員傾向于選擇軟件設(shè)計,因其已經(jīng)非常成熟,擁有大量抽象和便利的分類來提高程序員的效率。這些趨勢使得FPGA領(lǐng)域目前更加青睞高度抽象化的設(shè)計工具。1.3深度學(xué)習(xí)如何提速?FPGA深度學(xué)習(xí)研究里程碑:(1)1987年,VHDL成為IEEE標(biāo)準(zhǔn);(2)1992年,GANGLION成為首個FPGA神經(jīng)網(wǎng)絡(luò)硬件實現(xiàn)項目(Coxetal.);(3)1994年,Synopsys推出第一代FPGA行為綜合方案;(4)1996年,VIP成為首個FPGA的CNN實現(xiàn)方案(Cloutieretal.);(5)2005年,F(xiàn)PGA市場價值接近20億美元;(6)2006年,首次利用BP算法在FPGA上實現(xiàn)5GOPS的處理能力;(7)2011年,Altera推出OpenCL,支持FPGA;出現(xiàn)大規(guī)模的基于FPGA的CNN算法研究(Farabetetal.);(8)2016年,在微軟Catapult項目的基礎(chǔ)上,出現(xiàn)基于FPGA的數(shù)據(jù)中心CNN算法加速(Ovtcharovetal.)。1.3深度學(xué)習(xí)如何提速?3.ASIC雖然GPU并行處理能力高,但不是針對機器學(xué)習(xí)而設(shè)計的,而FPGA要求用戶自主編程,對用戶的要求過高。芯片要同時具備并行化、低功耗、高性能等特性,還需要實現(xiàn)本地即時計算,這時ASIC(專用集成電路)的優(yōu)勢明顯。但是,ASIC的研發(fā)周期長,可能無法跟上市場的變化。所以,SoC+IP模式較為流行。SoC可以在芯片上集成許多不同模塊的芯片。SoC上每個模塊都可以稱為IP,可以自行設(shè)計,也可以由別的公司設(shè)計,然后集成到自己的芯片上。與ASIC相比,該模式成本低、上市快、靈活適配用戶需求。市場上也有一些公司專注于機器學(xué)習(xí)專用的ASIC開發(fā)。如谷歌打造的Tensor處理器(全稱:TensorProcessingUnit;簡稱:TPU)是專為深度學(xué)習(xí)語言TensorFlow開發(fā)的一種量身定做的芯片。因為是專為TensorFlow所準(zhǔn)備,故谷歌也不需要它擁有任何可定制性,只要能完美支持TensorFlow需要的所有指令即可。同時,TPU運行TensorFlow的效率是所有設(shè)備中最高的。谷歌開發(fā)TPU的最顯而易見的目的就是:追求極致的效率。與CPU/GPU一樣,TPU也是可編程的,它可以在卷積神經(jīng)網(wǎng)絡(luò)、長短期記憶網(wǎng)絡(luò)(Longandshorttermmemorynetwork,LSTM)模型等各種大型網(wǎng)絡(luò)上執(zhí)行CISC指令。1.3深度學(xué)習(xí)如何提速?TPU的內(nèi)部結(jié)構(gòu),如圖1.8所示。另外,中科院計算所旗下的武紀(jì)系列:針對神經(jīng)網(wǎng)絡(luò)的原型處理器結(jié)構(gòu)的寒武紀(jì)1號,面向大規(guī)模神經(jīng)網(wǎng)絡(luò)的寒武紀(jì)2號,面向多種機器學(xué)習(xí)算法的寒武紀(jì)3號,也取得了很大成功。ASIC的性能高于GPU和FPGA,其局限性是開發(fā)周期長。針對機器學(xué)習(xí)設(shè)計的ASIC芯片,對資金和技術(shù)的要求更高。谷歌之前曾用FPGA來解決價格低、效率和性能高等問題,但由于FPGA性能與ASIC存在很大的差距,最終轉(zhuǎn)向定制ASIC。圖1.8TPU的內(nèi)部結(jié)構(gòu)1.3深度學(xué)習(xí)如何提速?1.3.2基于人腦神經(jīng)元結(jié)構(gòu)的加速芯片基于人腦神經(jīng)元結(jié)構(gòu)的加速芯片,也稱類腦芯片。類腦芯片架構(gòu)就是模擬人腦的神經(jīng)突觸傳遞結(jié)構(gòu)。眾多的處理器類似于神經(jīng)元,通訊系統(tǒng)類似于神經(jīng)纖維,每個神經(jīng)元的計算都是在本地進(jìn)行的,從整體上看神經(jīng)元是分布式進(jìn)行工作的,也就是說對整體任務(wù)進(jìn)行了分工,每個神經(jīng)元只負(fù)責(zé)一部分計算。處理海量數(shù)據(jù)時優(yōu)勢明顯,并且功耗比傳統(tǒng)芯片更低。目前,類腦芯片的研究就是基于微電子技術(shù)和新型神經(jīng)形態(tài)器件的結(jié)合,希望突破傳統(tǒng)計算架構(gòu),實現(xiàn)存儲與計算的深度融合,大幅提升計算性能、提高集成度、降低能耗。與依靠馮諾依曼結(jié)構(gòu)的芯片相比,類腦芯片前景雖好,但仍處于研發(fā),甚至是概念階段。1.3深度學(xué)習(xí)如何提速?1.英特爾PohoikiBeach芯片系統(tǒng)2017年9月,Intel發(fā)布了全新的神經(jīng)擬態(tài)芯片“Loihi”,之后不斷取得新的突破和進(jìn)展,還成立了Intel神經(jīng)擬態(tài)研究社區(qū)(INRC),推動神經(jīng)擬態(tài)計算的發(fā)展。英特爾公司又宣布了全新神經(jīng)擬態(tài)PohoikiBeach芯片系統(tǒng)。該系統(tǒng)包含多達(dá)64顆Loihi芯片,集成了1320億個晶體管,總面積3840平方毫米,擁有800多萬個“神經(jīng)元”(相當(dāng)于某些小型嚙齒動物的大腦)和80億個“突觸”。IntelLoihi芯片采用14nm工藝制造,每顆集成21億個晶體管,核心面積60平方毫米,內(nèi)部集成3個Quarkx86CPU核心、128個神經(jīng)擬態(tài)計算核心、13萬個神經(jīng)元、1.3億個突觸,并有包括PythonAPI在內(nèi)的編程工具鏈支持。這種芯片不采用傳統(tǒng)硅芯片的馮諾依曼計算模型,而是模仿人腦原理的神經(jīng)擬態(tài)計算方式,并且是異步電路,不需要全局時鐘信號,而是使用異步脈沖神經(jīng)網(wǎng)絡(luò)。英特爾宣稱,該系統(tǒng)在人工智能任務(wù)中的執(zhí)行速度要比傳統(tǒng)CPU快1000倍,能效提高10000倍。該神經(jīng)擬態(tài)系統(tǒng)的問世,預(yù)示著人類向“模擬大腦”邁出了一大步。與人腦中的神經(jīng)元類似,Loihi擁有數(shù)字“軸突”用于向臨近神經(jīng)元發(fā)送電信號,也有“樹突”用于接收信號,在兩者之間還有用于連接的“突觸”。英特爾表示,基于這種芯片的系統(tǒng)已經(jīng)被用于模擬皮膚的觸覺感應(yīng)、控制假腿、玩桌上足球游戲等任務(wù)。最新的64芯片系統(tǒng)已分享給60多個INRC生態(tài)合作伙伴。測試表明,運行實時深度學(xué)習(xí)基準(zhǔn)測試時,功耗比傳統(tǒng)CPU低約109倍,對比特制的IoT推理硬件功耗低5倍,而且網(wǎng)絡(luò)規(guī)模擴大50倍后仍能維持實時性能,功耗僅增加30%、IoT硬件的話功耗會增加5倍以上,并失去實時性。按照計劃,Intel2019年底將做到1億個神經(jīng)元、10000億個突觸,預(yù)計會有768顆芯片、1.5萬億個晶體管1.3深度學(xué)習(xí)如何提速?1.3深度學(xué)習(xí)如何提速?2.
IBMTrueNorth(SyNAPSE芯片)IBMTrueNorth(SyNAPSE芯片)有4096個內(nèi)核,每個內(nèi)核簡明模仿了人腦神經(jīng)結(jié)構(gòu),每個內(nèi)核有256個“神經(jīng)元”(處理器)、256個“軸突”(存儲器)和64000個突觸(神經(jīng)元和軸突之間的通信)。不同芯片還可以通過陣列方式互聯(lián)。IBM稱如果48顆TrueNorth芯片組建有4800萬個神經(jīng)元的網(wǎng)絡(luò),那么48顆芯片帶來的智力水平相當(dāng)于普通老鼠。2014年后,有報道稱IBM公司開發(fā)由64個“TrueNorth”類腦芯片驅(qū)動的新型超級計算機,以進(jìn)一步降低功能、開展大型深度神經(jīng)網(wǎng)絡(luò)的實時分析并應(yīng)用于高速空中目標(biāo)識別。如果該系統(tǒng)功耗可以達(dá)到人腦級別,那么理論上就可以在64顆芯片原型基礎(chǔ)上進(jìn)一步擴展,從而能夠同時處理任何數(shù)量的實時識別任務(wù)。1.3深度學(xué)習(xí)如何提速?3.高通Zeroth芯片2013年,高通公布一款Zeroth芯片。該芯片通過類似于神經(jīng)傳導(dǎo)物質(zhì)多巴胺的學(xué)習(xí)(又名“正強化”)來完成對行為和結(jié)果進(jìn)行預(yù)編程。為了讓搭載該芯片的設(shè)備能隨時自我學(xué)習(xí)并從周圍環(huán)境中獲得反饋,高通開發(fā)了一套軟件工具。高通用裝載該芯片的機器小車在受人腦啟發(fā)的算法下完成了尋路、躲避障礙等任務(wù)。4.西井科技DeepSouth芯片上海西井科技推出自主研發(fā)的擁有100億規(guī)模的神經(jīng)元人腦仿真模擬器(WestwellBrain)和可商用化的5000萬類腦神經(jīng)元芯片(DeepSouth)兩款產(chǎn)品。DeepSouth是一款可商用化的芯片,有50多億“神經(jīng)突觸”,能模擬高達(dá)5000萬級別的“神經(jīng)元”,具備“自我學(xué)習(xí)、自我實時提高”能力,還可直接在芯片上無需網(wǎng)絡(luò)完成計算,在同一任務(wù)下的功耗僅為傳統(tǒng)芯片的幾十分之一到幾百分之一。1.3深度學(xué)習(xí)如何提速?5.
“達(dá)爾文”類腦芯片2015年,達(dá)爾文的類腦芯片是由浙江大學(xué)與杭州電子科技大學(xué)聯(lián)合研發(fā),是國內(nèi)首款基于硅材料的脈沖神經(jīng)網(wǎng)絡(luò)類腦芯片,芯片面積為25平方毫米,內(nèi)含500萬個晶體管,集成了2048個硅材質(zhì)的仿生神經(jīng)元,可支持超過400萬個神經(jīng)突觸和15個不同的突觸延遲。該款芯片可從外界接受并累計刺激,產(chǎn)生脈沖(電信號)進(jìn)行信息的處理和傳遞,,可以識別不同人手寫的1-10這10個數(shù)字。該款芯片在接受人類腦電波后,可控制電腦屏幕上籃球的移動方向;在熟悉并學(xué)習(xí)了操作者的腦電波后,會在后續(xù)接受相同刺激時做出同樣反映。6.
AI-CTX芯片AI-CTX屬一款國內(nèi)小型的類腦芯片。該芯片的每個神經(jīng)元都具有與人腦神經(jīng)元類似的電學(xué)特征與動態(tài)參數(shù)、簡單的運算與存儲功能。該芯片采用一種特殊的布線方式,使各芯片之間的交流突破物理限制,進(jìn)而增加芯片群組的原有網(wǎng)絡(luò)。該芯片擅長處理如溫度、氣壓、人體信號、loT等包含時間參數(shù)的數(shù)據(jù),而不適合處理靜態(tài)硬盤數(shù)據(jù)。深度學(xué)習(xí)框架是專為深度學(xué)習(xí)領(lǐng)域開發(fā)的具有一套獨立的體系結(jié)構(gòu)、統(tǒng)一的風(fēng)格模板、可以復(fù)用的解決方案,一般具有高內(nèi)聚、嚴(yán)規(guī)范、可擴展、可維護(hù)、高通用等特點。隨著深度學(xué)習(xí)的日益火熱,越來越多的深度學(xué)習(xí)框架被開發(fā)出來。目前主流的深度學(xué)習(xí)框架,如表1.1所示。1.4主流深度學(xué)習(xí)框架1.4主流深度學(xué)習(xí)框架框架開發(fā)語言適合模型優(yōu)點缺點Caffe1.0[21]C++/CUDACNN造合前饋網(wǎng)絡(luò)和圖像處理、微調(diào)已有的網(wǎng)絡(luò);定型模型,無需編寫任何代碼。不適合RNN;用于大型CNN,操作過于頻煩;擴展性差,不夠精減;更新緩慢。TensorFlow[22]C++/CUDA/PythonCNN/RNN/RL計算圖抽象化,易于理解;編譯時間快于Theano;用TensorBoard進(jìn)行可視化;支持?jǐn)?shù)據(jù)并行和模型并行速度較慢,內(nèi)存占用較大;不提供商業(yè)支持;已預(yù)定型的模型不多;不易工具化;在大型軟件項目中易出錯。Torch[23]Lua/C/CUDACNN/RNN大量模塊化組件,易于組合;易于編寫定義層;預(yù)定型的模型很多。要學(xué)習(xí)Lua和使用Lua作為主語言;即插即用,代碼相對較少;不提供商業(yè)支持;文檔質(zhì)量不高。Theano[22]PythonC++/CUDACNN/RNNPython+NumPy實現(xiàn),接口簡單;計算圖抽象化,易于理解;RNN與計算圖配合好;有很多高級包派生。原始Theano級別較低;大型模型的編譯時間較長;對已預(yù)定模型的支持不夠完善;只支持單個GPUMXNet[24]C++/CUDACNN造合前饋網(wǎng)絡(luò)和圖像處理、微調(diào)已有的網(wǎng)絡(luò);定型模型,無需編寫任何代碼;有更多學(xué)界用戶對接模型;支持GPU、CPU分布式計算。不適合RNN;群集運維成本比DL4J高。CNTKPythonC++BrainScriptRNN/CNN具高度的可定制性,允許用戶選擇自己的參數(shù)、算法和網(wǎng)絡(luò),強拓展性;在BabiRNN和MNISTRNN測試上要比TensorFlow和Theano好得多,但在CNN測試上要比TensorFlow差一些。以一種新的語言—NetworkDescriptionLanguage(NDL)來實現(xiàn),缺乏可視化。表1.1主流深度學(xué)習(xí)框架1.5本書內(nèi)容與體系結(jié)構(gòu)圖1.9本書內(nèi)容與結(jié)構(gòu)本書內(nèi)容與體系結(jié)構(gòu),如圖1.9所示。本書共分10章。第1章從深度學(xué)習(xí)的深度、學(xué)習(xí)方法、加速途徑和支持系統(tǒng)等方面進(jìn)行分析,使讀者對深度學(xué)習(xí)有初步了解。
第2章為人工神經(jīng)網(wǎng)絡(luò)。本章內(nèi)容包括神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)、原理、訓(xùn)練與預(yù)測及優(yōu)化算法,神經(jīng)網(wǎng)絡(luò)和激活函數(shù)的計算圖及BP算法,過擬合概念及防止過擬合方法。本章是后續(xù)各章的基礎(chǔ)。第3章為模糊神經(jīng)網(wǎng)絡(luò)。本章從模糊數(shù)學(xué)與神經(jīng)網(wǎng)絡(luò)的結(jié)合點出發(fā),分析了常規(guī)模糊神經(jīng)網(wǎng)絡(luò)、模糊聯(lián)想記憶神經(jīng)網(wǎng)絡(luò)、神經(jīng)模糊推理系統(tǒng)、神經(jīng)網(wǎng)絡(luò)近似邏輯等結(jié)構(gòu)、原理、方法與應(yīng)用。第4章為概率神經(jīng)網(wǎng)絡(luò)。本章著重分析概率神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)、原理與實現(xiàn)架構(gòu)及其在腦腫瘤分類中應(yīng)用。1.5本書內(nèi)容與體系結(jié)構(gòu)第5章為小波神經(jīng)網(wǎng)絡(luò)。本章根據(jù)小波變換與常規(guī)神經(jīng)網(wǎng)絡(luò)結(jié)合緊密程度,分析了前置小波神經(jīng)網(wǎng)絡(luò)和嵌入小波神經(jīng)網(wǎng)絡(luò)的兩種結(jié)構(gòu),討論了訓(xùn)練優(yōu)化、結(jié)構(gòu)優(yōu)化、小波函數(shù)優(yōu)化等問題,并將其應(yīng)用于信道盲均衡問題中。第6章為卷積神經(jīng)網(wǎng)絡(luò)。本章從常規(guī)卷積神經(jīng)網(wǎng)絡(luò)(CNN)的輸入層、卷積層、激勵層、池化層和輸出層功能出發(fā),闡述了LeNet-5、VGGNet、ResNets、DenseNet、AlexNet、Inception等基本結(jié)構(gòu),研究了特征融合卷積神經(jīng)網(wǎng)絡(luò)和深度引導(dǎo)濾波網(wǎng)絡(luò)等擴展模型,分析了遙感圖像分類和運動模糊去除實例。第7章為深度生成對抗網(wǎng)絡(luò)。本章以生成對抗網(wǎng)絡(luò)為基礎(chǔ),分析了自注意力機制條件生成對抗網(wǎng)絡(luò)、小波深度卷積生成對抗網(wǎng)絡(luò)和高頻小波生成對抗網(wǎng)絡(luò)、多尺度生成對抗網(wǎng)絡(luò),研究分析了三維肝臟及腫瘤區(qū)域自動分割和運動模糊圖像復(fù)原實例。1.5本書內(nèi)容與體系結(jié)構(gòu)第8章為深度受限玻爾茲曼機。本章討論了玻爾茲曼機、受限玻爾茲曼機、稀疏受限玻爾茲曼機、競爭型稀疏受限玻爾茲曼機和分類受限玻爾茲曼機的工作原理,分析了步態(tài)特征提取及其識別實例。第9章為深度置信網(wǎng)絡(luò)。本章從常規(guī)深度置信網(wǎng)絡(luò)出發(fā),討論了稀疏深度信念網(wǎng)絡(luò)、Gamma深度置信網(wǎng)絡(luò)、自適應(yīng)深度信念網(wǎng)絡(luò)、全參數(shù)動態(tài)學(xué)習(xí)深度信念網(wǎng)絡(luò)、KPCA深度信念網(wǎng)絡(luò)及優(yōu)化深度信念網(wǎng)絡(luò)及深度置信網(wǎng)絡(luò)在注意缺陷多動障礙早期診斷中的應(yīng)用。第10章為深度自編碼器。本章從自編碼原理開始,分析與研究了變分自編碼器、堆疊變分自動編碼器、深度卷積變分自編碼器、自編碼回聲狀態(tài)網(wǎng)絡(luò)、深度典型相關(guān)稀疏自編碼器、雙重對抗自編碼網(wǎng)絡(luò)等原理模型,分析了基于互信息稀疏自編碼的軟測量模型、基于深度自編碼網(wǎng)絡(luò)的模糊推理模型、基于特征聚類的快速稀疏自編碼模型及基于棧式降噪稀疏自編碼器的極限學(xué)習(xí)機等應(yīng)用模型,最后,研究了特征提取及調(diào)制識別算法。PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/PPT論壇:
2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)2.2神經(jīng)網(wǎng)絡(luò)訓(xùn)練與預(yù)測2.3優(yōu)化算法2.4計算圖2.5正則化懲罰項第二章人工神經(jīng)網(wǎng)絡(luò)2.6神經(jīng)網(wǎng)絡(luò)BP算法2.7過擬合與欠擬合第二章人工神經(jīng)網(wǎng)絡(luò)從生物神經(jīng)元與人工神經(jīng)元概率出發(fā),按神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)演進(jìn)方式,討論了神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)、原理、訓(xùn)練與預(yù)測過程,分析了優(yōu)化算法,描述了神經(jīng)網(wǎng)絡(luò)和激活函數(shù)的計算圖;從正則化懲罰項引入出發(fā),分析了參數(shù)范數(shù)懲罰、L1/L2參數(shù)正則化;以三層神經(jīng)網(wǎng)絡(luò)為例,分析了神經(jīng)網(wǎng)絡(luò)BP算法;從過擬合與欠擬合概念出發(fā),分析了減少特征變量、權(quán)重正則化、交叉驗證、Dropout正則化和貝葉斯規(guī)則正則化等防止過擬合方法。本章是后續(xù)各章的基礎(chǔ)。神經(jīng)網(wǎng)絡(luò)是一門重要的機器學(xué)習(xí)技術(shù),是目前最為火熱的深度學(xué)習(xí)的基礎(chǔ)。學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)不僅可以掌握一門強大的機器學(xué)習(xí)方法,同時也可以更好地理解深度學(xué)習(xí)技術(shù)。摘要現(xiàn)以一種簡單、循序方式介紹神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)是一種模擬人腦的網(wǎng)絡(luò)以期能夠?qū)崿F(xiàn)類人工智能的機器學(xué)習(xí)技術(shù)。人腦中的神經(jīng)網(wǎng)絡(luò)是一個非常復(fù)雜的組織。成人大腦中約有1000億個神經(jīng)元之多,如圖2.1所示[25]。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)那么機器學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)是如何實現(xiàn)這種模擬,并達(dá)到一個驚人的良好效果的?圖2.1人腦示意[25]一個經(jīng)典的神經(jīng)網(wǎng)絡(luò)包含輸入層、輸出層、中間層(也叫隱含層)的三層網(wǎng)絡(luò),如圖2.2所示。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)(a)從左到右
(b)從下到上圖2.2神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)圖中,輸入層有3個輸入單元,隱含層有4個單元,輸出層有2個單元。設(shè)計一個神經(jīng)網(wǎng)絡(luò)時,輸入層與輸出層的節(jié)點數(shù)往往是固定的,中間層可以自由指定;神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖中的拓?fù)渑c箭頭代表著預(yù)測過程中數(shù)據(jù)的流向,與訓(xùn)練時的數(shù)據(jù)流有一定的區(qū)別;結(jié)構(gòu)圖中的關(guān)鍵不是圓圈(代表“神經(jīng)元”),而是連接線(代表“神經(jīng)元”之間的連接)。每個連接線對應(yīng)一個不同的權(quán)重(其值稱為權(quán)值),這是需要訓(xùn)練的。人工神經(jīng)網(wǎng)絡(luò)由神經(jīng)元模型構(gòu)成,這種由許多神經(jīng)元組成的信息處理網(wǎng)絡(luò)具有并行分布結(jié)構(gòu)。每個神經(jīng)元具有單一輸出,并且能夠與其它神經(jīng)元連接;存在許多(多重)輸出連接方法,每種連接方法對應(yīng)一個連接權(quán)系數(shù)。嚴(yán)格地說,人工神經(jīng)網(wǎng)絡(luò)是一種具有下列特性的有向圖:(1)對于每個節(jié)點存在一個狀態(tài)變量
;(2)從節(jié)點至節(jié)點,存在一個連續(xù)權(quán)系數(shù);(3)對于每個節(jié)點,存在一個閾值;(4)對于每個節(jié)點,定義一個變換函數(shù)。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)2.1.1神經(jīng)元1.生物神經(jīng)元一個神經(jīng)元通常具有多個樹突,主要用來接受傳入信息;而軸突只有一條,軸突尾端有許多軸突末梢可以給其他多個神經(jīng)元傳遞信息。軸突末梢與其他神經(jīng)元的樹突產(chǎn)生連接,從而傳遞信號;這個連接的位置在生物學(xué)上叫做“突觸”,如圖2.3所示。圖2.3生物神經(jīng)元2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)2.人工神經(jīng)元1943年,心理學(xué)家McCulloch和數(shù)學(xué)家Pitts參考了生物神經(jīng)元的結(jié)構(gòu),發(fā)表了抽象的神經(jīng)元模型,簡稱MP模型。MP模型包含輸入、輸出與計算功能。輸入可以類比為神經(jīng)元的樹突,而輸出可以類比為神經(jīng)元的軸突,計算則可以類比為細(xì)胞核。包含有3個輸入,1個輸出,以及2個計算功能的神經(jīng)元,如圖2.4所示。圖2.4神經(jīng)元模型注意:中間的箭頭線,稱為“連接”,每一個連接上都有一個權(quán)重。一個神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法就是讓權(quán)重的值調(diào)整到最佳,使整個網(wǎng)絡(luò)的預(yù)測效果最好。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)
如果用x來表示輸入、用w來表示權(quán)值,則一個表示連接的有向箭頭可以這樣理解:在初端,傳遞的信號大小仍然是x,端中間有加權(quán)參數(shù)w,經(jīng)過這個加權(quán)后的信號會變成
,因此在連接的末端,信號大小變成
,如圖2.5所示。
在一些模型里,有向箭頭可能表示的是值的不變傳遞。而在神經(jīng)元模型,每個有向箭頭表示值的加權(quán)傳遞。圖2.5一個連接2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)如果將神經(jīng)元中的所有變量用符號表示,則輸出的計算過程,如圖2.6所示。(2.1.1)式中,b為神經(jīng)元單元的偏置(閾值),
為連接權(quán)向量,為w中的第i個連接權(quán)系數(shù),N為輸入信號數(shù)目,y為神經(jīng)元輸出,f()為輸出變換函數(shù),有時也稱激發(fā)或激勵函數(shù),往往采用0和1二值函數(shù)或S形函數(shù)。圖2.6中,激勵函數(shù)為符號函數(shù)sgn。可見,y是在輸入和權(quán)值的線性加權(quán)和疊加了一個函數(shù)f的值。在MP模型里,函數(shù)f是sgn函數(shù),也就是取符號函數(shù)。這個函數(shù)當(dāng)輸入大于0時,輸出1;否則,輸出0。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)現(xiàn)對人工神經(jīng)元模型作一些擴展。首先將sum函數(shù)與sgn函數(shù)合并到一個圓圈里,代表神經(jīng)元的內(nèi)部計算。其次,把輸入x與輸出y寫到連接線的左上方;最后,一個神經(jīng)元可以引出多個代表輸出的有向箭頭,但值都是一樣的,如圖2.7所示。神經(jīng)元可以看作一個計算與存儲單元。計算是神經(jīng)元對其輸入進(jìn)行計算功能,存儲是神經(jīng)元暫存計算結(jié)果,并傳遞到下一層。圖2.7神經(jīng)元擴展2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)當(dāng)由“神經(jīng)元”組成網(wǎng)絡(luò)以后,描述網(wǎng)絡(luò)中的某個“神經(jīng)元”時,更多地用“單元”(unit)來指代。同時由于神經(jīng)網(wǎng)絡(luò)的表現(xiàn)形式是一個有向圖,有時也會用“節(jié)點”(node)來表達(dá)同樣的意思。對神經(jīng)元模型的理解:有一個數(shù)據(jù),稱之為樣本;樣本有四個屬性,其中三個屬性已知,一個屬性未知,現(xiàn)需要通過三個已知屬性預(yù)測未知屬性。具體辦法就是使用神經(jīng)元的公式進(jìn)行計算。三個已知屬性值是x1,
x2
,x3,未知屬性y可以通過公式計算出來。MP模型是建立神經(jīng)網(wǎng)絡(luò)大廈的地基,但其權(quán)重值是預(yù)先設(shè)置的,不能學(xué)習(xí)。而Hebb學(xué)習(xí)規(guī)則認(rèn)為人腦神經(jīng)細(xì)胞的突觸(也就是連接)上的強度上可以變化的。因此,可以通過調(diào)整權(quán)值的方法讓機器學(xué)習(xí),這為后面的學(xué)習(xí)算法奠定了基礎(chǔ)。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)2.1.2神經(jīng)網(wǎng)絡(luò)(感知器)1958年,Rosenblatt提出由兩層神經(jīng)元組成的神經(jīng)網(wǎng)絡(luò),如圖2.8所示,稱之為感知器(Perceptron)或感知機,它是當(dāng)時首個可以學(xué)習(xí)的人工神經(jīng)網(wǎng)絡(luò)。圖2.8單層神經(jīng)網(wǎng)絡(luò)2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)在原來MP模型的“輸入”位置添加神經(jīng)元節(jié)點,標(biāo)志其為“輸入單元”,并將權(quán)值
寫到“連接線”的中間。在“感知器”中,有兩個層次,分別是輸入層和輸出層。輸入層里的“輸入單元”只負(fù)責(zé)傳輸數(shù)據(jù),不做計算;輸出層的“輸出單元”對前面一層的輸入進(jìn)行計算;將需要計算的層次稱之為“計算層”,并把擁有一個計算層的網(wǎng)絡(luò)稱之為“單層神經(jīng)網(wǎng)絡(luò)”。如果要預(yù)測的目標(biāo)不再是一個值,而是一個向量,那么可以在輸出層再增加一個“輸出單元”,形成帶有兩個輸出單元的單層神經(jīng)網(wǎng)絡(luò),如圖2.9所示。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)(a)輸出(b)輸出(c)輸出
和(d)輸出
和圖2.9單層神經(jīng)網(wǎng)絡(luò)2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)
(2.1.2)
2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)與神經(jīng)元模型不同,感知器中權(quán)值是通過訓(xùn)練得到的,類似一個邏輯回歸模型,可以做線性分類任務(wù)??梢杂脹Q策分界來形象的表達(dá)分類效果,決策分界就是在二維的數(shù)據(jù)平面中劃出一條直線,如圖2.10所示。當(dāng)數(shù)據(jù)維數(shù)為3,就是劃出一個平面(2維);當(dāng)數(shù)據(jù)維數(shù)為N時,就是劃出一個N-1維的超平面。圖2.10單層神經(jīng)網(wǎng)絡(luò)(決策分界)注意:感知器只能做簡單的線性分類,對XOR(異或)這樣的簡單分類任務(wù)無法解決。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)2.1.3兩層神經(jīng)網(wǎng)絡(luò)(多層感知器)Minsky認(rèn)為單層神經(jīng)網(wǎng)絡(luò)無法解決異或問題,但當(dāng)增加一個計算層以后,兩層神經(jīng)網(wǎng)絡(luò)不僅可以解決異或問題,而且具有非常好的非線性分類效果,不過當(dāng)時兩層神經(jīng)網(wǎng)絡(luò)的計算是一個問題,沒有一個較好的解法。1986年,Rumelhar和Hinton等提出了反向傳播(Backpropagation,BP)算法,解決了兩層神經(jīng)網(wǎng)絡(luò)所需要的復(fù)雜計算量問題。兩層神經(jīng)網(wǎng)絡(luò)包含一個輸入層、一個輸出層、一個中間層。此時,中間層和輸出層都是計算層,如圖2.11所示。用上標(biāo)來區(qū)分不同層次之間的變量。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)(a)中間層(b)輸出層(c)向量形式使用矩陣運算來表達(dá)整個計算公式為(2.1.3)可見,矩陣表示簡潔,而且不受節(jié)點數(shù)增多的影響(無論有多少節(jié)點參與運算,乘法兩端都只有一個變量)。(2.1.4)2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)2.1.4偏置單元
圖2.12兩層神經(jīng)網(wǎng)絡(luò)(考慮偏置節(jié)點)圖2.12表明,偏置節(jié)點沒有輸入(前一層中沒有箭頭指向它)。有些神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖中會把偏置節(jié)點明顯畫出來,有些不會。一般情況下,不會明確畫出偏置節(jié)點。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)考慮偏置以后,一個神經(jīng)網(wǎng)絡(luò)的矩陣運算公式為(2.1.5)(2.1.6)注意,在兩層神經(jīng)網(wǎng)絡(luò)中,不再使用sgn函數(shù)作為函數(shù)f,而是使用平滑函數(shù)sigmoid作為函數(shù)f。事實上,神經(jīng)網(wǎng)絡(luò)本質(zhì)上是通過參數(shù)與激活函數(shù)來擬合特征與目標(biāo)之間的真實函數(shù)關(guān)系。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)與單層神經(jīng)網(wǎng)絡(luò)不同,兩層神經(jīng)網(wǎng)絡(luò)可以無限逼近任意連續(xù)函數(shù)。也就是說,面對復(fù)雜的非線性分類任務(wù),兩層(帶一個隱藏層)神經(jīng)網(wǎng)絡(luò)可以很好的分類。圖2.13中,紅色的線與藍(lán)色的線代表數(shù)據(jù);而紅色區(qū)域和藍(lán)色區(qū)域代表由神經(jīng)網(wǎng)絡(luò)劃開的區(qū)域,兩者的分界線就是決策分界。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)圖2.13
兩層神經(jīng)網(wǎng)絡(luò)(決策分界)圖2.13表明,兩層神經(jīng)網(wǎng)絡(luò)的決策分界線非常平滑,分類效果很好。有趣的是,單層網(wǎng)絡(luò)只能做線性分類任務(wù),兩層神經(jīng)網(wǎng)絡(luò)中的后一層也是線性分類層,應(yīng)該只能做線性分類任務(wù)。但為什么兩個線性分類任務(wù)結(jié)合起來就可以做非線性分類任務(wù)?2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)輸出層的決策分界,如圖2.14所示。圖2.14表明,輸出層的決策分界仍然是直線。關(guān)鍵是從輸入層到隱含層,數(shù)據(jù)發(fā)生空間變換。也就是說,兩層神經(jīng)網(wǎng)絡(luò)中,隱含層對原始的數(shù)據(jù)進(jìn)行了一個空間變換,使其可以被線性分類,然后輸出層的決策分界劃出了一個線性分類分界線,對其進(jìn)行分類。這就說明,兩層神經(jīng)網(wǎng)絡(luò)可以做非線性分類的關(guān)鍵是隱含層,其參數(shù)矩陣的作用就是使數(shù)據(jù)的原始坐標(biāo)空間從線性不可分轉(zhuǎn)換成線性可分。兩層神經(jīng)網(wǎng)絡(luò)通過兩層的線性模型模擬了數(shù)據(jù)內(nèi)真實的非線性函數(shù)。因此,多層的神經(jīng)網(wǎng)絡(luò)的本質(zhì)就是復(fù)雜函數(shù)擬合。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)圖2.14
兩層神經(jīng)網(wǎng)絡(luò)(空間變換)2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)對于隱含層節(jié)點數(shù)進(jìn)行設(shè)計時,輸入層節(jié)點數(shù)需要與特征的維度匹配;輸出層節(jié)點數(shù)要與目標(biāo)的維度匹配;中間層節(jié)點數(shù),由設(shè)計者指定的。節(jié)點數(shù)的多少,會影響整個模型的效果。如何決定中間層的節(jié)點數(shù)呢?一般由經(jīng)驗設(shè)置。較好的方法就是預(yù)先設(shè)定幾個可選值,通過切換這幾個值來觀察整個模型的預(yù)測效果,選擇效果最好的值作為最終選擇。這種方法又叫做網(wǎng)格搜索(GridSearch,GS)。2.1神經(jīng)網(wǎng)絡(luò)演進(jìn)了解了兩層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)以后,就可以理解類似的網(wǎng)絡(luò)。例如,EasyPR字符識別網(wǎng)絡(luò)架構(gòu),如圖2.15所示EasyPR使用了字符的圖像去進(jìn)行字符文字的識別。輸入為120維向量,輸出為要預(yù)測的文字類別,共有65類。實驗表明,當(dāng)隱含層數(shù)目為40時,整個網(wǎng)絡(luò)在測試集上的效果較好。因此,選擇網(wǎng)絡(luò)的最終結(jié)構(gòu)為120,40和65。圖2.15EasyPR字符識別網(wǎng)絡(luò)2.2神經(jīng)網(wǎng)絡(luò)訓(xùn)練與預(yù)測2.2.1神經(jīng)網(wǎng)絡(luò)訓(xùn)練神經(jīng)網(wǎng)絡(luò)的一般方法分為訓(xùn)練與預(yù)測階段。在訓(xùn)練階段,需要準(zhǔn)備好原始數(shù)據(jù)和與之對應(yīng)的分類標(biāo)簽數(shù)據(jù),通過訓(xùn)練得到模型A。在預(yù)測階段,對新的數(shù)據(jù)套用該模型A,可以預(yù)測新輸入數(shù)據(jù)所屬類別。
(2.2.1)2.2神經(jīng)網(wǎng)絡(luò)訓(xùn)練與預(yù)測
2.2神經(jīng)網(wǎng)絡(luò)訓(xùn)練與預(yù)測反向傳播算法基于鏈?zhǔn)椒▌t,鏈?zhǔn)椒▌t是微積分中的求導(dǎo)法則,用于求一個復(fù)合函數(shù)的導(dǎo)數(shù)。按鏈?zhǔn)椒▌t,首先計算輸出層梯度,然后計算第二個參數(shù)矩陣的梯度,接著計算中間層的梯度,再然后計算第一個參數(shù)矩陣的梯度,最后計算輸入層梯度。計算結(jié)束以后,就獲得了兩個參數(shù)矩陣的梯度。機器學(xué)習(xí)問題之所以稱為學(xué)習(xí)問題,而不是優(yōu)化問題,就是因為它不僅要求數(shù)據(jù)在訓(xùn)練集上求得一個較小的誤差,在測試集上也要表現(xiàn)好。因為模型最終是要部署到?jīng)]有見過訓(xùn)練數(shù)據(jù)的真實場景。提升模型在測試集上的預(yù)測效果稱為泛化(generalization),相關(guān)方法被稱作正則化(Regularization)2.2神經(jīng)網(wǎng)絡(luò)訓(xùn)練與預(yù)測2.2.2神經(jīng)網(wǎng)絡(luò)預(yù)測
2.3優(yōu)化算法
2.3優(yōu)化算法優(yōu)化算法分為兩大類1)一階優(yōu)化算法這種算法使用各參數(shù)的梯度值來最小化或最大化損失函數(shù)。最常用的一階優(yōu)化算法是梯度下降算法。對單變量函數(shù),使用導(dǎo)數(shù)來分析;對于多變量函數(shù),用梯度取代導(dǎo)數(shù),并使用偏導(dǎo)數(shù)來計算梯度。梯度和導(dǎo)數(shù)之間的一個主要區(qū)別是函數(shù)的梯度形成了一個向量場。2)二階優(yōu)化算法二階優(yōu)化算法使用了二階導(dǎo)數(shù)(也叫做Hessian方法)來最小化或最大化損失函數(shù)。由于二階導(dǎo)數(shù)的計算成本很高,所以這種方法并沒有廣泛使用。神經(jīng)網(wǎng)絡(luò)優(yōu)化算法主要有:梯度下降、動量法、AdaGrad算法、RMSProp算法、AdaDelta算法、Adam算法等。2.3優(yōu)化算法2.3.1梯度下降法在訓(xùn)練和優(yōu)化智能系統(tǒng)時,梯度下降是一種最重要的技術(shù)和基礎(chǔ)。梯度下降的功能是:通過尋找最小值控制方差、更新模型參數(shù),最終使模型收斂。如今,梯度下降主要用于神經(jīng)網(wǎng)絡(luò)模型的參數(shù)更新,即通過在一個方向上更新和調(diào)整模型參數(shù)來最小化損失函數(shù),這是神經(jīng)網(wǎng)絡(luò)中最常用的優(yōu)化算法。反向傳播算法使訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)成為可能。反向傳播算法在前向傳播中計算輸入信號與其對應(yīng)的權(quán)重的乘積并求和,由激活函數(shù)將輸入信號轉(zhuǎn)換為輸出信號;然后在反向傳播過程中回傳相關(guān)誤差,計算誤差函數(shù)相對于參數(shù)的梯度并在負(fù)梯度方向上更新模型參數(shù)。2.3優(yōu)化算法對于非線性模型,基于誤差函數(shù)的損失函數(shù)定義為(2.3.1)
(2.3.2)2.3優(yōu)化算法圖2.16顯示了權(quán)重更新過程與梯度向量誤差的方向相反,其中U形曲線為梯度。注意:當(dāng)權(quán)重值太小或太大時,會存在較大的誤差,需要更新和優(yōu)化權(quán)重,使其轉(zhuǎn)化為合適值,所以試圖在與梯度相反的方向找到一個局部最優(yōu)值。梯度下降法的迭代公式為(2.3.3)2.3優(yōu)化算法圖2.16權(quán)重更新方向與梯度方向相反
(2.3.4)以上是梯度下降法的最基本形式。2.3優(yōu)化算法2.3.2梯度下降法的變體上面介紹的由梯度下降法更新模型參數(shù)(權(quán)重與偏置),每次的參數(shù)更新都使用了整個訓(xùn)練樣本數(shù)據(jù)集,這種方式也就是批量梯度下降法(BatchGradientDescent,BGD)。在BGD中,整個數(shù)據(jù)集都參與梯度計算,這樣得到的梯度是一個標(biāo)準(zhǔn)梯度,易于得到全局最優(yōu)解,總迭代次數(shù)少。但在處理大型數(shù)據(jù)集時速度很慢且難以控制,甚至導(dǎo)致內(nèi)存溢出。2.3優(yōu)化算法1.隨機梯度下降隨機梯度下降(Stochasticgradientdescent,SGD)是每次從訓(xùn)練集中隨機采樣一個樣本計算Loss和梯度,然后更新參數(shù),即(2.3.5)
2.3優(yōu)化算法2.小批量梯度下降小批量梯度下降是每次從訓(xùn)練集中隨機采樣m個樣本,組成一個小批量(mini-batch)來計算損失函數(shù)Loss并更新參數(shù)。損失函數(shù)定義為(2.3.6)2.3優(yōu)化算法然后,再按式(2.3.5)更新。使用小批量梯度下降的優(yōu)點如下:(1)可以減少參數(shù)更新的波動,最終得到效果更好和更穩(wěn)定的收斂。(2)可以使用最新的深層學(xué)習(xí)庫中通用的矩陣優(yōu)化方法,使計算小批量數(shù)據(jù)的梯度更加高效。(3)通常來說,小批量樣本的大小范圍是從50到256,可以根據(jù)實際問題而有所不同。(4)在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時,通常都會選擇小批量梯度下降算法。2.3優(yōu)化算法2.3.3
優(yōu)化梯度下降算法1.Momentum算法
(2.3.7)(2.3.8)
2.3優(yōu)化算法
2.3優(yōu)化算法圖2.17平滑處理
圖2.17(b)是進(jìn)行一次平滑處理的結(jié)果。最常見的方法是用一個滑動窗口滑過各個數(shù)據(jù)點,計算窗口的平均值,從而得到數(shù)據(jù)的滑動平均值。也可以使用指數(shù)加權(quán)平均來對數(shù)據(jù)做平滑。2.3優(yōu)化算法若(2.3.9)則其展開式為(2.3.10)式(2.3.10)稱為指數(shù)加權(quán)移動平均。當(dāng)k比較小時,其最近的數(shù)據(jù)太少,導(dǎo)致估計誤差比較大,因此修正為2.3優(yōu)化算法(2.3.11)
圖2.18修正結(jié)果2.3優(yōu)化算法2.Nesterov梯度加速法
2.3優(yōu)化算法然后使用(2.3.13)來更新參數(shù)
現(xiàn)在,通過使網(wǎng)絡(luò)更新與誤差函數(shù)的斜率相適應(yīng),并依次加速SGD,也可根據(jù)每個參數(shù)的重要性來調(diào)整和更新對應(yīng)參數(shù),以執(zhí)行更大或更小的更新幅度。因此,不是通過計算當(dāng)前參數(shù)的梯度值,而是通過相關(guān)參數(shù)的大致未來位置來有效預(yù)知未來,即(2.3.12)2.3優(yōu)化算法3.AdaGrad算法
(2.3.14)2.3優(yōu)化算法
(2.3.15)
2.3優(yōu)化算法如果某個方向上梯度震蕩很大,應(yīng)該減小其步長;而震蕩大,則這個方向的s也較大,歸一化的梯度就小了。如果某個方向上梯度震蕩很小,應(yīng)該增大其步長;而震蕩小,則這個方向的s也較小,歸一化的梯度就大了。因此,通過AdaGrad可以調(diào)整不同維度上的步長,加快收斂速度。不過,當(dāng)學(xué)習(xí)率在迭代早期降得較快且當(dāng)前解依然不佳時,AdaGrad算法在迭代后期由于學(xué)習(xí)率過小,可能較難找到?個有?的解。目標(biāo)函數(shù)2.3優(yōu)化算法(2.3.16)時,AdaGrad算法對自變量的迭代軌跡,如圖2.19所示。圖2.19自變量迭代軌跡2.3優(yōu)化算法4.RMSprop算法
(2.3.17)2.3優(yōu)化算法
對目標(biāo)函數(shù)式(2.3.16),由RMSProp算法觀察自變量迭代軌跡,如圖2.20所示。圖2.20迭代軌跡2.3優(yōu)化算法2.3優(yōu)化算法5.AdaDelta算法2.3優(yōu)化算法2.3優(yōu)化算法6.Adam算法
Adam算法與傳統(tǒng)的隨機梯度下降不同。隨機梯度下降保持單一的學(xué)習(xí)率更新所有的權(quán)重,學(xué)習(xí)率在訓(xùn)練過程中并不會改變。而Adam算法通過計算梯度的一階矩估計和二階矩估計而為不同的參數(shù)設(shè)計獨立的自適應(yīng)性學(xué)習(xí)率。Adam算法為兩種隨機梯度下降擴展式的優(yōu)點集合,即:適應(yīng)性梯度算法(AdaGrad)為每一個參數(shù)保留一個學(xué)習(xí)率以提升在稀疏梯度(即自然語言和計算機視覺問題)上的性能。2.3優(yōu)化算法6.Adam算法
2.3優(yōu)化算法2.3優(yōu)化算法2.3優(yōu)化算法2.3優(yōu)化算法2.4計算圖一個機器學(xué)習(xí)任務(wù)的核心是模型的定義以及模型的參數(shù)求解方式,對這兩者進(jìn)行抽象之后,可以確定一個唯一的計算邏輯,將這個邏輯用圖表示,稱之為計算圖。計算圖表現(xiàn)為有向無環(huán)圖,定義了數(shù)據(jù)的流轉(zhuǎn)方式、數(shù)據(jù)的計算方式,以及各種計算之間的相互依賴關(guān)系等。按照數(shù)據(jù)結(jié)構(gòu)的定義,圖由頂點集V(G)和邊集E(G)組成,記為G=(V,E)。其中E(G)是邊的有限集合,邊是頂點的無序?qū)Γo向圖)或有序?qū)Γㄓ邢驁D)。對有向圖來說,E(G)是有向邊(也稱弧(Arc))的有限集合,弧是頂點的有序?qū)?,記?lt;v,w>,v、w是頂點,v為弧尾(箭頭根部),w為弧頭(箭頭處)。對無向圖來說,E(G)是邊的有限集合,邊是頂點的無序?qū)?,記?v,w)或者(w,v),并且(v,w)=(w,v)。2.4計算圖2.4.1計算圖含義計算圖就是將計算過程圖形化表示出來,是一種描述方程的“語言”,這個語言是用來描述一個函數(shù),神經(jīng)網(wǎng)絡(luò)就是一個函數(shù),所以需要描述函數(shù)的語言。其實圖(graph)有很多種定義方法,這里用節(jié)點(node)表示一個操作(簡單函數(shù))、邊(edge)表示一個變量,可以是一個標(biāo)量、向量甚至是張量[32]。計算圖和反向傳播都是深度學(xué)習(xí)訓(xùn)練神經(jīng)網(wǎng)絡(luò)的重要核心概念。2.4計算圖1.正向傳播正向傳播,也稱前向傳播,是評估由計算圖表示的數(shù)學(xué)表達(dá)式的值的過程。前向傳播意味著將變量的值從左側(cè)(輸入)向前傳遞到輸出所在的右側(cè)。神經(jīng)網(wǎng)絡(luò)的正向傳播中進(jìn)行的矩陣的乘積運算在幾何學(xué)領(lǐng)域被稱為“仿射變換”。因此,這里將進(jìn)行仿射變換的處理實現(xiàn)稱為“Affine層”[33]。2.后向傳播后向傳播是從右(輸出)向左(輸入)傳遞變量的值,目的是計算每個輸入相對于最終輸出的梯度,這些梯度對于使用梯度下降訓(xùn)練神經(jīng)網(wǎng)絡(luò)至關(guān)重要。3.加法/乘法節(jié)點正反向傳播的計算圖[34]2.4計算圖3.加法/乘法節(jié)點正反向傳播的計算圖(1)加法節(jié)點的正反向傳播。其計算圖,如圖2.21所示。圖2.21加法節(jié)點2.4計算圖(2)乘法節(jié)點正反向傳播。其計算圖,如圖2.22所示。圖2.22乘法節(jié)點2.4計算圖2.4.2AFFINNE層/SOFTMAX層的計算圖1.AFFINE層的計算圖
2.4計算圖圖2.23計算圖
2.4計算圖
圖2.24后向傳播2.4計算圖
圖2.24后向傳播2.4計算圖2.Softmax-with-Loss層的計算圖神經(jīng)網(wǎng)絡(luò)中進(jìn)行的處理有推理(inference)和學(xué)習(xí)兩個階段。神經(jīng)網(wǎng)絡(luò)的推理通常不使用Softmax層。神經(jīng)網(wǎng)絡(luò)中未被正規(guī)化的輸出結(jié)果有時被稱為“得分”。也就是說,當(dāng)神經(jīng)網(wǎng)絡(luò)的推理只需要給出一個答案的情況下,只對得分最大值感興趣;所以不需要Softmax層,而神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)階段則需要Softmax層。使用交叉熵誤差作為softmax函數(shù)的損失函數(shù)后,反向傳播得到這樣“漂亮”的結(jié)果。實際上,這樣“漂亮”的結(jié)果并不是偶然的;而是為了得到這樣的結(jié)果,特意設(shè)計了交叉熵誤差函數(shù)?;貧w問題中輸出層使用“恒等函數(shù)”,損失函數(shù)使用“平方和誤差”,也是出于同樣的理由。也就是說,使用“平方和誤差”作為“恒等函數(shù)”的損失函數(shù),反向傳播才能得到“漂亮”的結(jié)果。2.4計算圖softmax函數(shù)會將輸入值正規(guī)化之后再輸出?,F(xiàn)用計算圖來表示Softmax-with-Loss層,如圖2.25所示。圖2.25Softmax-with-Loss層的計算圖圖中,計算圖中省略了Softmax和CrossEntropyError層的內(nèi)容。2.4計算圖(1)正向傳播Softmax函數(shù)可表示為(2.4.1)
2.4計算圖圖2.26Softmax層的計算圖(僅正向傳播)2.4計算圖CrossEntropyError層的交叉熵誤差為(2.4.2)CrossEntropyError層的計算圖,如圖2.27所示。圖2.27CrossEntropyError層的計算圖(正向傳播)2.4計算圖(2)反向傳播CrossEntropyError層的反向傳播計算圖,如圖2.28所示。圖2.28交叉熵誤差的反向傳播
2.4計算圖Softmax-with-Loss的反向傳播計算圖,如圖2.29所示圖2.29Softmax-with-Loss層的計算函數(shù)2.4計算圖2.4.3激活函數(shù)的計算圖1.Sigmoid反向傳播(1)函數(shù)式(2.4.3)(2)計算圖。式(2.4.3)的計算圖,如圖2.30所示。
(2.4.4)2.4計算圖
(2.4.5)(3)簡化輸出(2.4.6)2.4計算圖圖2.30計算圖2.4計算圖2.ReLU反向傳播2.4計算圖圖2.31ReLU層的計算圖注意:ReLU層像電路中的開關(guān)。(1)正向傳播時,有電流通過時,開關(guān)設(shè)為ON;沒有電流通過,開關(guān)設(shè)為OFF。(2)反向傳播時,開關(guān)為ON,電流會直接通過;開關(guān)為OFF,則不會有電流通過。2.5正則化懲罰項神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力過強、復(fù)雜度過高或訓(xùn)練時間太久或激活函數(shù)不合適或數(shù)據(jù)量太少等情況,常常會導(dǎo)致過擬合(overfitting)。正則化方法即為在此時向原始模型引入額外信息,以便防止過擬合從而提高模型泛化性能的一類方法的統(tǒng)稱。在實際的深度學(xué)習(xí)場景中,可以發(fā)現(xiàn),最好的擬合模型(從最小化泛化誤差的意義上)是一個適當(dāng)正則化的大型模型。2.5正則化懲罰項2.5.1參數(shù)范數(shù)懲罰
(2.5.1)
2.5正則化懲罰項2.5.2L2參數(shù)正則化2.5正則化懲罰項2.5正則化懲罰項2.5正則化懲罰項圖2.32目標(biāo)函數(shù)的等高線2.5正則化懲罰項2.5正則化懲罰項在原目標(biāo)函數(shù)的基礎(chǔ)上增加L2范數(shù)懲罰,將原函數(shù)進(jìn)行一定程度平滑的效果,由其梯度函數(shù)體現(xiàn)。對于一類存在大量駐點(Stationarypoint,即梯度為0
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年電磁功能材料精密加工輔助材料項目資金申請報告代可行性研究報告
- 2025年廣東省潮州市單招職業(yè)傾向性測試題庫及參考答案
- 地理-云南省師范大學(xué)附屬中學(xué)2025屆高三下學(xué)期開學(xué)考試試題和答案
- 2025年河南省焦作市單招職業(yè)傾向性測試題庫附答案
- 2025年度司機職業(yè)發(fā)展規(guī)劃與薪酬激勵合同
- 2025年度農(nóng)村魚塘租賃與生態(tài)養(yǎng)殖項目合作合同
- 2025年度建筑工地食堂食品安全風(fēng)險評估協(xié)議
- 2025年度合伙人分伙協(xié)議書:清潔能源項目投資合作分?jǐn)偧巴顺鰠f(xié)議
- 2025年甘肅省蘭州市單招職業(yè)傾向性測試題庫必考題
- 2025年度體育賽事組織管理委托書合同范文
- GB/T 6822-2024船體防污防銹漆體系
- 全國第三屆職業(yè)技能大賽(智能網(wǎng)聯(lián)汽車裝調(diào)運維)選拔賽理論考試題庫(含答案)
- 電信網(wǎng)絡(luò)詐騙犯罪的特征、治理困境及對策建議
- 救護(hù)車掛靠私立醫(yī)院協(xié)議書(2篇)
- 《血透患教》課件
- app 購買合同范例
- 高二上學(xué)期物理(理科)期末試題(含答案)
- 2024年房地產(chǎn)經(jīng)紀(jì)人《房地產(chǎn)經(jīng)紀(jì)專業(yè)基礎(chǔ)》考前沖刺必會試題庫300題(含詳解)
- 礦山生態(tài)修復(fù)工程不穩(wěn)定斜坡治理工程設(shè)計
- 躲避球運動用球項目評價分析報告
- 風(fēng)機盤管更換施工方案
評論
0/150
提交評論