深度學習與信號處理:原理與實踐 課件全套 第1-10章 初識深度學習-深度自編碼器_第1頁
深度學習與信號處理:原理與實踐 課件全套 第1-10章 初識深度學習-深度自編碼器_第2頁
深度學習與信號處理:原理與實踐 課件全套 第1-10章 初識深度學習-深度自編碼器_第3頁
深度學習與信號處理:原理與實踐 課件全套 第1-10章 初識深度學習-深度自編碼器_第4頁
深度學習與信號處理:原理與實踐 課件全套 第1-10章 初識深度學習-深度自編碼器_第5頁
已閱讀5頁,還剩798頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PPT模板下載:/moban/行業PPT模板:/hangye/節日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/PPT論壇:

1.1深度學習有多深?1.2深度學習如何學?1.3深度學習如何提速?1.4主流深度學習框架1.5本書內容與體系結構第一章初識深度學習1.1深度學習有多深?本章從深度學習有多深、深度學習發展路徑、深度學習如何學、深度學習如何提速等方面入手,初識深度學習概念、硬件支持系統、主流軟件框架、應用平臺體系。摘要1.1.1深度學習概念深度學習(DL,DeepLearning)的概念最早由多倫多大學的G.E.Hinton等[1]于2006年提出,是基于樣本數據通過一定的訓練方法得到包含多個層級的深度網絡結構的機器學習(ML,MachineLearning)過程[2]。機器學習通常以使用決策樹、推導邏輯規劃、聚類、貝葉斯網絡等傳統算法對結構化的數據進行分析為基礎,對真實世界中的事件做出決策和預測。深度學習被引入機器學習使其更接近于最初的目標—人工智能(AI,ArtificialIntelligence),其動機在于建立模型模擬人類大腦的神經連接結構,通過組合低層特征形成更加抽象的高層表示、屬性類別或特征,給出數據的分層特征表示;1.1深度學習有多深?它從數據中提取知識來解決和分析問題時,使用人工神經網絡算法,允許發現分層表示來擴展標準機器學習。這些分層表示能夠解決更復雜的問題,并且以更高的精度、更少的觀察和更簡便的手動調諧,潛在地解決其他問題。傳統的神經網絡隨機初始化網絡權值,很容易導致網絡收斂到局部最小值。為解決這一問題,Hinton提出使用無監督預訓練方法優化網絡初始權值,再進行權值微調,拉開了深度學習的序幕。深度學習所得到的深度網絡結構包含大量的單一元素(神經元),每個神經元與大量其他神經元相連接,神經元間的連接強度(權值)在學習過程中修改并決定網絡的功能。1.1深度學習有多深?通過深度學習得到的深度網絡結構符合神經網絡的特征[3],因此深度網絡就是深層次的神經網絡,即深度神經網絡(deepneuralnetworks,DNN)。深度神經網絡是由多個單層非線性網絡疊加而成的[4-5],常見的單層網絡按照編碼解碼情況分為3類:只包含編碼器部分、只包含解碼器部分、既有編碼器部分也有解碼器部分。編碼器提供從輸入到隱含特征空間的自底向上的映射,解碼器以重建結果盡可能接近原始輸入為目標將隱含特征映射到輸入空間[6]。深度神經網絡分為以下3類(如圖1.1所示)。1.1深度學習有多深?(1)前饋深度網絡(feed-forwarddeepnetworks,FFDN),由多個編碼器層疊加而成,如多層感知機(multi-layerperceptrons,MLP)[7-8]、卷積神經網絡(convolutionalneuralnetworks,CNN)[9-10]等。(2)反饋深度網絡(feed-backdeepnetworks,FBDN),由多個解碼器層疊加而成,如反卷積網絡(deconvolutionalnetworks,DN)[11]、層次稀疏編碼網絡(hierarchicalsparsecoding,HSC)[12]等。(3)雙向深度網絡(bi-directionaldeepnetworks,BDDN),通過疊加多個編碼器層和解碼器層構成(每層可能是單獨的編碼過程或解碼過程,也可能既包含編碼過程也包含解碼過程),如深度玻爾茲曼機(DeepBoltzmannMachines,DBM)[13-14]、深度信念網絡(deepbeliefnetworks,DBN)[15]、棧式自編碼器(stackedauto-encoders,SAE)[16-17]等。1.1深度學習有多深?圖1.1深度神經網絡分類1.1.2深度學習發展1.1深度學習有多深?1.深度學習發展沿革深度學習是神經網絡發展到一定時期的產物。最早的神經網絡模型可以追溯到1943年McCulloch等提出的McCulloch-Pitts計算結構,簡稱MP模型[18],它大致模擬了人類神經元的工作原理,但需要手動設置權重,十分不便。1958年,Rosenblatt提出了感知機模型(perceptron)[19]。與MP模型相比,感知機模型能更自動合理地設置權重,但1969年Minsky和Paper證明了感知機模型只能解決線性可分問題,并且否定了多層神經網絡訓練的可能性,甚至提出了“基于感知機的研究終會失敗”的觀點,此后十多年的時間內,神經網絡領域的研究基本處于停滯狀態。1986年,欣頓(GeofferyHinton)和羅姆哈特(DavidRumelhart)等提出的反向傳播(BackPropagation,BP)算法,解決了兩層神經網絡所需要的復雜計算量問題,大大減少了原來預計的計算量,這不僅有力回擊了Minsky等人的觀點,更引領了神經網絡研究的第二次高潮。隨著20世紀80年代末到90年代初共享存儲器方式的大規模并行計算機的出現,計算處理能力大大提升,深度學習有了較快的發展。1989年,YannLeCun等提出的卷積神經網絡是一種包含卷積層的深度神經網絡模型,較早嘗試深度學習對圖像的處理。1.1深度學習有多深?2012年,Hinton構建深度神經網絡,并應用于ImageNet上,取得了質的提升和突破,同年,人們逐漸熟悉谷歌大腦(GoogleBrain)團隊。2013年,歐洲委員會發起模仿人腦的超級計算機項目,百度宣布成立深度學習機構。2014年,深度學習模型Top-5在ImageNet2014計算機識別競賽上拔得頭籌,騰訊和京東也同時分別成立了自己的深度學習研究室。2015年至2017年初,谷歌公司的人工智能團隊DeepMind所創造的阿爾法狗(AlphaGo)相繼戰勝了人類職業圍棋選手,這只“狗”引起世界的關注,人類圍棋大師們陷入沉思。這一切都顯著地表明了一個事實:深度學習正在有條不紊地發展著,其影響力不斷擴大。深度學習發展沿革,如圖1.2所示[20]。圖1.2深度學習發展主線1.1深度學習有多深?機器學習和深度學習之間的關系是包含與被包含的關系,如圖1.3所示。圖1.3機器學習和深度學習之間的關系1.1深度學習有多深?2.深度學習的局限瓶頸1.1深度學習有多深?深度神經網絡(DNN)是一個強大的框架,可應用于各種業務問題。當前,深度學習仍有一定的局限。第一,深度學習技術具有啟發式特征。深度學習能否解決一個給定的問題還暫無定論,因為目前還沒有數學理論可以表明一個“足夠好”的深度學習解決方案是存在的。該技術是啟發式的,工作即代表有效。第二,深度學習技術具有不可預期性。深度學習涉及的諸多隱含層,屬“黑箱模型”,會破壞合規性,對白箱模型形成挑戰。第三,深度學習系統化具有不成熟性。目前,沒有適合所有行業或企業需要的通用深度學習網絡,各行業或企業需要混合和匹配可用工具創建自己的解決方案,并與更新迭代的軟件相互兼容。第四,部分錯誤的結果造成不良影響。目前,深度學習不能以100%精度解決問題。深度學習延續了較淺層機器學習的大多數風險和陷阱。第五,深度學習的學習速度不如人意。深度學習系統需要進行大量訓練才有可能成功1.1深度學習有多深?盡管深度學習在圖像識別、語音識別等領域都得到落地和應用,涌現出了依圖、商湯、寒武紀等人工智能企業,但是深度學習依舊存在困擾產學研的瓶頸。第一,數據瓶頸。幾乎所有的深度神經網絡都需要大量數據作為訓練樣本,如果無法獲取大量的標注數據,深度學習無法展開。雖然谷歌等互聯網巨頭開始研發人造數據技術,但是真正的效果還有待評估。第二,認知瓶頸。這是由深度學習的特性決定。深度學習對感知型任務支持較好,而對認知型任務支持的層次較低,無法形成理解、直覺、頓悟和自我意識的能力。科學家推斷,可能是這一切源于人類知識認識的局限,而深度學習在某些方面已經超越了人類的認知能力和認知范圍。1.2深度學習如何學?1.2.1機器學習的一般方法機器學習按照方法可以分為兩大類:監督學習和無監督學習。其中,監督學習主要由分類和回歸等問題組成,無監督學習主要由聚類和關聯分析等問題組成。深度學習屬于監督學習中的一種。監督學習的一般方法,如圖1.4所示[20]。圖1.4監督學習的一般方法1.2深度學習如何學?1.2.1深度學習的一般方法隨著深度學習的爆發,最新的深度學習算法已經遠遠超越了傳統的機器學習算法對于數據的預測和分類精度。深度學習不需要自己去提取特征,而是自動地對數據進行篩選,自動地提取數據高維特征。在模型訓練階段,使用大量有標簽的或沒標簽的樣本進行訓練和學習,建立深度神經網絡模型;在預測階段,基于已學習模型,提取數據更加抽象的特征表示。圖1.5為深度學習的一般方法,與傳統機器學習中的監督學習一般方法(圖1.4)相比,少了特征工程,節約了工程師們大量工作時間。1.2深度學習如何學?圖1.5深度學習的一般方法在這兩個階段,都需要進行大量的運算操作,隨著深度神經網絡模型層數的增多,與之相對應的權重參數也以幾何級倍數增長,從而對硬件的計算能力有著越來越高的需求。1.3深度學習如何提速?要對深度學習進行提速,就要明白深度學習的應用系統架構,如圖1.6所示[20]。圖1.6表明,該系統由硬件支持系統、深度學習框架、支持技術系統和應用層面4個部分構成。該應用系統,首先要有一個巨大的數據集,并選定一種深度學習模型,每個模型都有一些內部參數需要調整,以便學習數據。而這種參數調整實際上可以歸結為優化問題,在調整這些參數時,就相當于優化特定的約束條件。圖1.6深度學習的應用系統架構1.3深度學習如何提速?百度的硅谷人工智能實驗室(SVAIL)已經為深度學習硬件提出了DeepBench基準,這一基準著重衡量基本計算的硬件性能,而不是學習模型的表現。這種方法旨在找到使計算變慢或低效的瓶頸。因此,重點在于設計一個對于深層神經網絡訓練的基本操作執行效果最佳的架構。那么基本操作有哪些呢?現在的深度學習DeepBench基準,提出四種基本運算:(1)矩陣相乘(MatrixMultiplication)—幾乎所有的深度學習模型都包含這一運算,它的計算十分密集。(2)卷積(Convolution)—這是另一個常用的運算,占用了模型中大部分的每秒浮點運算(浮點/秒)。(3)循環層(RecurrentLayers)—模型中的反饋層,并且基本上是前兩個運算的組合。(4)AllReduce——這是一個在優化前對學習到的參數進行傳遞或解析的運算序列。在跨硬件分布的深度學習網絡上執行同步優化時(如AlphaGo的例子),這一操作尤其有效。1.3深度學習如何提速?除此之外,深度學習的硬件加速器需要具備數據級別和流程化的并行性、多線程和高內存帶寬等特性。另外,由于數據的訓練時間很長,所以硬件架構必須低功耗。因此,效能功耗比(PerformanceperWatt)是硬件架構的評估標準之一。為了解決CPU在大量數據運算效率低能耗高的問題,目前有兩種發展路線:一是延用傳統馮諾依曼架構,主要以3種類型芯片為代表:GPU、FPGA、ASIC;二是采用人腦神經元結構設計的芯片,已完全擬人化為目標,追求在芯片架構上不斷逼近人腦,這類芯片被稱為類腦芯片。1.3深度學習如何提速?1.3.1基于馮諾依曼架構的加速芯片基于馮·諾依曼結構的計算機將程序和處理該程序的數據用同樣的方式分別存儲在兩個區域,一個為指令集,一個為數據集。計算機每次進行運算時需要在CPU和內存這兩個區域往復調用,因而在雙方之間產生數據流量。而隨著深度學習算法的出現,對芯片計算力的要求不斷提高,馮·諾伊曼瓶頸愈加明顯:當CPU需要在巨大的資料上執行一些簡單指令時,資料流量將嚴重降低整體效率,CPU將會在資料輸入或輸出時閑置。不僅如此,傳統芯片效率低。芯片工作時,大部分的電能將轉化為熱能,一個不帶散熱器的計算機,其CPU產生的熱量就可在短時間內將其自身融化。其他的智能化設備,也因芯片復雜耗能太高,導致續航能力差,不管如何改善工藝,高溫和漏電都是難以避免的問題。1.3深度學習如何提速?1.GPU加速技術GPU(GraphicsProcessingUnit,圖形處理器)作為硬件加速器之一,通過大量圖形處理單元與CPU協同工作,對深度學習、數據分析,以及大量計算的工程應用進行加速。自2007年NVIDIA公司發布第一個支持CUDA(ComputeUnifiedDeviceArchitecture,統一計算設備架構)的GPU后,GPU越來越強大,能夠解決復雜的計算問題。(1)GPU與顯卡的區別顯卡也叫顯示適配器,分為獨立顯卡和主板上集成顯卡,獨立顯卡主要由GPU、顯存和接口電路構成,集成顯卡沒有獨立顯存而是使用主板上的內存。GPU是圖形處理器,一般是焊接在顯卡上,大部分情況下所說GPU就是指顯卡,但實際上GPU是顯示卡的“心臟”,是顯卡的一個核心零部件,核心組成部分,兩者是“寄生與被寄生”關系。GPU本身并不能單獨工作,只有配合上附屬電路和接口,才能工作。這時它就變成了顯卡。參考鏈接:/s?id=1607965696317204020&wfr=spider&for=pc1.3深度學習如何提速?1.3深度學習如何提速?(2)GPU與CPU的區別比較GPU和CPU就是比較兩者如何處理任務的。如圖1.7所示,CPU使用幾個核心處理單元去優化串行順序任務,而GPU是大規模并行架構擁有數以千計的更小、更高效的處理單元,用于處理多個并行小任務,處理速度非常快,最適合深度學習需要高效的矩陣操作和大量的卷積操作;GPU執行矩陣操作和卷積操作比CPU快很多的真正原因是GPU的高帶寬、高速緩存、并行單元多。CPU擁有復雜的系統指令,能夠進行復雜的任務操作和調度,兩者只互不能相互代替。在執行多任務時,CPU需要等待帶寬,而GPU能夠優化帶寬。換言之,CPU擅長操作小的內存塊,而GPU則擅長操作大的內存塊。1.3深度學習如何提速?圖1.7

