![現(xiàn)代機器學(xué)習(xí) 基于深度學(xué)習(xí)的圖像特征提取_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/27ff0220-4ac8-431a-84cc-4f90fc04198f/27ff0220-4ac8-431a-84cc-4f90fc04198f1.gif)
![現(xiàn)代機器學(xué)習(xí) 基于深度學(xué)習(xí)的圖像特征提取_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/27ff0220-4ac8-431a-84cc-4f90fc04198f/27ff0220-4ac8-431a-84cc-4f90fc04198f2.gif)
![現(xiàn)代機器學(xué)習(xí) 基于深度學(xué)習(xí)的圖像特征提取_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/27ff0220-4ac8-431a-84cc-4f90fc04198f/27ff0220-4ac8-431a-84cc-4f90fc04198f3.gif)
![現(xiàn)代機器學(xué)習(xí) 基于深度學(xué)習(xí)的圖像特征提取_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/27ff0220-4ac8-431a-84cc-4f90fc04198f/27ff0220-4ac8-431a-84cc-4f90fc04198f4.gif)
![現(xiàn)代機器學(xué)習(xí) 基于深度學(xué)習(xí)的圖像特征提取_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/27ff0220-4ac8-431a-84cc-4f90fc04198f/27ff0220-4ac8-431a-84cc-4f90fc04198f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 現(xiàn)代機器學(xué)習(xí)理論大作業(yè) (基于深度學(xué)習(xí)的圖像特征提?。?基于深度學(xué)習(xí)的圖像特征提取摘要:大數(shù)據(jù)時代的來臨,為深度學(xué)習(xí)理論的發(fā)展創(chuàng)造了良好的條件。本文介紹了深度學(xué)習(xí)的發(fā)展背景,主要討論了深度學(xué)習(xí)中的自編碼的方法,對自編碼方法實現(xiàn)仿真應(yīng)用,期望在以后能應(yīng)用到SAR圖像上進行自動特征提取,最后闡述該理論的目前遇到的困難。關(guān)鍵詞:深度學(xué)習(xí) autoencoder convolution pooling一 引言 機器學(xué)習(xí)是人工智能的一個分支,而在很多時候,幾乎成為人工智能的代名詞。簡單來說,機器學(xué)習(xí)就是通過算法,使得機器能從大量歷史數(shù)據(jù)中學(xué)習(xí)規(guī)律,從而對新的樣本做智能識別或?qū)ξ磥碜鲱A(yù)測。從1980年代
2、末期以來,機器學(xué)習(xí)的發(fā)展大致經(jīng)歷了兩次浪潮:淺層學(xué)習(xí)(Shallow Learning)和深度學(xué)習(xí)(Deep Learning)。第一次浪潮:淺層學(xué)習(xí)1980年代末期,用于人工神經(jīng)網(wǎng)絡(luò)的反向傳播算法(也叫Back Propagation算法或者BP算法)的發(fā)明,給機器學(xué)習(xí)帶來了希望,掀起了基于統(tǒng)計模型的機器學(xué)習(xí)熱潮。這個熱潮一直持續(xù)到今天。人們發(fā)現(xiàn),利用BP算法可以讓一個人工神經(jīng)網(wǎng)絡(luò)模型從大量訓(xùn)練樣本中學(xué)習(xí)出統(tǒng)計規(guī)律,從而對未知事件做預(yù)測。這種基于統(tǒng)計的機器學(xué)習(xí)方法比起過去基于人工規(guī)則的系統(tǒng),在很多方面顯示出優(yōu)越性。這個時候的人工神經(jīng)網(wǎng)絡(luò),雖然也被稱作多層感知機(Multi-layer Per
3、ceptron),但實際上是一種只含有一層隱層節(jié)點的淺層模型。90年代,各種各樣的淺層機器學(xué)習(xí)模型相繼被提出,比如支撐向量機(SVM,Support Vector Machines)、Boosting、最大熵方法(例如LR, Logistic Regression)等。這些模型的結(jié)構(gòu)基本上可以看成帶有一層隱層節(jié)點(如SVM、Boosting),或沒有隱層節(jié)點(如LR)。這些模型在無論是理論分析還是應(yīng)用都獲得了巨大的成功。相比較之下,由于理論分析的難度,加上訓(xùn)練方法需要很多經(jīng)驗和技巧,所以這個時期淺層人工神經(jīng)網(wǎng)絡(luò)反而相對較為沉寂。2000年以來互聯(lián)網(wǎng)的高速發(fā)展,對大數(shù)據(jù)的智能化分析和預(yù)測提出了巨
4、大需求,淺層學(xué)習(xí)模型在互聯(lián)網(wǎng)應(yīng)用上獲得了巨大成功。最成功的應(yīng)用包括搜索廣告系統(tǒng)(比如Google的AdWords、百度的鳳巢系統(tǒng))的廣告點擊率CTR預(yù)估、網(wǎng)頁搜索排序(例如Yahoo!和微軟的搜索引擎)、垃圾郵件過濾系統(tǒng)、基于內(nèi)容的推薦系統(tǒng)等。2006年,加拿大多倫多大學(xué)教授、機器學(xué)習(xí)領(lǐng)域泰斗Geoffrey Hinton和他的學(xué)生Ruslan Salakhutdinov在頂尖學(xué)術(shù)刊物科學(xué)上發(fā)表了一篇文章,開啟了深度學(xué)習(xí)在學(xué)術(shù)界和工業(yè)界的浪潮。這篇文章有兩個主要的信息:1. 很多隱層的人工神經(jīng)網(wǎng)絡(luò)具有優(yōu)異的特征學(xué)習(xí)能力,學(xué)習(xí)得到的特征對數(shù)據(jù)有更本質(zhì)的刻畫,從而有利于可視化或分類;2. 深度神經(jīng)
5、網(wǎng)絡(luò)在訓(xùn)練上的難度,可以通過“逐層初始化(Layer-wise Pre-training)來有效克服,在這篇文章中,逐層初始化是通過無監(jiān)督學(xué)習(xí)實現(xiàn)的。第二次浪潮:深度學(xué)習(xí)自2006年以來,深度學(xué)習(xí)在學(xué)術(shù)界持續(xù)升溫。斯坦福大學(xué)、紐約大學(xué)、加拿大蒙特利爾大學(xué)等成為研究深度學(xué)習(xí)的重鎮(zhèn)。2010年,美國國防部DARPA計劃首次資助深度學(xué)習(xí)項目,參與方有斯坦福大學(xué)、紐約大學(xué)和NEC美國研究院。支持深度學(xué)習(xí)的一個重要依據(jù),就是腦神經(jīng)系統(tǒng)的確具有豐富的層次結(jié)構(gòu)。一個最著名的例子就是Hubel-Wiesel模型,由于揭示了視覺神經(jīng)的機理而曾獲得諾貝爾醫(yī)學(xué)與生理學(xué)獎。除了仿生學(xué)的角度,目前深度學(xué)習(xí)的理論研究還基
6、本處于起步階段,但在應(yīng)用領(lǐng)域已顯現(xiàn)出巨大能量。2011年以來,微軟研究院和Google的語音識別研究人員先后采用DNN技術(shù)降低語音識別錯誤率2030,是語音識別領(lǐng)域十多年來最大的突破性進展。2012年,DNN技術(shù)在圖像識別領(lǐng)域取得驚人的效果,在ImageNet評測上將錯誤率從26降低到15。在這一年,DNN還被應(yīng)用于制藥公司的Druge Activity預(yù)測問題,并獲得世界最好成績,這一重要成果被紐約時報報道。今天Google、微軟、百度等知名的擁有大數(shù)據(jù)的高科技公司爭相投入資源,占領(lǐng)深度學(xué)習(xí)的技術(shù)制高點,正是因為它們都看到了在大數(shù)據(jù)時代,更加復(fù)雜且更加強大的深度模型能深刻揭示海量數(shù)據(jù)里所承載
7、的復(fù)雜而豐富的信息,并對未來或未知事件做更精準的預(yù)測。在工業(yè)界一直有個很流行的觀點:在大數(shù)據(jù)條件下,簡單的機器學(xué)習(xí)模型會比復(fù)雜模型更加有效。例如,在很多的大數(shù)據(jù)應(yīng)用中,最簡單的線性模型得到大量使用。而最近深度學(xué)習(xí)的驚人進展,促使我們也許到了要重新思考這個觀點的時候。簡而言之,在大數(shù)據(jù)情況下,也許只有比較復(fù)雜的模型,或者說表達能力強的模型,才能充分發(fā)掘海量數(shù)據(jù)中蘊藏的豐富信息。運用更強大的深度模型,也許我們能從大數(shù)據(jù)中發(fā)掘出更多有價值的信息和知識。為了理解為什么大數(shù)據(jù)需要深度模型,先舉一個例子。語音識別已經(jīng)是一個大數(shù)據(jù)的機器學(xué)習(xí)問題,在其聲學(xué)建模部分,通常面臨的是十億到千億級別的訓(xùn)練樣本。在Go
8、ogle的一個語音識別實驗中,發(fā)現(xiàn)訓(xùn)練后的DNN對訓(xùn)練樣本和測試樣本的預(yù)測誤差基本相當。這是非常違反常識的,因為通常模型在訓(xùn)練樣本上的預(yù)測誤差會顯著小于測試樣本。因此,只有一個解釋,就是由于大數(shù)據(jù)里含有豐富的信息維度,即便是DNN這樣的高容量復(fù)雜模型也是處于欠擬合的狀態(tài),更不必說傳統(tǒng)的GMM聲學(xué)模型了。所以從這個例子中我們看出,大數(shù)據(jù)需要深度學(xué)習(xí)。淺層模型有一個重要特點,就是假設(shè)靠人工經(jīng)驗來抽取樣本的特征,而強調(diào)模型主要是負責(zé)分類或預(yù)測。在模型的運用不出差錯的前提下(如假設(shè)互聯(lián)網(wǎng)公司聘請的是機器學(xué)習(xí)的專家),特征的好壞就成為整個系統(tǒng)性能的瓶頸。因此,通常一個開發(fā)團隊中更多的人力是投入到發(fā)掘更好
9、的特征上去的。要發(fā)現(xiàn)一個好的特征,就要求開發(fā)人員對待解決的問題要有很深入的理解。而達到這個程度,往往需要反復(fù)地摸索,甚至是數(shù)年磨一劍。因此,人工設(shè)計樣本特征,不是一個可擴展的途徑。深度學(xué)習(xí)的實質(zhì),是通過構(gòu)建具有很多隱層的機器學(xué)習(xí)模型和海量的訓(xùn)練數(shù)據(jù),來學(xué)習(xí)更有用的特征,從而最終提升分類或預(yù)測的準確性。所以“深度模型”是手段,“特征學(xué)習(xí)”是目的。區(qū)別于傳統(tǒng)的淺層學(xué)習(xí),深度學(xué)習(xí)的不同在于:1. 強調(diào)了模型結(jié)構(gòu)的深度,通常有5層、6層,甚至10多層的隱層節(jié)點;2. 明確突出了特征學(xué)習(xí)的重要性,也就是說,同過逐層特征變換,將樣本在原空間的特征表示變換到一個新特征空間,使分類或預(yù)測更加容易。與人工規(guī)則構(gòu)
10、造特征的方法相比,利用大數(shù)據(jù)來學(xué)習(xí)特征,更能刻畫數(shù)據(jù)豐富的內(nèi)在信息。所以,在未來的幾年里,我們將看到越來越多的例子:深度模型應(yīng)用于大數(shù)據(jù),而不是淺層的線性模型。圖像是深度學(xué)習(xí)最早嘗試的應(yīng)用領(lǐng)域。早在1989年,Yann LeCun (現(xiàn)紐約大學(xué)教授) 和他的同事們就發(fā)表了卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Networks, 簡稱CNN)的工作。CNN是一種帶有卷積結(jié)構(gòu)的深度神經(jīng)網(wǎng)絡(luò),通常至少有兩個非線性可訓(xùn)練的卷積層,兩個非線性的固定卷積層(又叫Pooling Laye)和一個全連接層,一共至少5個隱含層。CNN的結(jié)構(gòu)受到著名的Hubel-Wiesel生物視覺模型的啟發(fā),尤其
11、是模擬視覺皮層V1和V2層中Simple Cell和Complex Cell的行為。在很長時間里,CNN雖然在小規(guī)模的問題上,如手寫數(shù)字,取得過當時世界最好結(jié)果,但一直沒有取得巨大成功。這主要原因是,CNN在大規(guī)模圖像上效果不好,比如像素很多的自然圖片內(nèi)容理解,所以沒有得到計算機視覺領(lǐng)域的足夠重視。這個情況一直持續(xù)到2012年10月,Geoffrey Hinton和他的兩個學(xué)生在著名的ImageNet問題上用更深的CNN取得世界最好結(jié)果,使得圖像識別大踏步前進。在Hinton的模型里,輸入就是圖像的像素,沒有用到任何的人工特征。這個驚人的結(jié)果為什么在之前沒有發(fā)生? 原因當然包括算法的提升,比如
12、dropout等防止過擬合技術(shù),但最重要的是,GPU帶來的計算能力提升和更多的訓(xùn)練數(shù)據(jù)。百度在2012年底將深度學(xué)習(xí)技術(shù)成功應(yīng)用于自然圖像OCR識別和人臉識別等問題,并推出相應(yīng)的桌面和移動搜索產(chǎn)品,2013年,深度學(xué)習(xí)模型被成功應(yīng)用于一般圖片的識別和理解。從百度的經(jīng)驗來看,深度學(xué)習(xí)應(yīng)用于圖像識別不但大大提升了準確性,而且避免了人工特征抽取的時間消耗,從而大大提高了在線計算效率。可以很有把握地說,從現(xiàn)在開始,深度學(xué)習(xí)將取代“人工特征+機器學(xué)習(xí)”的方法而逐漸成為主流圖像識別方法。二 深度學(xué)習(xí)中的sparse autoencoder2.1 sparse autoencoderDeep learnin
13、g領(lǐng)域比較出名的一類算法sparse autoencoder,即稀疏模式的自動編碼。sparse autoencoder是一種自動提取樣本(如圖像)特征的方法。把輸入層激活度(如圖像)用隱層激活度表征,再把隱層信息在輸出層還原。這樣隱層上的信息就是輸入層的一個壓縮過的表征,且其信息熵會減小。并且這些表征很適合做分類器。我們知道,deep learning也叫做無監(jiān)督學(xué)習(xí),所以這里的sparse autoencoder也應(yīng)是無監(jiān)督的。如果是有監(jiān)督的學(xué)習(xí)的話,在神經(jīng)網(wǎng)絡(luò)中,我們只需要確定神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)就可以求出損失函數(shù)的表達式了(當然,該表達式需對網(wǎng)絡(luò)的參數(shù)進行”懲罰”,以便使每個參數(shù)不要太大),
14、同時也能夠求出損失函數(shù)偏導(dǎo)函數(shù)的表達式,然后利用優(yōu)化算法求出網(wǎng)絡(luò)最優(yōu)的參數(shù)。應(yīng)該清楚的是,損失函數(shù)的表達式中,需要用到有標注值的樣本。那么這里的sparse autoencoder為什么能夠無監(jiān)督學(xué)習(xí)呢?難道它的損失函數(shù)的表達式中不需要標注的樣本值(即通常所說的y值)么?其實在稀疏編碼中”標注值”也是需要的,只不過它的輸出理論值是本身輸入的特征值x,其實這里的標注值y=x。這樣做的好處是,網(wǎng)絡(luò)的隱含層能夠很好的代替輸入的特征,因為它能夠比較準確的還原出那些輸入特征值。Sparse autoencoder的一個網(wǎng)絡(luò)結(jié)構(gòu)圖如下所示: 2.2 損失函數(shù)無稀疏約束時網(wǎng)絡(luò)的損失函數(shù)表達式如下: 稀疏編碼
15、是對網(wǎng)絡(luò)的隱含層的輸出有了約束,即隱含層節(jié)點輸出的平均值應(yīng)盡量為0,這樣的話,大部分的隱含層節(jié)點都處于非激活狀態(tài)。因此,此時的sparse autoencoder損失函數(shù)表達式為: 后面那項為KL距離,其表達式如下: 隱含層節(jié)點輸出平均值求法如下: 其中的參數(shù)一般取很小,比如說0.05,也就是小概率發(fā)生事件的概率。這說明要求隱含層的每一個節(jié)點的輸出均值接近0.05(其實就是接近0,因為網(wǎng)絡(luò)中激活函數(shù)為sigmoid函數(shù)),這樣就達到稀疏的目的了。KL距離在這里表示的是兩個向量之間的差異值。從約束函數(shù)表達式中可以看出,差異越大則”懲罰越大”,因此最終的隱含層節(jié)點的輸出會接近0.05。假設(shè)我們有一
16、個固定樣本集 ,它包含 個樣例。我們可以用批量梯度下降法來求解神經(jīng)網(wǎng)絡(luò)。具體來講,對于單個樣例 ,其代價函數(shù)為:這是一個(二分之一的)方差代價函數(shù)。給定一個包含 個樣例的數(shù)據(jù)集,我們可以定義整體代價函數(shù)為:以上公式中的第一項 是一個均方差項。第二項是一個規(guī)則化項(也叫權(quán)重衰減項),其目的是減小權(quán)重的幅度,防止過度擬合。 權(quán)重衰減參數(shù) 用于控制公式中兩項的相對重要性。在此重申一下這兩個復(fù)雜函數(shù)的含義: 是針對單個樣例計算得到的方差代價函數(shù); 是整體樣本代價函數(shù),它包含權(quán)重衰減項。 以上的代價函數(shù)經(jīng)常被用于分類和回歸問題。在分類問題中,我們用 或 ,來代表兩種類型的標簽,這是因為 sigmoid激
17、活函數(shù)的值域為 ;如果我們使用雙曲正切型激活函數(shù),那么應(yīng)該選用 -1 和 +1 作為標簽。對于回歸問題,我們首先要變換輸出值域 ,以保證其范圍為 (同樣地,如果我們使用雙曲正切型激活函數(shù),要使輸出值域為 )。 我們的目標是針對參數(shù) 和 來求其函數(shù) 的最小值。為了求解神經(jīng)網(wǎng)絡(luò),我們需要將每一個參數(shù) 和 初始化為一個很小的、接近零的隨機值(比如說,使用正態(tài)分布 生成的隨機值,其中 設(shè)置為 ),之后對目標函數(shù)使用諸如批量梯度下降法的最優(yōu)化算法。因為 是一個非凸函數(shù),梯度下降法很可能會收斂到局部最優(yōu)解;但是在實際應(yīng)用中,梯度下降法通常能得到令人滿意的結(jié)果。最后,需要再次強調(diào)的是,要將參數(shù)進行隨機初始化
18、,而不是全部置為 。如果所有參數(shù)都用相同的值作為初始值,那么所有隱藏層單元最終會得到與輸入值有關(guān)的、相同的函數(shù)(也就是說,對于所有 ,都會取相同的值,那么對于任何輸入 都會有: )。隨機初始化的目的是使對稱失效。2.3 反向傳播算法梯度下降法中每一次迭代都按照如下公式對參數(shù) 和 進行更新:其中 是學(xué)習(xí)速率。其中關(guān)鍵步驟是計算偏導(dǎo)數(shù)。我們現(xiàn)在來講一下反向傳播算法,它是計算偏導(dǎo)數(shù)的一種有效方法。我們首先來講一下如何使用反向傳播算法來計算 和 ,這兩項是單個樣例 的代價函數(shù) 的偏導(dǎo)數(shù)。一旦我們求出該偏導(dǎo)數(shù),就可以推導(dǎo)出整體代價函數(shù) 的偏導(dǎo)數(shù):以上兩行公式稍有不同,第一行比第二行多出一項,是因為權(quán)重衰
19、減是作用于 而不是 。反向傳播算法的思路如下:給定一個樣例 ,我們首先進行“前向傳導(dǎo)”運算,計算出網(wǎng)絡(luò)中所有的激活值,包括 的輸出值。之后,針對第 層的每一個節(jié)點 ,我們計算出其“殘差” ,該殘差表明了該節(jié)點對最終輸出值的殘差產(chǎn)生了多少影響。對于最終的輸出節(jié)點,我們可以直接算出網(wǎng)絡(luò)產(chǎn)生的激活值與實際值之間的差距,我們將這個差距定義為 (第 層表示輸出層)。對于隱藏單元我們?nèi)绾翁幚砟兀课覀儗⒒诠?jié)點(譯者注:第 層節(jié)點)殘差的加權(quán)平均值計算 ,這些節(jié)點以 作為輸入。下面將給出反向傳導(dǎo)算法的細節(jié):進行前饋傳導(dǎo)計算,利用前向傳導(dǎo)公式,得到 直到輸出層 的激活值。對于第 層(輸出層)的每個輸出單元 ,
20、我們根據(jù)以下公式計算殘差: 對 的各個層,第 層的第 個節(jié)點的殘差計算方法如下: 將上式中的與的關(guān)系替換為與的關(guān)系,就可以得到: 以上逐次從后向前求導(dǎo)的過程即為“反向傳導(dǎo)”的本意所在。 計算我們需要的偏導(dǎo)數(shù),計算方法如下: 最后,我們用矩陣-向量表示法重寫以上算法。我們使用“” 表示向量乘積運算符(在Matlab或Octave里用“.*”表示,也稱作阿達馬乘積)。若 ,則 。那么,反向傳播算法可表示為以下幾個步驟:1 進行前饋傳導(dǎo)計算,利用前向傳導(dǎo)公式,得到 直到輸出層 的激活值。2 對輸出層(第 層),計算: 3 對于 的各層,計算: 4 計算最終需要的偏導(dǎo)數(shù)值: 實現(xiàn)中應(yīng)注意:在以上的第2
21、步和第3步中,我們需要為每一個 值計算其 。假設(shè) 是sigmoid函數(shù),并且我們已經(jīng)在前向傳導(dǎo)運算中得到了 。那么,使用我們早先推導(dǎo)出的 表達式,就可以計算得到 。 最后,我們將對梯度下降算法做個全面總結(jié)。在下面的偽代碼中, 是一個與矩陣 維度相同的矩陣, 是一個與 維度相同的向量。注意這里“”是一個矩陣,而不是“ 與 相乘”。下面,我們實現(xiàn)批量梯度下降法中的一次迭代:對于所有 ,令 , (設(shè)置為全零矩陣或全零向量)1 對于 到 , 使用反向傳播算法計算 和 。2 計算 。3 計算 。更新權(quán)重參數(shù): 現(xiàn)在,我們可以重復(fù)梯度下降法的迭代步驟來減小代價函數(shù) 的值,進而求解我們的神經(jīng)網(wǎng)絡(luò)。三 實驗仿
22、真3.1 利用autoencoder提取特征從給定的很多張自然圖片中截取出大小為8*8的小patches圖片共10000張,現(xiàn)在需要用sparse autoencoder的方法訓(xùn)練出一個隱含層網(wǎng)絡(luò)所學(xué)習(xí)到的特征。該網(wǎng)絡(luò)共有3層,輸入層是64個節(jié)點,隱含層是25個節(jié)點,輸出層當然也是64個節(jié)點了。其實實現(xiàn)該功能的主要步驟還是需要計算出網(wǎng)絡(luò)的損失函數(shù)以及其偏導(dǎo)數(shù)。下面用簡單的語言大概介紹下這個步驟,方便理清算法的流程。1. 計算出網(wǎng)絡(luò)每個節(jié)點的輸入值(即程序中的z值)和輸出值(即程序中的a值,a是z的sigmoid函數(shù)值)。2. 利用z值和a值計算出網(wǎng)絡(luò)每個節(jié)點的誤差值(即程序中的delta值)。
23、3. 這樣可以利用上面計算出的每個節(jié)點的a,z,delta來表達出系統(tǒng)的損失函數(shù)以及損失函數(shù)的偏導(dǎo)數(shù)了,當然這些都是一些數(shù)學(xué)推導(dǎo)。其實步驟1是前向進行的,也就是說按照輸入層隱含層輸出層的方向進行計算。而步驟2是方向進行的(這也是該算法叫做BP算法的來源),即每個節(jié)點的誤差值是按照輸出層隱含層輸入層方向進行的。下面看一下實驗流程:首先運行主程序train.m中的步驟1,即隨機采樣出10000個小的patch,并且顯示出其中的204個patch圖像,圖像顯示如下所示: 然后運行train.m中的步驟2和步驟3,進行損失函數(shù)和梯度函數(shù)的計算并驗證。進行g(shù)radient checking的時間可能會太
24、長,我這里大概用了1個半小時以上,當用gradient checking時,發(fā)現(xiàn)誤差只有6.5101e-11,遠小于1e-9,所以說明前面的損失函數(shù)和偏導(dǎo)函數(shù)程序是對的。后面就可以接著用優(yōu)化算法來求參數(shù)了,本程序給的是優(yōu)化算法是L-BFGS。經(jīng)過幾分鐘的優(yōu)化,就出結(jié)果了。最后的W1的權(quán)值如下所示: 3.2 Self-taught learningSelf-taught learning是用的無監(jiān)督學(xué)習(xí)來學(xué)習(xí)到特征提取的參數(shù),然后用有監(jiān)督學(xué)習(xí)來訓(xùn)練分類器。這里分別是用的sparse autoencoder和softmax regression,實驗的數(shù)據(jù)依舊是手寫數(shù)字數(shù)據(jù)庫MNIST Datas
25、et。采用數(shù)字59的樣本來進行無監(jiān)督訓(xùn)練,采用的方法是sparse autoencoder,可以提取出這些數(shù)據(jù)的權(quán)值,權(quán)值轉(zhuǎn)換成圖片顯示如下: 但是本次實驗主要是進行04這5個數(shù)字的分類,雖然進行無監(jiān)督訓(xùn)練用的是數(shù)字59的訓(xùn)練樣本,這依然不會影響后面的結(jié)果。只是后面的分類器設(shè)計是用的softmax regression,所以是有監(jiān)督的。最后的結(jié)果精度是98%,而直接用原始的像素點進行分類器的設(shè)計不僅效果要差(才96%),而且訓(xùn)練的速度也會變慢不少。3.3 convolution與 pooling在全局連接網(wǎng)絡(luò)中,如果我們的圖像很大,比如說為96*96,隱含層有要學(xué)習(xí)100個特征,則這時候把輸入
26、層的所有點都與隱含層節(jié)點連接,則需要學(xué)習(xí)106個參數(shù),這樣的話在使用BP算法時速度就明顯慢了很多。所以后面就發(fā)展到了局部連接網(wǎng)絡(luò),也就是說每個隱含層的節(jié)點只與一部分連續(xù)的輸入點連接。這樣的好處是模擬了人大腦皮層中視覺皮層不同位置只對局部區(qū)域有響應(yīng)。局部連接網(wǎng)絡(luò)在神經(jīng)網(wǎng)絡(luò)中的實現(xiàn)使用convolution的方法。它在神經(jīng)網(wǎng)絡(luò)中的理論基礎(chǔ)是對于自然圖像來說,因為它們具有穩(wěn)定性,即圖像中某個部分的統(tǒng)計特征和其它部位的相似,因此我們學(xué)習(xí)到的某個部位的特征也同樣適用于其它部位。下面具體看一個例子是怎樣實現(xiàn)convolution的,假如對一張大圖片的數(shù)據(jù)集,r*c大小,則首先需要對這個數(shù)據(jù)集隨機采樣大小為
27、a*b的小圖片,然后用這些小圖片patch進行學(xué)習(xí)(比如說sparse autoencoder),此時的隱含節(jié)點為k個。因此最終學(xué)習(xí)到的特征數(shù)為: 雖然按照convolution的方法可以減小不少需要訓(xùn)練的網(wǎng)絡(luò)參數(shù),比如說96*96,,100個隱含層的,采用8*8patch,也100個隱含層,則其需要訓(xùn)練的參數(shù)個數(shù)減小到了103,大大的減小特征提取過程的困難。但是此時同樣出現(xiàn)了一個問題,即它的輸出向量的維數(shù)變得很大,本來完全連接的網(wǎng)絡(luò)輸出只有100維的,現(xiàn)在的網(wǎng)絡(luò)輸出為89*89*100=792100維,大大的變大了,這對后面的分類器的設(shè)計同樣帶來了困難,所以pooling方法就出現(xiàn)了。為什么
28、pooling的方法可以工作呢?首先在前面的使用convolution時是利用了圖像的平穩(wěn)性特征,即不同部位的圖像的統(tǒng)計特征是相同的,那么在使用convolution對圖片中的某個局部部位計算時,得到的一個向量應(yīng)該是對這個圖像局部的一個特征,既然圖像有平穩(wěn)性特征,那么對這個得到的特征向量進行統(tǒng)計計算的話,所有的圖像局部塊應(yīng)該也都能得到相似的結(jié)果。對convolution得到的結(jié)果進行統(tǒng)計計算過程就叫做pooling,由此可見pooling也是有效的。常見的pooling方法有max pooling和average pooling等。并且學(xué)習(xí)到的特征具有旋轉(zhuǎn)不變性。從上面的介紹可以簡單的知道,c
29、onvolution是為了解決前面無監(jiān)督特征提取學(xué)習(xí)計算復(fù)雜度的問題,而pooling方法是為了后面有監(jiān)督特征分類器學(xué)習(xí)的,也是為了減小需要訓(xùn)練的系統(tǒng)參數(shù)(當然這是在普遍例子中的理解,也就是說我們采用無監(jiān)督的方法提取目標的特征,而采用有監(jiān)督的方法來訓(xùn)練分類器)。本次實驗是練習(xí)convolution和pooling的使用,更深一層的理解怎樣對大的圖片采用convolution得到每個特征的輸出結(jié)果,然后采用pooling方法對這些結(jié)果進行計算,使之具有平移不變等特性。首先來看看整個訓(xùn)練和測試過程的大概流程:在訓(xùn)練階段,是對小的patches進行whitening的。由于輸入的數(shù)據(jù)是大的圖片,所以
30、每次進行convolution時都需要進行whitening和網(wǎng)絡(luò)的權(quán)值計算,這樣每一個學(xué)習(xí)到的隱含層節(jié)點的特征對每一張圖片都可以得到一張稍小的特征圖片,接著對這張?zhí)卣鲌D片進行均值pooling。有了這些特征值以及標注值,就可以用softmax來訓(xùn)練多分類器了。在測試階段是對大圖片采取convolution的,每次convolution的圖像塊也同樣需要用訓(xùn)練時的whitening參數(shù)進行預(yù)處理,分別經(jīng)過convolution和pooling提取特征,這和前面的訓(xùn)練過程一樣。然后用訓(xùn)練好的softmax分類器就可進行預(yù)測了。訓(xùn)練特征提取的網(wǎng)絡(luò)參數(shù)用的時間比較多,而訓(xùn)練比如說softmax分類器
31、則用的時間比較短。在matlab中當有n維數(shù)組時,一般是從右向左進行剝皮計算,因為matlab輸出都是按照這種方法進行的。當然了,如果要理解的話,從左向右和從右向左都是可以的,只要是方便理解就行。程序中進行convolution測試的理由是:先用cnnConvolve函數(shù)計算出所給樣本的convolution值,然后隨機選取多個patch,用直接代數(shù)運算的方法得出網(wǎng)絡(luò)的輸出值,如果對于所有(比如說這里選的1000個)的patch,這兩者之間的差都非常小的話,說明convution計算是正確的。程序中進行pooling測試的理由是:采用函數(shù)cnnPool來計算,而該函數(shù)的參數(shù)為polling的維
32、數(shù)以及需要pooling的數(shù)據(jù)。因此程序中先隨便給一組數(shù)據(jù),然后用手動的方法計算出均值pooling的結(jié)果,最后用cnnPool函數(shù)也計算出一個結(jié)果,如果兩者的結(jié)果相同,則說明pooling函數(shù)是正確的。程序中顏色特征的學(xué)習(xí)體現(xiàn)在:每次只對RGB中的一個通道進行convolution,分別計算3次,然后把三個通道得到的convolution結(jié)果矩陣對應(yīng)元素相加即可。這樣的話,后面的Pooling操作只需在一個圖像上進行即可。由于只需訓(xùn)練4個類別的softmax分類器,所以其速度非???,1分鐘都不到。訓(xùn)練出來的特征圖像為: 最終的預(yù)測準確度為:Accuracy: 80.406%3.4構(gòu)建deep
33、 network網(wǎng)絡(luò) 練習(xí)2個隱含層的網(wǎng)絡(luò)的訓(xùn)練方法,每個網(wǎng)絡(luò)層都是用的sparse autoencoder思想,利用兩個隱含層的網(wǎng)絡(luò)來提取出輸入數(shù)據(jù)的特征。本次實驗驗要完成的任務(wù)是對MINST進行手寫數(shù)字識別,當提取出手寫數(shù)字圖片的特征后,就用softmax進行對其進行分類。進行deep network的訓(xùn)練方法大致如下:1. 用原始輸入數(shù)據(jù)作為輸入,訓(xùn)練出(利用sparse autoencoder方法)第一個隱含層結(jié)構(gòu)的網(wǎng)絡(luò)參數(shù),并將用訓(xùn)練好的參數(shù)算出第1個隱含層的輸出。2. 把步驟1的輸出作為第2個網(wǎng)絡(luò)的輸入,用同樣的方法訓(xùn)練第2個隱含層網(wǎng)絡(luò)的參數(shù)。3. 用步驟2 的輸出作為多分類器so
34、ftmax的輸入,然后利用原始數(shù)據(jù)的標簽來訓(xùn)練出softmax分類器的網(wǎng)絡(luò)參數(shù)。4. 計算2個隱含層加softmax分類器整個網(wǎng)絡(luò)一起的損失函數(shù),以及整個網(wǎng)絡(luò)對每個參數(shù)的偏導(dǎo)函數(shù)值。5. 用步驟1,2和3的網(wǎng)絡(luò)參數(shù)作為整個深度網(wǎng)絡(luò)(2個隱含層,1個softmax輸出層)參數(shù)初始化的值,然后用lbfs算法迭代求出上面損失函數(shù)最小值附近處的參數(shù)值,并作為整個網(wǎng)絡(luò)最后的最優(yōu)參數(shù)值。上面的訓(xùn)練過程是針對使用softmax分類器進行的,而softmax分類器的損失函數(shù)等是有公式進行計算的。所以在進行參數(shù)校正時,可以對把所有網(wǎng)絡(luò)看做是一個整體,然后計算整個網(wǎng)絡(luò)的損失函數(shù)和其偏導(dǎo),這樣的話當我們有了標注好了
35、的數(shù)據(jù)后,就可以用前面訓(xùn)練好了的參數(shù)作為初始參數(shù),然后用優(yōu)化算法求得整個網(wǎng)絡(luò)的參數(shù)了。關(guān)于深度網(wǎng)絡(luò)的學(xué)習(xí)幾個需要注意的小點(假設(shè)隱含層為2層):利用sparse autoencoder進行預(yù)訓(xùn)練時,需要依次計算出每個隱含層的輸出,如果后面是采用softmax分類器的話,則同樣也需要用最后一個隱含層的輸出作為softmax的輸入來訓(xùn)練softmax的網(wǎng)絡(luò)參數(shù)。由步驟1可知,在進行參數(shù)校正之前是需要對分類器的參數(shù)進行預(yù)訓(xùn)練的。且在進行參數(shù)校正(Finetuning )時是將所有的隱含層看做是一個單一的網(wǎng)絡(luò)層,因此每一次迭代就可以更新所有網(wǎng)絡(luò)層的參數(shù)。另外在實際的訓(xùn)練過程中可以看到,訓(xùn)練第一個隱含層
36、所用的時間較長,應(yīng)該需要訓(xùn)練的參數(shù)矩陣為200*784(沒包括b參數(shù)),訓(xùn)練第二個隱含層的時間較第一個隱含層要短些,主要原因是此時只需學(xué)習(xí)到200*200的參數(shù)矩陣,其參數(shù)個數(shù)大大減小。而訓(xùn)練softmax的時間更短,那是因為它的參數(shù)個數(shù)更少,且損失函數(shù)和偏導(dǎo)的計算公式也沒有前面兩層的復(fù)雜。最后對整個網(wǎng)絡(luò)的微調(diào)所用的時間和第二個隱含層的訓(xùn)練時間長短差不多。實驗結(jié)果:第一個隱含層的特征值如下所示: 第二個隱含層的特征值顯示不知道該怎么弄,因為第二個隱含層每個節(jié)點都是對應(yīng)的200維,用display_network這個函數(shù)去顯示的話是不行的,它只能顯示維數(shù)能夠開平方的那些特征,所以不知道是該將20
37、0弄成20*10,還是弄成16*25好,很好奇關(guān)于deep learning那么多文章中第二層網(wǎng)絡(luò)是怎么顯示的,將200分解后的顯示哪個具有代表性呢?待定。所以這里暫且不顯示,因為截取200前面的196位用display_network來顯示的話,什么都看不出來: 沒有經(jīng)過網(wǎng)絡(luò)參數(shù)微調(diào)時的識別準去率為:Before Finetuning Test Accuracy: 92.190%經(jīng)過了網(wǎng)絡(luò)參數(shù)微調(diào)后的識別準確率為:After Finetuning Test Accuracy: 97.670%四 深度學(xué)習(xí)研發(fā)面臨的重大問題4.1 理論問題理論問題主要體現(xiàn)在兩個方面,一個是統(tǒng)計學(xué)習(xí)方面的,另一個
38、是計算方面的。我們已經(jīng)知道,深度模型相比較于淺層模型有更好的對非線性函數(shù)的表示能力。具體來說,對于任意一個非線性函數(shù),根據(jù)神經(jīng)網(wǎng)絡(luò)的Universal Approximation Theory,我們一定能找到一個淺層網(wǎng)絡(luò)和一個深度網(wǎng)絡(luò)來足夠好地表示。但深度網(wǎng)絡(luò)只需要少得多的參數(shù)。但可表示性不代表可學(xué)習(xí)性。我們需要了解深度學(xué)習(xí)的樣本復(fù)雜度,也就是我們需要多少訓(xùn)練樣本才能學(xué)習(xí)到足夠好的深度模型。從另一方面來說,我們需要多少計算資源才能通過訓(xùn)練得到更好的模型?理想的計算優(yōu)化方法是什么?由于深度模型都是非凸函數(shù),這方面的理論研究極其困難。4.2 建模問題在推進深度學(xué)習(xí)的學(xué)習(xí)理論和計算理論的同時,我們是
39、否可以提出新的分層模型,使其不但具有傳統(tǒng)深度模型所具有的強大表示能力,還具有其他的好處,比如更容易做理論分析。另外,針對具體應(yīng)用問題,我們?nèi)绾卧O(shè)計一個最適合的深度模型來解決問題?我們已經(jīng)看到,無論在圖像深度模型,還是語言深度模型,似乎都存在深度和卷積等共同的信息處理結(jié)構(gòu)。甚至對于語音聲學(xué)模型,研究人員也在探索卷積深度網(wǎng)絡(luò)。那么一個更有意思的問題是,是否存在可能建立一個通用的深度模型或深度模型的建模語言,作為統(tǒng)一的框架來處理語音、圖像和語言?4.3 工程問題需要指出的是,對于互聯(lián)網(wǎng)公司而言,如何在工程上利用大規(guī)模的并行計算平臺來實現(xiàn)海量數(shù)據(jù)訓(xùn)練,是各家公司從事深度學(xué)習(xí)技術(shù)研發(fā)首先要解決的問題。傳
40、統(tǒng)的大數(shù)據(jù)平臺如Hadoop,由于數(shù)據(jù)處理的Latency太高,顯然不適合需要頻繁迭代的深度學(xué)習(xí)?,F(xiàn)有成熟的DNN訓(xùn)練技術(shù)大都是采用隨機梯度法(SGD)方法訓(xùn)練的。這種方法本身不可能在多個計算機之間并行。即使是采用GPU進行傳統(tǒng)的DNN模型進行訓(xùn)練,其訓(xùn)練時間也是非常漫長的,一般訓(xùn)練幾千小時的聲學(xué)模型所需要幾個月的時間。而隨著互聯(lián)網(wǎng)服務(wù)的深入,海量數(shù)據(jù)訓(xùn)練越來越重要,DNN這種緩慢的訓(xùn)練速度必然不能滿足互聯(lián)網(wǎng)服務(wù)應(yīng)用的需要。Google搭建的DistBelief,是一個采用普通服務(wù)器的深度學(xué)習(xí)并行計算平臺,采用異步算法,由很多計算單元獨立地更新同一個參數(shù)服務(wù)器的模型參數(shù),實現(xiàn)了隨機梯度下降算法
41、的并行化,加快了模型訓(xùn)練速度。與Google采用普通服務(wù)器不同,百度的多GPU并行計算平臺,克服了傳統(tǒng)SGD訓(xùn)練的不能并行的技術(shù)難題,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練已經(jīng)可以在海量語料上并行展開??梢灶A(yù)期,未來隨著海量數(shù)據(jù)訓(xùn)練的DNN技術(shù)的發(fā)展,語音圖像系統(tǒng)的識別率還會持續(xù)提升。參考文獻:1BENGIO YLearning deep architectures for A1JFoundations and Trends in Machine Learning,2009,2(1):1-1242 D. Ciresan, U.Meier, J.Masci, and J. Schmidhuber. A committee of neural networks for traffic sign classification. In Neural Networks (IJCNN), The 2011 International Joint Conference on, pages 19181921. IEEE, 2011. 103HINTON G,OSINDERO S,TEH YA fast learning algo
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球鍍銅光亮劑行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國母嬰健康產(chǎn)后護理行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國敏捷滲透測試行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國LTCC用導(dǎo)電銀漿行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025建筑安裝工程承包合同范本版
- 教室租賃合同范本
- 2025工礦企業(yè)大型成套設(shè)備采購合同范本
- 裝修設(shè)計合同范本大全
- 2025勞動合同試用期法律疑難問題詳解
- 門店合伙協(xié)議合同范本
- 2024年1月高考適應(yīng)性測試“九省聯(lián)考”數(shù)學(xué) 試題(學(xué)生版+解析版)
- JT-T-1004.1-2015城市軌道交通行車調(diào)度員技能和素質(zhì)要求第1部分:地鐵輕軌和單軌
- (高清版)WST 408-2024 定量檢驗程序分析性能驗證指南
- (正式版)JBT 11270-2024 立體倉庫組合式鋼結(jié)構(gòu)貨架技術(shù)規(guī)范
- DB11∕T 2035-2022 供暖民用建筑室溫?zé)o線采集系統(tǒng)技術(shù)要求
- 《復(fù)旦大學(xué)》課件
- 針灸與按摩綜合療法
- Photoshop 2022從入門到精通
- T-GDWJ 013-2022 廣東省健康醫(yī)療數(shù)據(jù)安全分類分級管理技術(shù)規(guī)范
- 校本課程生活中的化學(xué)
- DB43-T 2775-2023 花櫚木播種育苗技術(shù)規(guī)程
評論
0/150
提交評論