機器學(xué)習及應(yīng)用-第11章-深度學(xué)習初步_第1頁
機器學(xué)習及應(yīng)用-第11章-深度學(xué)習初步_第2頁
機器學(xué)習及應(yīng)用-第11章-深度學(xué)習初步_第3頁
機器學(xué)習及應(yīng)用-第11章-深度學(xué)習初步_第4頁
機器學(xué)習及應(yīng)用-第11章-深度學(xué)習初步_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第11章深度學(xué)習初步自編碼器模型受限玻爾茲曼機模型卷積神經(jīng)網(wǎng)絡(luò)模型TensorFlow的基本使用11.1引言2006年,GeoffreyHinton在《Science》上提出了深度學(xué)習的概念;在語音識別和信號處理、圖像目標識別以及自然語言處理等研究方向,深度學(xué)習的應(yīng)用都帶來了具有突破性的結(jié)果。深度學(xué)習的提出,引發(fā)了機器學(xué)習研究者們在表示、學(xué)習、優(yōu)化、認知等方面的進一步思考。11.2表示問題深度學(xué)習可以通過一種深層的非線性網(wǎng)絡(luò)實現(xiàn)對復(fù)雜函數(shù)的無限逼近。這就解決了淺層學(xué)習在有限數(shù)量的樣本和計算單元情況下對復(fù)雜函數(shù)表示能力有限的問題。簡言之,深度學(xué)習多層表示的好處就是能夠用較少的參數(shù)表征十分復(fù)雜的函數(shù)。深層表示方式的優(yōu)勢:一方面深度結(jié)構(gòu)能夠逐漸學(xué)習出更加抽象的特征,另一方面深度結(jié)構(gòu)可以提供一種更具表現(xiàn)力的分布式表示方式,在深度學(xué)習采用的多層表示中,如果深度不夠?qū)硪欢ǖ膯栴}。與此同時,如何決定深層表示的層數(shù)以及需要多少計算資源才能夠訓(xùn)練出足夠好的深層網(wǎng)絡(luò)模型都是研究表示時值得探究的問題。用于堆疊的單層學(xué)習模塊主要分為兩類。一類是以受限玻爾茲曼機為代表的概率模型構(gòu)建模塊,另一類是以自動編碼器及其變形為代表的神經(jīng)網(wǎng)絡(luò)構(gòu)建模塊。11.2表示問題在深度學(xué)習模型中,前者被解釋成描述某種概率圖模型,隱藏單元被視為隱隨機變量;后者則被解釋成描述某種計算圖,隱藏單元被視為計算結(jié)點。從