GPU與CPU內部結構1.3深度學習如何提速?(3)GPU種類對于深度學習的加速器GPU,現在主要品牌有AMD、NVIDIA、Intel的XeonPhi。其中,NVIDIA公司的GUP使用最為廣泛,利用其計算加速標準庫cuDNN在CUDA平臺中構建深度學習網絡變得非常容易,而且在同一張顯卡上比不使用cnDNN的速度提升5倍之多。近年來,NVIDIA的GPU架構有Tesla(特斯拉)、Fermi(費米)、Kepler(開普勒)、Maxwell(麥克斯韋)、Pascal(帕斯卡)、Volta(伏特)、Turing(圖靈)等。2017年5月,NVIDIA發布新的GPU架構Volta可以實現4倍于Pascal架構的性能,GV100是采用Volta架構的第一款GPU,TeslaV100是使用GV100GPU的第一個AI芯片。與Pascal架構相比,TeslaV100對深度神經網絡訓練和預測階段的性能分別提高12倍和5倍。GPU在浮點計算、并行處理等方面的性能遠遠高于CPU。同時,越來越多的深度學習標準庫支持基于GPU加速,如OpenCL、CUDA等。NVIDIA的GPU云平臺NGC,提供Caffe、Caffe2、MXNet、CNTK、Theano、TensorFlow、Torch等框架、深度學習SDK等,此舉將大大促進深度學習技術的發展。1.3深度學習如何提速?2.FPGA現場可編程門陣列(Fieldprogrammablegatearray,FPGA)也是OpenCL支持的硬件。與GPU相比,FPGA的硬件配置靈活,且在運行深度學習中關鍵的子程序(例如對滑動窗口的計算)時,單位能耗下通常能比GPU提供更好的表現。然而,FPGA配置需要具體硬件的知識,難度介于通用處理器(Generalpurposeprocessor,GPP)和專用集成電路(Applicationspecificintegratedcircuit,ASIC)之間;FPGA既能提供集成電路的性能優勢,又具備GPP可重新配置的靈活性。FPGA能夠簡單地通過使用觸發器(FF)來實現順序邏輯,并通過使用查找表(Lookuptable,LUT)來實現組合邏輯。現代的FPGA還含諸如全處理器內核、通信內核、運算內核和塊內存(BRAM)等硬化組件來實現一些常用功能。另外,目前的FPGA趨勢趨向于系統芯片(SystemonChip,SoC)設計方法,即ARM協處理器和FPGA通常位于同一芯片中。1.3深度學習如何提速?2.FPGA(1)1987年,VHDL成為IEEE標準;(2)1992年,GANGLION成為首個FPGA神經網絡硬件實現項目(Coxetal.);(3)1994年,Synopsys推出第一代FPGA行為綜合方案;(4)1996年,VIP成為首個FPGA的CNN實現方案(Cloutieretal.);(5)2005年,FPGA市場價值接近20億美元;(6)2006年,首次利用BP算法在FPGA上實現5GOPS的處理能力;(7)2011年,Altera推出OpenCL,支持FPGA;出現大規模的基于FPGA的CNN算法研究(Farabetetal.);(8)2016年,在微軟Catapult項目的基礎上,出現基于FPGA的數據中心CNN算法加速(Ovtcharovetal.)。目前的FPGA市場由Xilinx主導,占據超過85%的市場份額。此外,FPGA正迅速取代ASIC和應用專用標準產品(Applicationspecificstandardproducts,ASSP)來實現固定功能邏輯。對于深度學習而言,FPGA提供了優于GPP加速能力的顯著潛力。GPP在軟件層面的執行依賴于傳統的馮·諾依曼架構,指令和數據存儲于外部存儲器中,在需要時再取出;其瓶頸在于處理器和存儲器之間的通信嚴重削弱了GPP的性能,尤其影響深度學習經常需要獲取存儲信息的速率。而FPGA的可編程邏輯原件不依賴于馮·諾伊曼結構,可實現普通邏輯功能中的數據和路徑控制,,能夠利用分布式片上存儲器以及深度利用流水線并行,與前饋性深度學習方法自然契合;支持部分動態重新配置,即當FPGA的一部分被重新配置時而不擾亂其他部分正在進行的計算,這對大規模深度學習模式產生影響,可用于無法由單個FPGA容納的模型,同時還可通過將中間結果保存在本地存儲以降低高昂的全球存儲讀取費用。1.3深度學習如何提速?2.FPGAFPGA架構是為應用程序專門定制的,在開發FPGA深度學習技術時,較少強調使算法適應某固定計算結構,從而留出更多的自由去探索算法層面的優化。需要很多復雜的下層硬件控制操作技術很難在上層軟件語言中實現,但能提高FPGA的執行效率;然而這種執行效率提升是以需要大量編譯(定位和回路)時間為代價的。FPGA最常用的語言是Verilog和VHDL,兩者均為硬件描述語言(HDL)。這些與傳統的軟件語言之間的主要區別是,HDL只是單純描述硬件,而C語言等軟件語言則描述順序指令,并無需了解硬件層面的執行細節。有效描述硬件需要數字化設計和電路的專業知識,盡管一些下層的實現決定可以留給自動合成工具去實現,但往往無法達到高效的設計。因此,研究人員傾向于選擇軟件設計,因其已經非常成熟,擁有大量抽象和便利的分類來提高程序員的效率。這些趨勢使得FPGA領域目前更加青睞高度抽象化的設計工具。1.3深度學習如何提速?FPGA深度學習研究里程碑:(1)1987年,VHDL成為IEEE標準;(2)1992年,GANGLION成為首個FPGA神經網絡硬件實現項目(Coxetal.);(3)1994年,Synopsys推出第一代FPGA行為綜合方案;(4)1996年,VIP成為首個FPGA的CNN實現方案(Cloutieretal.);(5)2005年,FPGA市場價值接近20億美元;(6)2006年,首次利用BP算法在FPGA上實現5GOPS的處理能力;(7)2011年,Altera推出OpenCL,支持FPGA;出現大規模的基于FPGA的CNN算法研究(Farabetetal.);(8)2016年,在微軟Catapult項目的基礎上,出現基于FPGA的數據中心CNN算法加速(Ovtcharovetal.)。1.3深度學習如何提速?3.ASIC雖然GPU并行處理能力高,但不是針對機器學習而設計的,而FPGA要求用戶自主編程,對用戶的要求過高。芯片要同時具備并行化、低功耗、高性能等特性,還需要實現本地即時計算,這時ASIC(專用集成電路)的優勢明顯。但是,ASIC的研發周期長,可能無法跟上市場的變化。所以,SoC+IP模式較為流行。SoC可以在芯片上集成許多不同模塊的芯片。SoC上每個模塊都可以稱為IP,可以自行設計,也可以由別的公司設計,然后集成到自己的芯片上。與ASIC相比,該模式成本低、上市快、靈活適配用戶需求。市場上也有一些公司專注于機器學習專用的ASIC開發。如谷歌打造的Tensor處理器(全稱:TensorProcessingUnit;簡稱:TPU)是專為深度學習語言TensorFlow開發的一種量身定做的芯片。因為是專為TensorFlow所準備,故谷歌也不需要它擁有任何可定制性,只要能完美支持TensorFlow需要的所有指令即可。同時,TPU運行TensorFlow的效率是所有設備中最高的。谷歌開發TPU的最顯而易見的目的就是:追求極致的效率。與CPU/GPU一樣,TPU也是可編程的,它可以在卷積神經網絡、長短期記憶網絡(Longandshorttermmemorynetwork,LSTM)模型等各種大型網絡上執行CISC指令。1.3深度學習如何提速?TPU的內部結構,如圖1.8所示。另外,中科院計算所旗下的武紀系列:針對神經網絡的原型處理器結構的寒武紀1號,面向大規模神經網絡的寒武紀2號,面向多種機器學習算法的寒武紀3號,也取得了很大成功。ASIC的性能高于GPU和FPGA,其局限性是開發周期長。針對機器學習設計的ASIC芯片,對資金和技術的要求更高。谷歌之前曾用FPGA來解決價格低、效率和性能高等問題,但由于FPGA性能與ASIC存在很大的差距,最終轉向定制ASIC。圖1.8TPU的內部結構1.3深度學習如何提速?1.3.2基于人腦神經元結構的加速芯片基于人腦神經元結構的加速芯片,也稱類腦芯片。類腦芯片架構就是模擬人腦的神經突觸傳遞結構。眾多的處理器類似于神經元,通訊系統類似于神經纖維,每個神經元的計算都是在本地進行的,從整體上看神經元是分布式進行工作的,也就是說對整體任務進行了分工,每個神經元只負責一部分計算。處理海量數據時優勢明顯,并且功耗比傳統芯片更低。目前,類腦芯片的研究就是基于微電子技術和新型神經形態器件的結合,希望突破傳統計算架構,實現存儲與計算的深度融合,大幅提升計算性能、提高集成度、降低能耗。與依靠馮諾依曼結構的芯片相比,類腦芯片前景雖好,但仍處于研發,甚至是概念階段。1.3深度學習如何提速?1.英特爾PohoikiBeach芯片系統2017年9月,Intel發布了全新的神經擬態芯片“Loihi”,之后不斷取得新的突破和進展,還成立了Intel神經擬態研究社區(INRC),推動神經擬態計算的發展。英特爾公司又宣布了全新神經擬態PohoikiBeach芯片系統。該系統包含多達64顆Loihi芯片,集成了1320億個晶體管,總面積3840平方毫米,擁有800多萬個“神經元”(相當于某些小型嚙齒動物的大腦)和80億個“突觸”。IntelLoihi芯片采用14nm工藝制造,每顆集成21億個晶體管,核心面積60平方毫米,內部集成3個Quarkx86CPU核心、128個神經擬態計算核心、13萬個神經元、1.3億個突觸,并有包括PythonAPI在內的編程工具鏈支持。這種芯片不采用傳統硅芯片的馮諾依曼計算模型,而是模仿人腦原理的神經擬態計算方式,并且是異步電路,不需要全局時鐘信號,而是使用異步脈沖神經網絡。英特爾宣稱,該系統在人工智能任務中的執行速度要比傳統CPU快1000倍,能效提高10000倍。該神經擬態系統的問世,預示著人類向“模擬大腦”邁出了一大步。與人腦中的神經元類似,Loihi擁有數字“軸突”用于向臨近神經元發送電信號,也有“樹突”用于接收信號,在兩者之間還有用于連接的“突觸”。英特爾表示,基于這種芯片的系統已經被用于模擬皮膚的觸覺感應、控制假腿、玩桌上足球游戲等任務。最新的64芯片系統已分享給60多個INRC生態合作伙伴。測試表明,運行實時深度學習基準測試時,功耗比傳統CPU低約109倍,對比特制的IoT推理硬件功耗低5倍,而且網絡規模擴大50倍后仍能維持實時性能,功耗僅增加30%、IoT硬件的話功耗會增加5倍以上,并失去實時性。按照計劃,Intel2019年底將做到1億個神經元、10000億個突觸,預計會有768顆芯片、1.5萬億個晶體管1.3深度學習如何提速?1.3深度學習如何提速?2.