參數(shù)的編碼路徑方面講,概率模型利用推理和訓(xùn)練方案直接參數(shù)化生成路徑,也就是解碼過程;而基于神經(jīng)網(wǎng)絡(luò)的模型直接參數(shù)化編碼路徑。有向圖模型經(jīng)常會導(dǎo)致explainingaway的問題;11.2表示問題許多經(jīng)典的特征表示方法都能夠賦予概率模型的解釋,主成分分析PCA以及稀疏編碼能夠與有向圖模型分別參數(shù)化似然度和先驗概率來構(gòu)建聯(lián)合分布相對應(yīng);稀疏編碼這種表示的簡潔性以及計算的高效性使其很快成為特征表示的一種常用方法,并在自然圖像建模、語音分類、自然語言處理等方面實現(xiàn)了成功的應(yīng)用;在無向概率圖模型中,玻爾茲曼分布是一類馬爾可夫隨機場的特殊形式;受限玻爾茲曼機,RBM能夠很好地消除explainingaway現(xiàn)象,得到了廣泛的應(yīng)用,包括圖像分類、運動和空間變換、協(xié)同過濾以及自然圖像建模。11.3學(xué)習問題在深度學(xué)習提出以前,先將輸入數(shù)據(jù)進行預(yù)處理,然后進行特征提取、特征選擇,最后進行推理、預(yù)測或識別;選取特征的過程也就是特征表示的過程,這也是對算法的性能起到?jīng)Q定性作用的階段。有相當一部分算法利用人工設(shè)計的特征取得了良好的效果,手工選取特征不僅需要相當?shù)膶I(yè)領(lǐng)域知識,并且合適的特征設(shè)計是一件十分費力的事情。深度學(xué)習別名,叫做非監(jiān)督的特征學(xué)習。深度學(xué)習的學(xué)習過程可以簡要概括為:首先逐層無監(jiān)督地預(yù)訓(xùn)練單層學(xué)習模塊,然后每次都將上一層的輸出結(jié)果作為下一層訓(xùn)練模塊的輸入,最后訓(xùn)練完所有層后利用有監(jiān)督的方式微調(diào)整個網(wǎng)絡(luò)。在無監(jiān)督預(yù)訓(xùn)練階段,希望輸入數(shù)據(jù)經(jīng)過整個深層網(wǎng)絡(luò)后得到的輸出結(jié)果仍然等于輸入;11.3學(xué)習問題深度學(xué)習的過程就是獲得在給定觀察數(shù)據(jù)條件下隱藏變量的概率分布。可以分為以稀疏編碼為代表的有向圖模型以及以受限玻爾茲曼機為代表的無向圖模型。另一種非概率特征學(xué)習的模型是基于神經(jīng)網(wǎng)絡(luò)的模型。這類模型的主要思想是將自動編碼器堆疊起來,建立一種深層的架構(gòu)。也可以用一些正則化的自動編碼器替換標準的自動編碼器,獲得一些改進的版本。現(xiàn)有的模型主要包括稀疏自動編碼器(SparseAutoEncoders,SAE)、降噪自動編碼器(DenoisingAutoEncoders,DAE)、收縮自動編碼器(ContractiveAuto-Encoders,CAE);SAE引入了一種稀疏正則化的形式,表示的稀疏性可以通過懲罰隱藏單元的偏置項獲得;11.3學(xué)習問題稀疏編碼與自動編碼器結(jié)合的另一類有效的變形是PSD,PSD在識別階段通過一個快速非迭代的近似替代原本高成本且高度非線性的編碼步驟,并應(yīng)用在圖像、視頻與音頻中的目標識別中。DAE對含有人工噪聲的數(shù)據(jù)進行降噪,通過降噪處理,學(xué)習模型能夠獲得與RBM特征相當或者更優(yōu)的特征并且提高分類的性能;CAE強調(diào)學(xué)習一種更加收縮的編碼器,即使得編碼器的導(dǎo)數(shù)盡可能的小。這樣帶來的好處是能降低表示的有效自由度,使得特征對于輸入空間的無窮小變形具有很好的魯棒性。11.4優(yōu)化問題傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型利用反向傳播BP算法來優(yōu)化多層網(wǎng)絡(luò)的權(quán)值。當面臨深度學(xué)習所需要的深層網(wǎng)絡(luò)時,繼續(xù)隨機初始化網(wǎng)絡(luò)后采用BP算法進行優(yōu)化經(jīng)常會陷入局部極小值而使得訓(xùn)練變得異常困難。2006年,Hinton提出了優(yōu)化深層神經(jīng)網(wǎng)絡(luò)的有效方法首先,從網(wǎng)絡(luò)的輸入層開始,自底而上逐層地進行非監(jiān)督訓(xùn)練網(wǎng)絡(luò)權(quán)值。其次,當無監(jiān)督訓(xùn)練完所有層之后,利用自頂向下的監(jiān)督學(xué)習對整個網(wǎng)絡(luò)權(quán)值進行微調(diào),利用無監(jiān)督初始化參數(shù)的過程,能使得網(wǎng)絡(luò)的權(quán)值更加接近于全局最優(yōu),這就保證了后續(xù)優(yōu)化工作的順利進行。Hinton雙向的wake-sleep算法對深層網(wǎng)絡(luò)進行優(yōu)化。各層之間采用雙向的權(quán)值,自底而上的稱作認知權(quán)值,自上而下的稱作生成權(quán)值。算法分為wake階段和sleep階段。在wake階段,自底而上利用每層的輸入和認知權(quán)值逐層生成抽象特征,并且用梯度下降算法不斷修改生成權(quán)值;在sleep階段,自頂而下利用學(xué)習到的特征以及生成權(quán)值逐層生成低層輸入,并不斷修改認知權(quán)值。11.5認知問題人工智能、機器學(xué)習等學(xué)科通過模擬或?qū)崿F(xiàn)人類認知規(guī)律,解析其內(nèi)在機理,并用機器來實現(xiàn),以此開發(fā)智能化的信息處理模式。支持深度學(xué)習最強有力的證據(jù)是人腦具有一個深層次(即深度)的結(jié)構(gòu)。大腦皮層結(jié)構(gòu)示意圖11.5認知問題人腦的深度結(jié)構(gòu)決定了人類認知過程的逐層進行;深度學(xué)習從某種程度上模擬了人類逐層進行、逐步抽象的認知過程。認知具有感知、識別、學(xué)習、聯(lián)想、記憶、推理等功能,是人類最基本的心理過程。深層神經(jīng)網(wǎng)絡(luò)在神經(jīng)元數(shù)目一定的情況下,相比于傳統(tǒng)淺層神經(jīng)網(wǎng)絡(luò)來說,具有更強大的學(xué)習能力,能夠從原始輸入中自動提取出具有高度抽象含義的特征。深度學(xué)習算法圖形處理單元使得深層神經(jīng)網(wǎng)絡(luò)在訓(xùn)練速度上得到了極大地改善。因此,深度學(xué)習在語音識別、圖像序列分析、自然語言處理等方面都取得了具有突破性的進展。深度學(xué)習逐層自動抽取高級抽象特征的能力與人腦的認知過程相吻合,無疑將成為實現(xiàn)人工智能的一項重要途徑。11.6基本模型

11.6.1自編碼器11.6基本模型

11.6.2受限玻爾茲曼機11.6基本模型圖示說明(a)受限玻爾茲曼機本身是基于二分圖的無向圖模型,可以構(gòu)造稀疏連接的RBM(b)深度信念網(wǎng)絡(luò)是涉及有向和無向連接的混合圖模型;與RBM一樣,它也沒有層內(nèi)連接,DBN隱藏單元之間的連接在分開的層中;(c)深度玻爾茲曼機是具有幾層潛變量的無向圖模型。與RBM和DBN一樣,DBM也缺少層內(nèi)連接。DBM與RBM的聯(lián)系不如DBN緊密。當從RBM堆棧初始化DBM時,有必要對RBM的參數(shù)稍作修改。某些種類的DBM可以直接訓(xùn)練,而不用先訓(xùn)練一組RBM。11.6.2受限玻爾茲曼機11.6基本模型

11.6.3卷積神經(jīng)網(wǎng)絡(luò)11.6基本模型

11.6.3卷積神經(jīng)網(wǎng)絡(luò)11.6基本模型11.6.3卷積神經(jīng)網(wǎng)絡(luò)11.7TensorFlow的簡介與安裝谷歌面向人工智能領(lǐng)域發(fā)布的開源軟件庫,提供了豐富的機器學(xué)習中常用的基本數(shù)值計算方法及模型組件,使得研究者能夠快搭建算法模型并進行驗證,不需要特殊硬件配合,能夠部署在常見的、不同平臺上,最新版本的TensorFlow1.4提供了不同語言的支持,如:Python,C++,Java和Go等。11.7TensorFlow的簡介與安裝11.7.1創(chuàng)建Python3環(huán)境選擇ANACONDAPython集成開發(fā)環(huán)境查看安裝已組件:在AnacondaPrompt下,鍵入condalist11.7TensorFlow的簡介與安裝11.7.2安裝TensorFlow注:TensorFlow目前在Windows下只支持Python3.5版本。(1)打開AnacondaPrompt,輸入清華倉庫鏡像,這樣更新會快一些:condaconfig--addchannels/anaconda/pkgs/free/condaconfig--setshow_channel_urlsyes(2)同樣在AnacondaPrompt中利用Anaconda創(chuàng)建一個python3.5的環(huán)境,環(huán)境名稱為tensorflow,輸入下面命令:condacreate-ntensorflowpython=3.511.7TensorFlow的簡介與安裝11.7.2安裝TensorFlow運行

開始菜單

Anaconda3

AnacondaNavigator,點擊左側(cè)Environments,可以看到tensorflow的環(huán)境已經(jīng)創(chuàng)建好了。

11.7TensorFlow的簡介與安裝11.7.2安裝TensorFlow(3)在AnacondaPrompt中啟動tensorflow環(huán)境:activatetensorflow(4)安裝cpu版本的TensorFlowpipinstall--upgrade--ignore-installedtensorflow11.7TensorFlow的簡介與安裝11.7.3驗證>>>importtensorflowastf>>>tc=tf.constant('Hello,TensorFlow!')>>>sess=tf.Session()>>>print(sess.run(tc))11.8TensorFlow的基本使用數(shù)據(jù)流圖以結(jié)點表示數(shù)學(xué)運算操作,邊表示結(jié)點之間數(shù)據(jù)傳遞關(guān)系的有向圖;在TensorFlow中,數(shù)據(jù)流圖的結(jié)點稱作Operation,邊是尺寸可以動態(tài)調(diào)整的多維數(shù)組,即張量tensor;首先根據(jù)具體問題,利用各種基本運算單元構(gòu)建結(jié)點,設(shè)計結(jié)點之間的操作對象Tensor,以構(gòu)建出一個計算圖Graph,然后在會話Session中啟動Graph。下圖是一個用TensorFlow完成兩個常量相加的示意圖tf.constantttf.constantttf.add11.8TensorFlow的基本使用importtensorflowastf#第一步,構(gòu)建計算圖#使用tf.constant構(gòu)建兩個基本結(jié)點,每個結(jié)點分別輸出一個常量Tensorct0=tf.constant([0,1])ct1=tf.constant([1,0])#創(chuàng)建一個加法結(jié)點at=tf.add(ct0,ct1)