IBMTrueNorth(SyNAPSE芯片)IBMTrueNorth(SyNAPSE芯片)有4096個內核,每個內核簡明模仿了人腦神經結構,每個內核有256個“神經元”(處理器)、256個“軸突”(存儲器)和64000個突觸(神經元和軸突之間的通信)。不同芯片還可以通過陣列方式互聯。IBM稱如果48顆TrueNorth芯片組建有4800萬個神經元的網絡,那么48顆芯片帶來的智力水平相當于普通老鼠。2014年后,有報道稱IBM公司開發由64個“TrueNorth”類腦芯片驅動的新型超級計算機,以進一步降低功能、開展大型深度神經網絡的實時分析并應用于高速空中目標識別。如果該系統功耗可以達到人腦級別,那么理論上就可以在64顆芯片原型基礎上進一步擴展,從而能夠同時處理任何數量的實時識別任務。1.3深度學習如何提速?3.高通Zeroth芯片2013年,高通公布一款Zeroth芯片。該芯片通過類似于神經傳導物質多巴胺的學習(又名“正強化”)來完成對行為和結果進行預編程。為了讓搭載該芯片的設備能隨時自我學習并從周圍環境中獲得反饋,高通開發了一套軟件工具。高通用裝載該芯片的機器小車在受人腦啟發的算法下完成了尋路、躲避障礙等任務。4.西井科技DeepSouth芯片上海西井科技推出自主研發的擁有100億規模的神經元人腦仿真模擬器(WestwellBrain)和可商用化的5000萬類腦神經元芯片(DeepSouth)兩款產品。DeepSouth是一款可商用化的芯片,有50多億“神經突觸”,能模擬高達5000萬級別的“神經元”,具備“自我學習、自我實時提高”能力,還可直接在芯片上無需網絡完成計算,在同一任務下的功耗僅為傳統芯片的幾十分之一到幾百分之一。1.3深度學習如何提速?5.