#第二步:創(chuàng)建會話并在會話中啟動計算圖#創(chuàng)建會話sess=tf.Session()#啟動圖result=sess.run(at)在TensorFlow中,主要操作的數(shù)據(jù)結(jié)構(gòu)是張量tensor。11.8TensorFlow的基本使用從類型定義上看,TensorFlow定義了兩種基本類型表示一個tensor:tf.Tensor對象表示一個結(jié)點的輸出的tensor,即計算圖中的邊,tf.Variable對象用于記錄計算圖運行過程中的狀態(tài),可以認為是一個全局變量。tensor可以分為如下三種基本類型:常量類型的tensor,使用tf.constant操作創(chuàng)建變量類型的tensor,用于表示模型中待學(xué)習的參數(shù);一般使用tf.get_variable操作創(chuàng)建,在啟動圖前,需要根據(jù)需求調(diào)用initializer初始化所有定義的tf.Variable對象,如:#創(chuàng)建一個常量tensor,類型是tf.Tensorct=tf.constant([0,1])#創(chuàng)建一個tf.Variable實例:vtvt=tf.get_variable('vt',[5,6],dtype=tf.float32)sess=tf.Session()#初始化tf.Variable實例sess.run(tf.global_variables_initializer())11.8TensorFlow的基本使用參數(shù)類型的tensor,用于計算圖接收用戶輸入數(shù)據(jù),使用tf.placeholder創(chuàng)建需要指定tensor的形狀;tensor在圖運行前通過Session.run()、Tensor.eval()或Operation.run()中的參數(shù)feed_dict指定具體值:importnumpyasnp…#創(chuàng)建一個參數(shù)變量ph=tf.placeholder(tf.float32,[10,10])…sess=tf.Session()val=np.random.rand(10,10)sess.run(feed_dict={ph:val})TensorFlow封裝了一些常用的計算方法,如:不同的梯度下降計算模型、不同的損失函數(shù)計算模型等;封裝出了很多更高階的模型,這些模型封裝了構(gòu)建計算圖和創(chuàng)建會話并啟動計算圖等基本步驟。11.9基于卷積神經(jīng)網(wǎng)絡(luò)的MNIST手寫體識別實驗input:4維的Tensor,訓(xùn)練圖像數(shù)據(jù),四個維度用于說明訓(xùn)練圖像數(shù)量batch_size,圖像高度in_height,圖像寬度in_width和圖像通道數(shù)in_channels;每個維度對應(yīng)的內(nèi)容有data_format參數(shù)確定。filter:4維的Tensor卷積核,其shape為[filter_height,filter_width,in_channels,out_channels],其中,filter_height,filter_width分別表示卷積核的高度和寬帶,in_channels表示訓(xùn)練圖像的通道數(shù),out_channels表示輸出特征圖的個數(shù),即使用的卷積核數(shù)。11.9.1conv2d函數(shù)tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu=True,data_format='NHWC',name=None)11.9基于卷積神經(jīng)網(wǎng)絡(luò)的MNIST手寫體識別實驗strides:1維的Tensor,包含4個值,每個值分別指示卷積核在input上每個維度滑動的距離。use_cudnn_on_gpu:Bool值,默認參數(shù)值為True。用于指定是否使用GPU。data_format:字符串,取值為“NHWC”“NCHW”之一,默認參數(shù)值為“NHWC”。用于決定如何解析input。name:字符串,可選,默認參數(shù)值為None。指定Operation的名稱。11.9.1conv2d函數(shù)11.9基于卷積神經(jīng)網(wǎng)絡(luò)的MNIST手寫體識別實驗value:4維的Tensor,即conv2d的輸出。ksize:1維的Tensor,4個值,指定value每個維度池化的范圍。strides:1維的Tensor,4個值,指示池化窗口在各個維度的移動距離,一般設(shè)置與ksize相同。padding:字符串,取值為“SAME”“VALID”之一。設(shè)定不同的卷積方式,指定邊界處理方法。data_format:字符串,取值為“NHWC”“NCHW”“NCHW_VECT_C”之一,默認參數(shù)值為“NHWC”。用于決定如何解析input。name:字符串,可選,默認參數(shù)值為None。指定Operation的名稱。11.9.2max_pool函數(shù)tf.nn.max_pool(value,ksize,strides,padding,data_format='NHWC',name=None)11.9基于卷積神經(jīng)網(wǎng)絡(luò)的MNIST手寫體識別實驗定義(創(chuàng)建)卷積核(權(quán)值矩陣)和偏置向量。11.9.3示例程序#定義一個卷積核tf.Variabledefweights(shape) initial=tf.truncated_normal(shape,stddev=0.1) returntf.Variable(initial)#定義一個偏置tf.Variabledefbias(shape) initial=tf.constant(0.1,shape=shape) returntf.Variable(initial)11.9基于卷積神經(jīng)網(wǎng)絡(luò)的MNIST手寫體識別實驗定義卷積操作conv和池化操作pool。定義CNN卷積層conv_layer。11.9.3示例程序defconv(x,W,strides=[1,1,1,1],padding='SAME'):returntf.nn.conv2d(x,W,s

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論