“達爾文”類腦芯片2015年,達爾文的類腦芯片是由浙江大學與杭州電子科技大學聯合研發,是國內首款基于硅材料的脈沖神經網絡類腦芯片,芯片面積為25平方毫米,內含500萬個晶體管,集成了2048個硅材質的仿生神經元,可支持超過400萬個神經突觸和15個不同的突觸延遲。該款芯片可從外界接受并累計刺激,產生脈沖(電信號)進行信息的處理和傳遞,,可以識別不同人手寫的1-10這10個數字。該款芯片在接受人類腦電波后,可控制電腦屏幕上籃球的移動方向;在熟悉并學習了操作者的腦電波后,會在后續接受相同刺激時做出同樣反映。6.

AI-CTX芯片AI-CTX屬一款國內小型的類腦芯片。該芯片的每個神經元都具有與人腦神經元類似的電學特征與動態參數、簡單的運算與存儲功能。該芯片采用一種特殊的布線方式,使各芯片之間的交流突破物理限制,進而增加芯片群組的原有網絡。該芯片擅長處理如溫度、氣壓、人體信號、loT等包含時間參數的數據,而不適合處理靜態硬盤數據。深度學習框架是專為深度學習領域開發的具有一套獨立的體系結構、統一的風格模板、可以復用的解決方案,一般具有高內聚、嚴規范、可擴展、可維護、高通用等特點。隨著深度學習的日益火熱,越來越多的深度學習框架被開發出來。目前主流的深度學習框架,如表1.1所示。1.4主流深度學習框架1.4主流深度學習框架框架開發語言適合模型優點缺點Caffe1.0[21]C++/CUDACNN造合前饋網絡和圖像處理、微調已有的網絡;定型模型,無需編寫任何代碼。不適合RNN;用于大型CNN,操作過于頻煩;擴展性差,不夠精減;更新緩慢。TensorFlow[22]C++/CUDA/PythonCNN/RNN/RL計算圖抽象化,易于理解;編譯時間快于Theano;用TensorBoard進行可視化;支持數據并行和模型并行速度較慢,內存占用較大;不提供商業支持;已預定型的模型不多;不易工具化;在大型軟件項目中易出錯。Torch[23]Lua/C/CUDACNN/RNN大量模塊化組件,易于組合;易于編寫定義層;預定型的模型很多。要學習Lua和使用Lua作為主語言;即插即用,代碼相對較少;不提供商業支持;文檔質量不高。Theano[22]PythonC++/CUDACNN/RNNPython+NumPy實現,接口簡單;計算圖抽象化,易于理解;RNN與計算圖配合好;有很多高級包派生。原始Theano級別較低;大型模型的編譯時間較長;對已預定模型的支持不夠完善;只支持單個GPUMXNet[24]C++/CUDACNN造合前饋網絡和圖像處理、微調已有的網絡;定型模型,無需編寫任何代碼;有更多學界用戶對接模型;支持GPU、CPU分布式計算。不適合RNN;群集運維成本比DL4J高。CNTKPythonC++BrainScriptRNN/CNN具高度的可定制性,允許用戶選擇自己的參數、算法和網絡,強拓展性;在BabiRNN和MNISTRNN測試上要比TensorFlow和Theano好得多,但在CNN測試上要比TensorFlow差一些。以一種新的語言—NetworkDescriptionLanguage(NDL)來實現,缺乏可視化。表1.1主流深度學習框架1.5本書內容與體系結構圖1.9本書內容與結構本書內容與體系結構,如圖1.9所示。本書共分10章。第1章從深度學習的深度、學習方法、加速途徑和支持系統等方面進行分析,使讀者對深度學習有初步了解。

第2章為人工神經網絡。本章內容包括神經網絡結構、原理、訓練與預測及優化算法,神經網絡和激活函數的計算圖及BP算法,過擬合概念及防止過擬合方法。本章是后續各章的基礎。第3章為模糊神經網絡。本章從模糊數學與神經網絡的結合點出發,分析了常規模糊神經網絡、模糊聯想記憶神經網絡、神經模糊推理系統、神經網絡近似邏輯等結構、原理、方法與應用。第4章為概率神經網絡。本章著重分析概率神經網絡結構、原理與實現架構及其在腦腫瘤分類中應用。1.5本書內容與體系結構第5章為小波神經網絡。本章根據小波變換與常規神經網絡結合緊密程度,分析了前置小波神經網絡和嵌入小波神經網絡的兩種結構,討論了訓練優化、結構優化、小波函數優化等問題,并將其應用于信道盲均衡問題中。第6章為卷積神經網絡。本章從常規卷積神經網絡(CNN)的輸入層、卷積層、激勵層、池化層和輸出層功能出發,闡述了LeNet-5、VGGNet、ResNets、DenseNet、AlexNet、Inception等基本結構,研究了特征融合卷積神經網絡和深度引導濾波網絡等擴展模型,分析了遙感圖像分類和運動模糊去除實例。第7章為深度生成對抗網絡。本章以生成對抗網絡為基礎,分析了自注意力機制條件生成對抗網絡、小波深度卷積生成對抗網絡和高頻小波生成對抗網絡、多尺度生成對抗網絡,研究分析了三維肝臟及腫瘤區域自動分割和運動模糊圖像復原實例。1.5本書內容與體系結構第8章為深度受限玻爾茲曼機。本章討論了玻爾茲曼機、受限玻爾茲曼機、稀疏受限玻爾茲曼機、競爭型稀疏受限玻爾茲曼機和分類受限玻爾茲曼機的工作原理,分析了步態特征提取及其識別實例。第9章為深度置信網絡。本章從常規深度置信網絡出發,討論了稀疏深度信念網絡、Gamma深度置信網絡、自適應深度信念網絡、全參數動態學習深度信念網絡、KPCA深度信念網絡及優化深度信念網絡及深度置信網絡在注意缺陷多動障礙早期診斷中的應用。第10章為深度自編碼器。本章從自編碼原理開始,分析與研究了變分自編碼器、堆疊變分自動編碼器、深度卷積變分自編碼器、自編碼回聲狀態網絡、深度典型相關稀疏自編碼器、雙重對抗自編碼網絡等原理模型,分析了基于互信息稀疏自編碼的軟測量模型、基于深度自編碼網絡的模糊推理模型、基于特征聚類的快速稀疏自編碼模型及基于棧式降噪稀疏自編碼器的極限學習機等應用模型,最后,研究了特征提取及調制識別算法。PPT模板下載:/moban/行業PPT模板:/hangye/節日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/PPT論壇:

2.1神經網絡演進2.2神經網絡訓練與預測2.3優化算法2.4計算圖2.5正則化懲罰項第二章人工神經網絡2.6神經網絡BP算法2.7過擬合與欠擬合第二章人工神經網絡從生物神經元與人工神經元概率出發,按神經網絡結構演進方式,討論了神經網絡結構、原理、訓練與預測過程,分析了優化算法,描述了神經網絡和激活函數的計算圖;從正則化懲罰項引入出發,分析了參數范數懲罰、L1/L2參數正則化;以三層神經網絡為例,分析了神經網絡BP算法;從過擬合與欠擬合概念出發,分析了減少特征變量、權重正則化、交叉驗證、Dropout正則化和貝葉斯規則正則化等防止過擬合方法。本章是后續各章的基礎。神經網絡是一門重要的機器學習技術,是目前最為火熱的深度學習的基礎。學習神經網絡不僅可以掌握一門強大的機器學習方法,同時也可以更好地理解深度學習技術。摘要現以一種簡單、循序方式介紹神經網絡。神經網絡是一種模擬人腦的網絡以期能夠實現類人工智能的機器學習技術。人腦中的神經網絡是一個非常復雜的組織。成人大腦中約有1000億個神經元之多,如圖2.1所示[25]。2.1神經網絡演進那么機器學習中的神經網絡是如何實現這種模擬,并達到一個驚人的良好效果的?圖2.1人腦示意[25]一個經典的神經網絡包含輸入層、輸出層、中間層(也叫隱含層)的三層網絡,如圖2.2所示。2.1神經網絡演進(a)從左到右

(b)從下到上圖2.2神經網絡結構2.1神經網絡演進圖中,輸入層有3個輸入單元,隱含層有4個單元,輸出層有2個單元。設計一個神經網絡時,輸入層與輸出層的節點數往往是固定的,中間層可以自由指定;神經網絡結構圖中的拓撲與箭頭代表著預測過程中數據的流向,與訓練時的數據流有一定的區別;結構圖中的關鍵不是圓圈(代表“神經元”),而是連接線(代表“神經元”之間的連接)。每個連接線對應一個不同的權重(其值稱為權值),這是需要訓練的。人工神經網絡由神經元模型構成,這種由許多神經元組成的信息處理網絡具有并行分布結構。每個神經元具有單一輸出,并且能夠與其它神經元連接;存在許多(多重)輸出連接方法,每種連接方法對應一個連接權系數。嚴格地說,人工神經網絡是一種具有下列特性的有向圖:(1)對于每個節點存在一個狀態變量

;(2)從節點至節點,存在一個連續權系數;(3)對于每個節點,存在一個閾值;(4)對于每個節點,定義一個變換函數。2.1神經網絡演進2.1.1神經元1.生物神經元一個神經元通常具有多個樹突,主要用來接受傳入信息;而軸突只有一條,軸突尾端有許多軸突末梢可以給其他多個神經元傳遞信息。軸突末梢與其他神經元的樹突產生連接,從而傳遞信號;這個連接的位置在生物學上叫做“突觸”,如圖2.3所示。圖2.3生物神經元2.1神經網絡演進2.人工神經元1943年,心理學家McCulloch和數學家Pitts參考了生物神經元的結構,發表了抽象的神經元模型,簡稱MP模型。MP模型包含輸入、輸出與計算功能。輸入可以類比為神經元的樹突,而輸出可以類比為神經元的軸突,計算則可以類比為細胞核。包含有3個輸入,1個輸出,以及2個計算功能的神經元,如圖2.4所示。圖2.4神經元模型注意:中間的箭頭線,稱為“連接”,每一個連接上都有一個權重。一個神經網絡的訓練算法就是讓權重的值調整到最佳,使整個網絡的預測效果最好。2.1神經網絡演進

如果用x來表示輸入、用w來表示權值,則一個表示連接的有向箭頭可以這樣理解:在初端,傳遞的信號大小仍然是x,端中間有加權參數w,經過這個加權后的信號會變成

,因此在連接的末端,信號大小變成

,如圖2.5所示。

在一些模型里,有向箭頭可能表示的是值的不變傳遞。而在神經元模型,每個有向箭頭表示值的加權傳遞。圖2.5一個連接2.1神經網絡演進如果將神經元中的所有變量用符號表示,則輸出的計算過程,如圖2.6所示。(2.1.1)式中,b為神經元單元的偏置(閾值),

為連接權向量,為w中的第i個連接權系數,N為輸入信號數目,y為神經元輸出,f()為輸出變換函數,有時也稱激發或激勵函數,往往采用0和1二值函數或S形函數。圖2.6中,激勵函數為符號函數sgn。可見,y是在輸入和權值的線性加權和疊加了一個函數f的值。在MP模型里,函數f是sgn函數,也就是取符號函數。這個函數當輸入大于0時,輸出1;否則,輸出0。2.1神經網絡演進現對人工神經元模型作一些擴展。首先將sum函數與sgn函數合并到一個圓圈里,代表神經元的內部計算。其次,把輸入x與輸出y寫到連接線的左上方;最后,一個神經元可以引出多個代表輸出的有向箭頭,但值都是一樣的,如圖2.7所示。神經元可以看作一個計算與存儲單元。計算是神經元對其輸入進行計算功能,存儲是神經元暫存計算結果,并傳遞到下一層。圖2.7神經元擴展2.1神經網絡演進當由“神經元”組成網絡以后,描述網絡中的某個“神經元”時,更多地用“單元”(unit)來指代。同時由于神經網絡的表現形式是一個有向圖,有時也會用“節點”(node)來表達同樣的意思。對神經元模型的理解:有一個數據,稱之為樣本;樣本有四個屬性,其中三個屬性已知,一個屬性未知,現需要通過三個已知屬性預測未知屬性。具體辦法就是使用神經元的公式進行計算。三個已知屬性值是x1,

x2

,x3,未知屬性y可以通過公式計算出來。MP模型是建立神經網絡大廈的地基,但其權重值是預先設置的,不能學習。而Hebb學習規則認為人腦神經細胞的突觸(也就是連接)上的強度上可以變化的。因此,可以通過調整權值的方法讓機器學習,這為后面的學習算法奠定了基礎。2.1神經網絡演進2.1.2神經網絡(感知器)1958年,Rosenblatt提出由兩層神經元組成的神經網絡,如圖2.8所示,稱之為感知器(Perceptron)或感知機,它是當時首個可以學習的人工神經網絡。圖2.8單層神經網絡2.1神經網絡演進在原來MP模型的“輸入”位置添加神經元節點,標志其為“輸入單元”,并將權值

寫到“連接線”的中間。在“感知器”中,有兩個層次,分別是輸入層和輸出層。輸入層里的“輸入單元”只負責傳輸數據,不做計算;輸出層的“輸出單元”對前面一層的輸入進行計算;將需要計算的層次稱之為“計算層”,并把擁有一個計算層的網絡稱之為“單層神經網絡”。如果要預測的目標不再是一個值,而是一個向量,那么可以在輸出層再增加一個“輸出單元”,形成帶有兩個輸出單元的單層神經網絡,如圖2.9所示。2.1神經網絡演進(a)輸出(b)輸出(c)輸出

和(d)輸出

和圖2.9單層神經網絡2.1神經網絡演進

(2.1.2)

2.1神經網絡演進與神經元模型不同,感知器中權值是通過訓練得到的,類似一個邏輯回歸模型,可以做線性分類任務。可以用決策分界來形象的表達分類效果,決策分界就是在二維的數據平面中劃出一條直線,如圖2.10所示。當數據維數為3,就是劃出一個平面(2維);當數據維數為N時,就是劃出一個N-1維的超平面。圖2.10單層神經網絡(決策分界)注意:感知器只能做簡單的線性分類,對XOR(異或)這樣的簡單分類任務無法解決。2.1神經網絡演進2.1.3兩層神經網絡(多層感知器)Minsky認為單層神經網絡無法解決異或問題,但當增加一個計算層以后,兩層神經網絡不僅可以解決異或問題,而且具有非常好的非線性分類效果,不過當時兩層神經網絡的計算是一個問題,沒有一個較好的解法。1986年,Rumelhar和Hinton等提出了反向傳播(Backpropagation,BP)算法,解決了兩層神經網絡所需要的復雜計算量問題。兩層神經網絡包含一個輸入層、一個輸出層、一個中間層。此時,中間層和輸出層都是計算層,如圖2.11所示。用上標來區分不同層次之間的變量。2.1神經網絡演進(a)中間層(b)輸出層(c)向量形式使用矩陣運算來表達整個計算公式為(2.1.3)可見,矩陣表示簡潔,而且不受節點數增多的影響(無論有多少節點參與運算,乘法兩端都只有一個變量)。(2.1.4)2.1神經網絡演進2.1.4偏置單元

圖2.12兩層神經網絡(考慮偏置節點)圖2.12表明,偏置節點沒有輸入(前一層中沒有箭頭指向它)。有些神經網絡的結構圖中會把偏置節點明顯畫出來,有些不會。一般情況下,不會明確畫出偏置節點。2.1神經網絡演進考慮偏置以后,一個神經網絡的矩陣運算公式為(2.1.5)(2.1.6)注意,在兩層神經網絡中,不再使用sgn函數作為函數f,而是使用平滑函數sigmoid作為函數f。事實上,神經網絡本質上是通過參數與激活函數來擬合特征與目標之間的真實函數關系。2.1神經網絡演進與單層神經網絡不同,兩層神經網絡可以無限逼近任意連續函數。也就是說,面對復雜的非線性分類任務,兩層(帶一個隱藏層)神經網絡可以很好的分類。圖2.13中,紅色的線與藍色的線代表數據;而紅色區域和藍色區域代表由神經網絡劃開的區域,兩者的分界線就是決策分界。2.1神經網絡演進圖2.13

兩層神經網絡(決策分界)圖2.13表明,兩層神經網絡的決策分界線非常平滑,分類效果很好。有趣的是,單層網絡只能做線性分類任務,兩層神經網絡中的后一層也是線性分類層,應該只能做線性分類任務。但為什么兩個線性分類任務結合起來就可以做非線性分類任務?2.1神經網絡演進輸出層的決策分界,如圖2.14所示。圖2.14表明,輸出層的決策分界仍然是直線。關鍵是從輸入層到隱含層,數據發生空間變換。也就是說,兩層神經網絡中,隱含層對原始的數據進行了一個空間變換,使其可以被線性分類,然后輸出層的決策分界劃出了一個線性分類分界線,對其進行分類。這就說明,兩層神經網絡可以做非線性分類的關鍵是隱含層,其參數矩陣的作用就是使數據的原始坐標空間從線性不可分轉換成線性可分。兩層神經網絡通過兩層的線性模型模擬了數據內真實的非線性函數。因此,多層的神經網絡的本質就是復雜函數擬合。2.1神經網絡演進圖2.14

兩層神經網絡(空間變換)2.1神經網絡演進對于隱含層節點數進行設計時,輸入層節點數需要與特征的維度匹配;輸出層節點數要與目標的維度匹配;中間層節點數,由設計者指定的。節點數的多少,會影響整個模型的效果。如何決定中間層的節點數呢?一般由經驗設置。較好的方法就是預先設定幾個可選值,通過切換這幾個值來觀察整個模型的預測效果,選擇效果最好的值作為最終選擇。這種方法又叫做網格搜索(GridSearch,GS)。2.1神經網絡演進了解了兩層神經網絡結構以后,就可以理解類似的網絡。例如,EasyPR字符識別網絡架構,如圖2.15所示EasyPR使用了字符的圖像去進行字符文字的識別。輸入為120維向量,輸出為要預測的文字類別,共有65類。實驗表明,當隱含層數目為40時,整個網絡在測試集上的效果較好。因此,選擇網絡的最終結構為120,40和65。圖2.15EasyPR字符識別網絡2.2神經網絡訓練與預測2.2.1神經網絡訓練神經網絡的一般方法分為訓練與預測階段。在訓練階段,需要準備好原始數據和與之對應的分類標簽數據,通過訓練得到模型A。在預測階段,對新的數據套用該模型A,可以預測新輸入數據所屬類別。

(2.2.1)2.2神經網絡訓練與預測

2.2神經網絡訓練與預測反向傳播算法基于鏈式法則,鏈式法則是微積分中的求導法則,用于求一個復合函數的導數。按鏈式法則,首先計算輸出層梯度,然后計算第二個參數矩陣的梯度,接著計算中間層的梯度,再然后計算第一個參數矩陣的梯度,最后計算輸入層梯度。計算結束以后,就獲得了兩個參數矩陣的梯度。機器學習問題之所以稱為學習問題,而不是優化問題,就是因為它不僅要求數據在訓練集上求得一個較小的誤差,在測試集上也要表現好。因為模型最終是要部署到沒有見過訓練數據的真實場景。提升模型在測試集上的預測效果稱為泛化(generalization),相關方法被稱作正則化(Regularization)2.2神經網絡訓練與預測2.2.2神經網絡預測

2.3優化算法

2.3優化算法優化算法分為兩大類1)一階優化算法這種算法使用各參數的梯度值來最小化或最大化損失函數。最常用的一階優化算法是梯度下降算法。對單變量函數,使用導數來分析;對于多變量函數,用梯度取代導數,并使用偏導數來計算梯度。梯度和導數之間的一個主要區別是函數的梯度形成了一個向量場。2)二階優化算法二階優化算法使用了二階導數(也叫做Hessian方法)來最小化或最大化損失函數。由于二階導數的計算成本很高,所以這種方法并沒有廣泛使用。神經網絡優化算法主要有:梯度下降、動量法、AdaGrad算法、RMSProp算法、AdaDelta算法、Adam算法等。2.3優化算法2.3.1梯度下降法在訓練和優化智能系統時,梯度下降是一種最重要的技術和基礎。梯度下降的功能是:通過尋找最小值控制方差、更新模型參數,最終使模型收斂。如今,梯度下降主要用于神經網絡模型的參數更新,即通過在一個方向上更新和調整模型參數來最小化損失函數,這是神經網絡中最常用的優化算法。反向傳播算法使訓練深層神經網絡成為可能。反向傳播算法在前向傳播中計算輸入信號與其對應的權重的乘積并求和,由激活函數將輸入信號轉換為輸出信號;然后在反向傳播過程中回傳相關誤差,計算誤差函數相對于參數的梯度并在負梯度方向上更新模型參數。2.3優化算法對于非線性模型,基于誤差函數的損失函數定義為(2.3.1)

(2.3.2)2.3優化算法圖2.16顯示了權重更新過程與梯度向量誤差的方向相反,其中U形曲線為梯度。注意:當權重值太小或太大時,會存在較大的誤差,需要更新和優化權重,使其轉化為合適值,所以試圖在與梯度相反的方向找到一個局部最優值。梯度下降法的迭代公式為(2.3.3)2.3優化算法圖2.16權重更新方向與梯度方向相反

(2.3.4)以上是梯度下降法的最基本形式。2.3優化算法2.3.2梯度下降法的變體上面介紹的由梯度下降法更新模型參數(權重與偏置),每次的參數更新都使用了整個訓練樣本數據集,這種方式也就是批量梯度下降法(BatchGradientDescent,BGD)。在BGD中,整個數據集都參與梯度計算,這樣得到的梯度是一個標準梯度,易于得到全局最優解,總迭代次數少。但在處理大型數據集時速度很慢且難以控制,甚至導致內存溢出。2.3優化算法1.隨機梯度下降隨機梯度下降(Stochasticgradientdescent,SGD)是每次從訓練集中隨機采樣一個樣本計算Loss和梯度,然后更新參數,即(2.3.5)

2.3優化算法2.小批量梯度下降小批量梯度下降是每次從訓練集中隨機采樣m個樣本,組成一個小批量(mini-batch)來計算損失函數Loss并更新參數。損失函數定義為(2.3.6)2.3優化算法然后,再按式(2.3.5)更新。使用小批量梯度下降的優點如下:(1)可以減少參數更新的波動,最終得到效果更好和更穩定的收斂。(2)可以使用最新的深層學習庫中通用的矩陣優化方法,使計算小批量數據的梯度更加高效。(3)通常來說,小批量樣本的大小范圍是從50到256,可以根據實際問題而有所不同。(4)在訓練神經網絡時,通常都會選擇小批量梯度下降算法。2.3優化算法2.3.3

優化梯度下降算法1.Momentum算法

(2.3.7)(2.3.8)

2.3優化算法

2.3優化算法圖2.17平滑處理

圖2.17(b)是進行一次平滑處理的結果。最常見的方法是用一個滑動窗口滑過各個數據點,計算窗口的平均值,從而得到數據的滑動平均值。也可以使用指數加權平均來對數據做平滑。2.3優化算法若(2.3.9)則其展開式為(2.3.10)式(2.3.10)稱為指數加權移動平均。當k比較小時,其最近的數據太少,導致估計誤差比較大,因此修正為2.3優化算法(2.3.11)

圖2.18修正結果2.3優化算法2.Nesterov梯度加速法

2.3優化算法然后使用(2.3.13)來更新參數

現在,通過使網絡更新與誤差函數的斜率相適應,并依次加速SGD,也可根據每個參數的重要性來調整和更新對應參數,以執行更大或更小的更新幅度。因此,不是通過計算當前參數的梯度值,而是通過相關參數的大致未來位置來有效預知未來,即(2.3.12)2.3優化算法3.AdaGrad算法

(2.3.14)2.3優化算法

(2.3.15)

2.3優化算法如果某個方向上梯度震蕩很大,應該減小其步長;而震蕩大,則這個方向的s也較大,歸一化的梯度就小了。如果某個方向上梯度震蕩很小,應該增大其步長;而震蕩小,則這個方向的s也較小,歸一化的梯度就大了。因此,通過AdaGrad可以調整不同維度上的步長,加快收斂速度。不過,當學習率在迭代早期降得較快且當前解依然不佳時,AdaGrad算法在迭代后期由于學習率過小,可能較難找到?個有?的解。目標函數2.3優化算法(2.3.16)時,AdaGrad算法對自變量的迭代軌跡,如圖2.19所示。圖2.19自變量迭代軌跡2.3優化算法4.RMSprop算法

(2.3.17)2.3優化算法

對目標函數式(2.3.16),由RMSProp算法觀察自變量迭代軌跡,如圖2.20所示。圖2.20迭代軌跡2.3優化算法2.3優化算法5.AdaDelta算法2.3優化算法2.3優化算法6.Adam算法

Adam算法與傳統的隨機梯度下降不同。隨機梯度下降保持單一的學習率更新所有的權重,學習率在訓練過程中并不會改變。而Adam算法通過計算梯度的一階矩估計和二階矩估計而為不同的參數設計獨立的自適應性學習率。Adam算法為兩種隨機梯度下降擴展式的優點集合,即:適應性梯度算法(AdaGrad)為每一個參數保留一個學習率以提升在稀疏梯度(即自然語言和計算機視覺問題)上的性能。2.3優化算法6.Adam算法

2.3優化算法2.3優化算法2.3優化算法2.3優化算法2.4計算圖一個機器學習任務的核心是模型的定義以及模型的參數求解方式,對這兩者進行抽象之后,可以確定一個唯一的計算邏輯,將這個邏輯用圖表示,稱之為計算圖。計算圖表現為有向無環圖,定義了數據的流轉方式、數據的計算方式,以及各種計算之間的相互依賴關系等。按照數據結構的定義,圖由頂點集V(G)和邊集E(G)組成,記為G=(V,E)。其中E(G)是邊的有限集合,邊是頂點的無序對(無向圖)或有序對(有向圖)。對有向圖來說,E(G)是有向邊(也稱弧(Arc))的有限集合,弧是頂點的有序對,記為<v,w>,v、w是頂點,v為弧尾(箭頭根部),w為弧頭(箭頭處)。對無向圖來說,E(G)是邊的有限集合,邊是頂點的無序對,記為(v,w)或者(w,v),并且(v,w)=(w,v)。2.4計算圖2.4.1計算圖含義計算圖就是將計算過程圖形化表示出來,是一種描述方程的“語言”,這個語言是用來描述一個函數,神經網絡就是一個函數,所以需要描述函數的語言。其實圖(graph)有很多種定義方法,這里用節點(node)表示一個操作(簡單函數)、邊(edge)表示一個變量,可以是一個標量、向量甚至是張量[32]。計算圖和反向傳播都是深度學習訓練神經網絡的重要核心概念。2.4計算圖1.正向傳播正向傳播,也稱前向傳播,是評估由計算圖表示的數學表達式的值的過程。前向傳播意味著將變量的值從左側(輸入)向前傳遞到輸出所在的右側。神經網絡的正向傳播中進行的矩陣的乘積運算在幾何學領域被稱為“仿射變換”。因此,這里將進行仿射變換的處理實現稱為“Affine層”[33]。2.后向傳播后向傳播是從右(輸出)向左(輸入)傳遞變量的值,目的是計算每個輸入相對于最終輸出的梯度,這些梯度對于使用梯度下降訓練神經網絡至關重要。3.加法/乘法節點正反向傳播的計算圖[34]2.4計算圖3.加法/乘法節點正反向傳播的計算圖(1)加法節點的正反向傳播。其計算圖,如圖2.21所示。圖2.21加法節點2.4計算圖(2)乘法節點正反向傳播。其計算圖,如圖2.22所示。圖2.22乘法節點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層的計算圖神經網絡中進行的處理有推理(inference)和學習兩個階段。神經網絡的推理通常不使用Softmax層。神經網絡中未被正規化的輸出結果有時被稱為“得分”。也就是說,當神經網絡的推理只需要給出一個答案的情況下,只對得分最大值感興趣;所以不需要Softmax層,而神經網絡的學習階段則需要Softmax層。使用交叉熵誤差作為softmax函數的損失函數后,反向傳播得到這樣“漂亮”的結果。實際上,這樣“漂亮”的結果并不是偶然的;而是為了得到這樣的結果,特意設計了交叉熵誤差函數。回歸問題中輸出層使用“恒等函數”,損失函數使用“平方和誤差”,也是出于同樣的理由。也就是說,使用“平方和誤差”作為“恒等函數”的損失函數,反向傳播才能得到“漂亮”的結果。2.4計算圖softmax函數會將輸入值正規化之后再輸出。現用計算圖來表示Softmax-with-Loss層,如圖2.25所示。圖2.25Softmax-with-Loss層的計算圖圖中,計算圖中省略了Softmax和CrossEntropyError層的內容。2.4計算圖(1)正向傳播Softmax函數可表示為(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層的計算函數2.4計算圖2.4.3激活函數的計算圖1.Sigmoid反向傳播(1)函數式(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層像電路中的開關。(1)正向傳播時,有電流通過時,開關設為ON;沒有電流通過,開關設為OFF。(2)反向傳播時,開關為ON,電流會直接通過;開關為OFF,則不會有電流通過。2.5正則化懲罰項神經網絡的學習能力過強、復雜度過高或訓練時間太久或激活函數不合適或數據量太少等情況,常常會導致過擬合(overfitting)。正則化方法即為在此時向原始模型引入額外信息,以便防止過擬合從而提高模型泛化性能的一類方法的統稱。在實際的深度學習場景中,可以發現,最好的擬合模型(從最小化泛化誤差的意義上)是一個適當正則化的大型模型。2.5正則化懲罰項2.5.1參數范數懲罰

(2.5.1)

2.5正則化懲罰項2.5.2L2參數正則化2.5正則化懲罰項2.5正則化懲罰項2.5正則化懲罰項圖2.32目標函數的等高線2.5正則化懲罰項2.5正則化懲罰項在原目標函數的基礎上增加L2范數懲罰,將原函數進行一定程度平滑的效果,由其梯度函數體現。對于一類存在大量駐點(Stationarypoint,即梯度為0

溫馨提示

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

最新文檔

評論

0/150

提交評論