現(xiàn)代機(jī)器學(xué)習(xí) 基于深度學(xué)習(xí)的圖像特征提取_第1頁
現(xiàn)代機(jī)器學(xué)習(xí) 基于深度學(xué)習(xí)的圖像特征提取_第2頁
現(xiàn)代機(jī)器學(xué)習(xí) 基于深度學(xué)習(xí)的圖像特征提取_第3頁
現(xiàn)代機(jī)器學(xué)習(xí) 基于深度學(xué)習(xí)的圖像特征提取_第4頁
現(xiàn)代機(jī)器學(xué)習(xí) 基于深度學(xué)習(xí)的圖像特征提取_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 現(xiàn)代機(jī)器學(xué)習(xí)理論大作業(yè) (基于深度學(xué)習(xí)的圖像特征提取) 基于深度學(xué)習(xí)的圖像特征提取摘要:大數(shù)據(jù)時(shí)代的來臨,為深度學(xué)習(xí)理論的發(fā)展創(chuàng)造了良好的條件。本文介紹了深度學(xué)習(xí)的發(fā)展背景,主要討論了深度學(xué)習(xí)中的自編碼的方法,對自編碼方法實(shí)現(xiàn)仿真應(yīng)用,期望在以后能應(yīng)用到SAR圖像上進(jìn)行自動特征提取,最后闡述該理論的目前遇到的困難。關(guān)鍵詞:深度學(xué)習(xí) autoencoder convolution pooling一 引言 機(jī)器學(xué)習(xí)是人工智能的一個(gè)分支,而在很多時(shí)候,幾乎成為人工智能的代名詞。簡單來說,機(jī)器學(xué)習(xí)就是通過算法,使得機(jī)器能從大量歷史數(shù)據(jù)中學(xué)習(xí)規(guī)律,從而對新的樣本做智能識別或?qū)ξ磥碜鲱A(yù)測。從1980年代

2、末期以來,機(jī)器學(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ā)明,給機(jī)器學(xué)習(xí)帶來了希望,掀起了基于統(tǒng)計(jì)模型的機(jī)器學(xué)習(xí)熱潮。這個(gè)熱潮一直持續(xù)到今天。人們發(fā)現(xiàn),利用BP算法可以讓一個(gè)人工神經(jīng)網(wǎng)絡(luò)模型從大量訓(xùn)練樣本中學(xué)習(xí)出統(tǒng)計(jì)規(guī)律,從而對未知事件做預(yù)測。這種基于統(tǒng)計(jì)的機(jī)器學(xué)習(xí)方法比起過去基于人工規(guī)則的系統(tǒng),在很多方面顯示出優(yōu)越性。這個(gè)時(shí)候的人工神經(jīng)網(wǎng)絡(luò),雖然也被稱作多層感知機(jī)(Multi-layer Per

3、ceptron),但實(shí)際上是一種只含有一層隱層節(jié)點(diǎn)的淺層模型。90年代,各種各樣的淺層機(jī)器學(xué)習(xí)模型相繼被提出,比如支撐向量機(jī)(SVM,Support Vector Machines)、Boosting、最大熵方法(例如LR, Logistic Regression)等。這些模型的結(jié)構(gòu)基本上可以看成帶有一層隱層節(jié)點(diǎn)(如SVM、Boosting),或沒有隱層節(jié)點(diǎn)(如LR)。這些模型在無論是理論分析還是應(yīng)用都獲得了巨大的成功。相比較之下,由于理論分析的難度,加上訓(xùn)練方法需要很多經(jīng)驗(yàn)和技巧,所以這個(gè)時(shí)期淺層人工神經(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))的廣告點(diǎn)擊率CTR預(yù)估、網(wǎng)頁搜索排序(例如Yahoo!和微軟的搜索引擎)、垃圾郵件過濾系統(tǒng)、基于內(nèi)容的推薦系統(tǒng)等。2006年,加拿大多倫多大學(xué)教授、機(jī)器學(xué)習(xí)領(lǐng)域泰斗Geoffrey Hinton和他的學(xué)生Ruslan Salakhutdinov在頂尖學(xué)術(shù)刊物科學(xué)上發(fā)表了一篇文章,開啟了深度學(xué)習(xí)在學(xué)術(shù)界和工業(yè)界的浪潮。這篇文章有兩個(gè)主要的信息: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í)實(shí)現(xiàn)的。第二次浪潮:深度學(xué)習(xí)自2006年以來,深度學(xué)習(xí)在學(xué)術(shù)界持續(xù)升溫。斯坦福大學(xué)、紐約大學(xué)、加拿大蒙特利爾大學(xué)等成為研究深度學(xué)習(xí)的重鎮(zhèn)。2010年,美國國防部DARPA計(jì)劃首次資助深度學(xué)習(xí)項(xiàng)目,參與方有斯坦福大學(xué)、紐約大學(xué)和NEC美國研究院。支持深度學(xué)習(xí)的一個(gè)重要依據(jù),就是腦神經(jīng)系統(tǒng)的確具有豐富的層次結(jié)構(gòu)。一個(gè)最著名的例子就是Hubel-Wiesel模型,由于揭示了視覺神經(jīng)的機(jī)理而曾獲得諾貝爾醫(yī)學(xué)與生理學(xué)獎。除了仿生學(xué)的角度,目前深度學(xué)習(xí)的理論研究還基

6、本處于起步階段,但在應(yīng)用領(lǐng)域已顯現(xiàn)出巨大能量。2011年以來,微軟研究院和Google的語音識別研究人員先后采用DNN技術(shù)降低語音識別錯(cuò)誤率2030,是語音識別領(lǐng)域十多年來最大的突破性進(jìn)展。2012年,DNN技術(shù)在圖像識別領(lǐng)域取得驚人的效果,在ImageNet評測上將錯(cuò)誤率從26降低到15。在這一年,DNN還被應(yīng)用于制藥公司的Druge Activity預(yù)測問題,并獲得世界最好成績,這一重要成果被紐約時(shí)報(bào)報(bào)道。今天Google、微軟、百度等知名的擁有大數(shù)據(jù)的高科技公司爭相投入資源,占領(lǐng)深度學(xué)習(xí)的技術(shù)制高點(diǎn),正是因?yàn)樗鼈兌伎吹搅嗽诖髷?shù)據(jù)時(shí)代,更加復(fù)雜且更加強(qiáng)大的深度模型能深刻揭示海量數(shù)據(jù)里所承載

7、的復(fù)雜而豐富的信息,并對未來或未知事件做更精準(zhǔn)的預(yù)測。在工業(yè)界一直有個(gè)很流行的觀點(diǎn):在大數(shù)據(jù)條件下,簡單的機(jī)器學(xué)習(xí)模型會比復(fù)雜模型更加有效。例如,在很多的大數(shù)據(jù)應(yīng)用中,最簡單的線性模型得到大量使用。而最近深度學(xué)習(xí)的驚人進(jìn)展,促使我們也許到了要重新思考這個(gè)觀點(diǎn)的時(shí)候。簡而言之,在大數(shù)據(jù)情況下,也許只有比較復(fù)雜的模型,或者說表達(dá)能力強(qiáng)的模型,才能充分發(fā)掘海量數(shù)據(jù)中蘊(yùn)藏的豐富信息。運(yùn)用更強(qiáng)大的深度模型,也許我們能從大數(shù)據(jù)中發(fā)掘出更多有價(jià)值的信息和知識。為了理解為什么大數(shù)據(jù)需要深度模型,先舉一個(gè)例子。語音識別已經(jīng)是一個(gè)大數(shù)據(jù)的機(jī)器學(xué)習(xí)問題,在其聲學(xué)建模部分,通常面臨的是十億到千億級別的訓(xùn)練樣本。在Go

8、ogle的一個(gè)語音識別實(shí)驗(yàn)中,發(fā)現(xiàn)訓(xùn)練后的DNN對訓(xùn)練樣本和測試樣本的預(yù)測誤差基本相當(dāng)。這是非常違反常識的,因?yàn)橥ǔDP驮谟?xùn)練樣本上的預(yù)測誤差會顯著小于測試樣本。因此,只有一個(gè)解釋,就是由于大數(shù)據(jù)里含有豐富的信息維度,即便是DNN這樣的高容量復(fù)雜模型也是處于欠擬合的狀態(tài),更不必說傳統(tǒng)的GMM聲學(xué)模型了。所以從這個(gè)例子中我們看出,大數(shù)據(jù)需要深度學(xué)習(xí)。淺層模型有一個(gè)重要特點(diǎn),就是假設(shè)靠人工經(jīng)驗(yàn)來抽取樣本的特征,而強(qiáng)調(diào)模型主要是負(fù)責(zé)分類或預(yù)測。在模型的運(yùn)用不出差錯(cuò)的前提下(如假設(shè)互聯(lián)網(wǎng)公司聘請的是機(jī)器學(xué)習(xí)的專家),特征的好壞就成為整個(gè)系統(tǒng)性能的瓶頸。因此,通常一個(gè)開發(fā)團(tuán)隊(duì)中更多的人力是投入到發(fā)掘更好

9、的特征上去的。要發(fā)現(xiàn)一個(gè)好的特征,就要求開發(fā)人員對待解決的問題要有很深入的理解。而達(dá)到這個(gè)程度,往往需要反復(fù)地摸索,甚至是數(shù)年磨一劍。因此,人工設(shè)計(jì)樣本特征,不是一個(gè)可擴(kuò)展的途徑。深度學(xué)習(xí)的實(shí)質(zhì),是通過構(gòu)建具有很多隱層的機(jī)器學(xué)習(xí)模型和海量的訓(xùn)練數(shù)據(jù),來學(xué)習(xí)更有用的特征,從而最終提升分類或預(yù)測的準(zhǔn)確性。所以“深度模型”是手段,“特征學(xué)習(xí)”是目的。區(qū)別于傳統(tǒng)的淺層學(xué)習(xí),深度學(xué)習(xí)的不同在于:1. 強(qiáng)調(diào)了模型結(jié)構(gòu)的深度,通常有5層、6層,甚至10多層的隱層節(jié)點(diǎn);2. 明確突出了特征學(xué)習(xí)的重要性,也就是說,同過逐層特征變換,將樣本在原空間的特征表示變換到一個(gè)新特征空間,使分類或預(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ò),通常至少有兩個(gè)非線性可訓(xùn)練的卷積層,兩個(gè)非線性的固定卷積層(又叫Pooling Laye)和一個(gè)全連接層,一共至少5個(gè)隱含層。CNN的結(jié)構(gòu)受到著名的Hubel-Wiesel生物視覺模型的啟發(fā),尤其

11、是模擬視覺皮層V1和V2層中Simple Cell和Complex Cell的行為。在很長時(shí)間里,CNN雖然在小規(guī)模的問題上,如手寫數(shù)字,取得過當(dāng)時(shí)世界最好結(jié)果,但一直沒有取得巨大成功。這主要原因是,CNN在大規(guī)模圖像上效果不好,比如像素很多的自然圖片內(nèi)容理解,所以沒有得到計(jì)算機(jī)視覺領(lǐng)域的足夠重視。這個(gè)情況一直持續(xù)到2012年10月,Geoffrey Hinton和他的兩個(gè)學(xué)生在著名的ImageNet問題上用更深的CNN取得世界最好結(jié)果,使得圖像識別大踏步前進(jìn)。在Hinton的模型里,輸入就是圖像的像素,沒有用到任何的人工特征。這個(gè)驚人的結(jié)果為什么在之前沒有發(fā)生? 原因當(dāng)然包括算法的提升,比如

12、dropout等防止過擬合技術(shù),但最重要的是,GPU帶來的計(jì)算能力提升和更多的訓(xùn)練數(shù)據(jù)。百度在2012年底將深度學(xué)習(xí)技術(shù)成功應(yīng)用于自然圖像OCR識別和人臉識別等問題,并推出相應(yīng)的桌面和移動搜索產(chǎn)品,2013年,深度學(xué)習(xí)模型被成功應(yīng)用于一般圖片的識別和理解。從百度的經(jīng)驗(yàn)來看,深度學(xué)習(xí)應(yīng)用于圖像識別不但大大提升了準(zhǔn)確性,而且避免了人工特征抽取的時(shí)間消耗,從而大大提高了在線計(jì)算效率??梢院苡邪盐盏卣f,從現(xiàn)在開始,深度學(xué)習(xí)將取代“人工特征+機(jī)器學(xué)習(xí)”的方法而逐漸成為主流圖像識別方法。二 深度學(xué)習(xí)中的sparse autoencoder2.1 sparse autoencoderDeep learnin

13、g領(lǐng)域比較出名的一類算法sparse autoencoder,即稀疏模式的自動編碼。sparse autoencoder是一種自動提取樣本(如圖像)特征的方法。把輸入層激活度(如圖像)用隱層激活度表征,再把隱層信息在輸出層還原。這樣隱層上的信息就是輸入層的一個(gè)壓縮過的表征,且其信息熵會減小。并且這些表征很適合做分類器。我們知道,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ù)的表達(dá)式了(當(dāng)然,該表達(dá)式需對網(wǎng)絡(luò)的參數(shù)進(jìn)行”懲罰”,以便使每個(gè)參數(shù)不要太大),

14、同時(shí)也能夠求出損失函數(shù)偏導(dǎo)函數(shù)的表達(dá)式,然后利用優(yōu)化算法求出網(wǎng)絡(luò)最優(yōu)的參數(shù)。應(yīng)該清楚的是,損失函數(shù)的表達(dá)式中,需要用到有標(biāo)注值的樣本。那么這里的sparse autoencoder為什么能夠無監(jiān)督學(xué)習(xí)呢?難道它的損失函數(shù)的表達(dá)式中不需要標(biāo)注的樣本值(即通常所說的y值)么?其實(shí)在稀疏編碼中”標(biāo)注值”也是需要的,只不過它的輸出理論值是本身輸入的特征值x,其實(shí)這里的標(biāo)注值y=x。這樣做的好處是,網(wǎng)絡(luò)的隱含層能夠很好的代替輸入的特征,因?yàn)樗軌虮容^準(zhǔn)確的還原出那些輸入特征值。Sparse autoencoder的一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)圖如下所示: 2.2 損失函數(shù)無稀疏約束時(shí)網(wǎng)絡(luò)的損失函數(shù)表達(dá)式如下: 稀疏編碼

15、是對網(wǎng)絡(luò)的隱含層的輸出有了約束,即隱含層節(jié)點(diǎn)輸出的平均值應(yīng)盡量為0,這樣的話,大部分的隱含層節(jié)點(diǎn)都處于非激活狀態(tài)。因此,此時(shí)的sparse autoencoder損失函數(shù)表達(dá)式為: 后面那項(xiàng)為KL距離,其表達(dá)式如下: 隱含層節(jié)點(diǎn)輸出平均值求法如下: 其中的參數(shù)一般取很小,比如說0.05,也就是小概率發(fā)生事件的概率。這說明要求隱含層的每一個(gè)節(jié)點(diǎn)的輸出均值接近0.05(其實(shí)就是接近0,因?yàn)榫W(wǎng)絡(luò)中激活函數(shù)為sigmoid函數(shù)),這樣就達(dá)到稀疏的目的了。KL距離在這里表示的是兩個(gè)向量之間的差異值。從約束函數(shù)表達(dá)式中可以看出,差異越大則”懲罰越大”,因此最終的隱含層節(jié)點(diǎn)的輸出會接近0.05。假設(shè)我們有一

16、個(gè)固定樣本集 ,它包含 個(gè)樣例。我們可以用批量梯度下降法來求解神經(jīng)網(wǎng)絡(luò)。具體來講,對于單個(gè)樣例 ,其代價(jià)函數(shù)為:這是一個(gè)(二分之一的)方差代價(jià)函數(shù)。給定一個(gè)包含 個(gè)樣例的數(shù)據(jù)集,我們可以定義整體代價(jià)函數(shù)為:以上公式中的第一項(xiàng) 是一個(gè)均方差項(xiàng)。第二項(xiàng)是一個(gè)規(guī)則化項(xiàng)(也叫權(quán)重衰減項(xiàng)),其目的是減小權(quán)重的幅度,防止過度擬合。 權(quán)重衰減參數(shù) 用于控制公式中兩項(xiàng)的相對重要性。在此重申一下這兩個(gè)復(fù)雜函數(shù)的含義: 是針對單個(gè)樣例計(jì)算得到的方差代價(jià)函數(shù); 是整體樣本代價(jià)函數(shù),它包含權(quán)重衰減項(xiàng)。 以上的代價(jià)函數(shù)經(jīng)常被用于分類和回歸問題。在分類問題中,我們用 或 ,來代表兩種類型的標(biāo)簽,這是因?yàn)?sigmoid激

17、活函數(shù)的值域?yàn)?;如果我們使用雙曲正切型激活函數(shù),那么應(yīng)該選用 -1 和 +1 作為標(biāo)簽。對于回歸問題,我們首先要變換輸出值域 ,以保證其范圍為 (同樣地,如果我們使用雙曲正切型激活函數(shù),要使輸出值域?yàn)?)。 我們的目標(biāo)是針對參數(shù) 和 來求其函數(shù) 的最小值。為了求解神經(jīng)網(wǎng)絡(luò),我們需要將每一個(gè)參數(shù) 和 初始化為一個(gè)很小的、接近零的隨機(jī)值(比如說,使用正態(tài)分布 生成的隨機(jī)值,其中 設(shè)置為 ),之后對目標(biāo)函數(shù)使用諸如批量梯度下降法的最優(yōu)化算法。因?yàn)?是一個(gè)非凸函數(shù),梯度下降法很可能會收斂到局部最優(yōu)解;但是在實(shí)際應(yīng)用中,梯度下降法通常能得到令人滿意的結(jié)果。最后,需要再次強(qiáng)調(diào)的是,要將參數(shù)進(jìn)行隨機(jī)初始化

18、,而不是全部置為 。如果所有參數(shù)都用相同的值作為初始值,那么所有隱藏層單元最終會得到與輸入值有關(guān)的、相同的函數(shù)(也就是說,對于所有 ,都會取相同的值,那么對于任何輸入 都會有: )。隨機(jī)初始化的目的是使對稱失效。2.3 反向傳播算法梯度下降法中每一次迭代都按照如下公式對參數(shù) 和 進(jìn)行更新:其中 是學(xué)習(xí)速率。其中關(guān)鍵步驟是計(jì)算偏導(dǎo)數(shù)。我們現(xiàn)在來講一下反向傳播算法,它是計(jì)算偏導(dǎo)數(shù)的一種有效方法。我們首先來講一下如何使用反向傳播算法來計(jì)算 和 ,這兩項(xiàng)是單個(gè)樣例 的代價(jià)函數(shù) 的偏導(dǎo)數(shù)。一旦我們求出該偏導(dǎo)數(shù),就可以推導(dǎo)出整體代價(jià)函數(shù) 的偏導(dǎo)數(shù):以上兩行公式稍有不同,第一行比第二行多出一項(xiàng),是因?yàn)闄?quán)重衰

19、減是作用于 而不是 。反向傳播算法的思路如下:給定一個(gè)樣例 ,我們首先進(jìn)行“前向傳導(dǎo)”運(yùn)算,計(jì)算出網(wǎng)絡(luò)中所有的激活值,包括 的輸出值。之后,針對第 層的每一個(gè)節(jié)點(diǎn) ,我們計(jì)算出其“殘差” ,該殘差表明了該節(jié)點(diǎn)對最終輸出值的殘差產(chǎn)生了多少影響。對于最終的輸出節(jié)點(diǎn),我們可以直接算出網(wǎng)絡(luò)產(chǎn)生的激活值與實(shí)際值之間的差距,我們將這個(gè)差距定義為 (第 層表示輸出層)。對于隱藏單元我們?nèi)绾翁幚砟??我們將基于?jié)點(diǎn)(譯者注:第 層節(jié)點(diǎn))殘差的加權(quán)平均值計(jì)算 ,這些節(jié)點(diǎn)以 作為輸入。下面將給出反向傳導(dǎo)算法的細(xì)節(jié):進(jìn)行前饋傳導(dǎo)計(jì)算,利用前向傳導(dǎo)公式,得到 直到輸出層 的激活值。對于第 層(輸出層)的每個(gè)輸出單元 ,

20、我們根據(jù)以下公式計(jì)算殘差: 對 的各個(gè)層,第 層的第 個(gè)節(jié)點(diǎn)的殘差計(jì)算方法如下: 將上式中的與的關(guān)系替換為與的關(guān)系,就可以得到: 以上逐次從后向前求導(dǎo)的過程即為“反向傳導(dǎo)”的本意所在。 計(jì)算我們需要的偏導(dǎo)數(shù),計(jì)算方法如下: 最后,我們用矩陣-向量表示法重寫以上算法。我們使用“” 表示向量乘積運(yùn)算符(在Matlab或Octave里用“.*”表示,也稱作阿達(dá)馬乘積)。若 ,則 。那么,反向傳播算法可表示為以下幾個(gè)步驟:1 進(jìn)行前饋傳導(dǎo)計(jì)算,利用前向傳導(dǎo)公式,得到 直到輸出層 的激活值。2 對輸出層(第 層),計(jì)算: 3 對于 的各層,計(jì)算: 4 計(jì)算最終需要的偏導(dǎo)數(shù)值: 實(shí)現(xiàn)中應(yīng)注意:在以上的第2

21、步和第3步中,我們需要為每一個(gè) 值計(jì)算其 。假設(shè) 是sigmoid函數(shù),并且我們已經(jīng)在前向傳導(dǎo)運(yùn)算中得到了 。那么,使用我們早先推導(dǎo)出的 表達(dá)式,就可以計(jì)算得到 。 最后,我們將對梯度下降算法做個(gè)全面總結(jié)。在下面的偽代碼中, 是一個(gè)與矩陣 維度相同的矩陣, 是一個(gè)與 維度相同的向量。注意這里“”是一個(gè)矩陣,而不是“ 與 相乘”。下面,我們實(shí)現(xiàn)批量梯度下降法中的一次迭代:對于所有 ,令 , (設(shè)置為全零矩陣或全零向量)1 對于 到 , 使用反向傳播算法計(jì)算 和 。2 計(jì)算 。3 計(jì)算 。更新權(quán)重參數(shù): 現(xiàn)在,我們可以重復(fù)梯度下降法的迭代步驟來減小代價(jià)函數(shù) 的值,進(jìn)而求解我們的神經(jīng)網(wǎng)絡(luò)。三 實(shí)驗(yàn)仿

22、真3.1 利用autoencoder提取特征從給定的很多張自然圖片中截取出大小為8*8的小patches圖片共10000張,現(xiàn)在需要用sparse autoencoder的方法訓(xùn)練出一個(gè)隱含層網(wǎng)絡(luò)所學(xué)習(xí)到的特征。該網(wǎng)絡(luò)共有3層,輸入層是64個(gè)節(jié)點(diǎn),隱含層是25個(gè)節(jié)點(diǎn),輸出層當(dāng)然也是64個(gè)節(jié)點(diǎn)了。其實(shí)實(shí)現(xiàn)該功能的主要步驟還是需要計(jì)算出網(wǎng)絡(luò)的損失函數(shù)以及其偏導(dǎo)數(shù)。下面用簡單的語言大概介紹下這個(gè)步驟,方便理清算法的流程。1. 計(jì)算出網(wǎng)絡(luò)每個(gè)節(jié)點(diǎn)的輸入值(即程序中的z值)和輸出值(即程序中的a值,a是z的sigmoid函數(shù)值)。2. 利用z值和a值計(jì)算出網(wǎng)絡(luò)每個(gè)節(jié)點(diǎn)的誤差值(即程序中的delta值)。

23、3. 這樣可以利用上面計(jì)算出的每個(gè)節(jié)點(diǎn)的a,z,delta來表達(dá)出系統(tǒng)的損失函數(shù)以及損失函數(shù)的偏導(dǎo)數(shù)了,當(dāng)然這些都是一些數(shù)學(xué)推導(dǎo)。其實(shí)步驟1是前向進(jìn)行的,也就是說按照輸入層隱含層輸出層的方向進(jìn)行計(jì)算。而步驟2是方向進(jìn)行的(這也是該算法叫做BP算法的來源),即每個(gè)節(jié)點(diǎn)的誤差值是按照輸出層隱含層輸入層方向進(jìn)行的。下面看一下實(shí)驗(yàn)流程:首先運(yùn)行主程序train.m中的步驟1,即隨機(jī)采樣出10000個(gè)小的patch,并且顯示出其中的204個(gè)patch圖像,圖像顯示如下所示: 然后運(yùn)行train.m中的步驟2和步驟3,進(jìn)行損失函數(shù)和梯度函數(shù)的計(jì)算并驗(yàn)證。進(jìn)行g(shù)radient checking的時(shí)間可能會太

24、長,我這里大概用了1個(gè)半小時(shí)以上,當(dāng)用gradient checking時(shí),發(fā)現(xiàn)誤差只有6.5101e-11,遠(yuǎn)小于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í)驗(yàn)的數(shù)據(jù)依舊是手寫數(shù)字?jǐn)?shù)據(jù)庫MNIST Datas

25、et。采用數(shù)字59的樣本來進(jìn)行無監(jiān)督訓(xùn)練,采用的方法是sparse autoencoder,可以提取出這些數(shù)據(jù)的權(quán)值,權(quán)值轉(zhuǎn)換成圖片顯示如下: 但是本次實(shí)驗(yàn)主要是進(jìn)行04這5個(gè)數(shù)字的分類,雖然進(jìn)行無監(jiān)督訓(xùn)練用的是數(shù)字59的訓(xùn)練樣本,這依然不會影響后面的結(jié)果。只是后面的分類器設(shè)計(jì)是用的softmax regression,所以是有監(jiān)督的。最后的結(jié)果精度是98%,而直接用原始的像素點(diǎn)進(jìn)行分類器的設(shè)計(jì)不僅效果要差(才96%),而且訓(xùn)練的速度也會變慢不少。3.3 convolution與 pooling在全局連接網(wǎng)絡(luò)中,如果我們的圖像很大,比如說為96*96,隱含層有要學(xué)習(xí)100個(gè)特征,則這時(shí)候把輸入

26、層的所有點(diǎn)都與隱含層節(jié)點(diǎn)連接,則需要學(xué)習(xí)106個(gè)參數(shù),這樣的話在使用BP算法時(shí)速度就明顯慢了很多。所以后面就發(fā)展到了局部連接網(wǎng)絡(luò),也就是說每個(gè)隱含層的節(jié)點(diǎn)只與一部分連續(xù)的輸入點(diǎn)連接。這樣的好處是模擬了人大腦皮層中視覺皮層不同位置只對局部區(qū)域有響應(yīng)。局部連接網(wǎng)絡(luò)在神經(jīng)網(wǎng)絡(luò)中的實(shí)現(xiàn)使用convolution的方法。它在神經(jīng)網(wǎng)絡(luò)中的理論基礎(chǔ)是對于自然圖像來說,因?yàn)樗鼈兙哂蟹€(wěn)定性,即圖像中某個(gè)部分的統(tǒng)計(jì)特征和其它部位的相似,因此我們學(xué)習(xí)到的某個(gè)部位的特征也同樣適用于其它部位。下面具體看一個(gè)例子是怎樣實(shí)現(xiàn)convolution的,假如對一張大圖片的數(shù)據(jù)集,r*c大小,則首先需要對這個(gè)數(shù)據(jù)集隨機(jī)采樣大小為

27、a*b的小圖片,然后用這些小圖片patch進(jìn)行學(xué)習(xí)(比如說sparse autoencoder),此時(shí)的隱含節(jié)點(diǎn)為k個(gè)。因此最終學(xué)習(xí)到的特征數(shù)為: 雖然按照convolution的方法可以減小不少需要訓(xùn)練的網(wǎng)絡(luò)參數(shù),比如說96*96,,100個(gè)隱含層的,采用8*8patch,也100個(gè)隱含層,則其需要訓(xùn)練的參數(shù)個(gè)數(shù)減小到了103,大大的減小特征提取過程的困難。但是此時(shí)同樣出現(xiàn)了一個(gè)問題,即它的輸出向量的維數(shù)變得很大,本來完全連接的網(wǎng)絡(luò)輸出只有100維的,現(xiàn)在的網(wǎng)絡(luò)輸出為89*89*100=792100維,大大的變大了,這對后面的分類器的設(shè)計(jì)同樣帶來了困難,所以pooling方法就出現(xiàn)了。為什么

28、pooling的方法可以工作呢?首先在前面的使用convolution時(shí)是利用了圖像的平穩(wěn)性特征,即不同部位的圖像的統(tǒng)計(jì)特征是相同的,那么在使用convolution對圖片中的某個(gè)局部部位計(jì)算時(shí),得到的一個(gè)向量應(yīng)該是對這個(gè)圖像局部的一個(gè)特征,既然圖像有平穩(wěn)性特征,那么對這個(gè)得到的特征向量進(jìn)行統(tǒng)計(jì)計(jì)算的話,所有的圖像局部塊應(yīng)該也都能得到相似的結(jié)果。對convolution得到的結(jié)果進(jìn)行統(tǒng)計(jì)計(jì)算過程就叫做pooling,由此可見pooling也是有效的。常見的pooling方法有max pooling和average pooling等。并且學(xué)習(xí)到的特征具有旋轉(zhuǎn)不變性。從上面的介紹可以簡單的知道,c

29、onvolution是為了解決前面無監(jiān)督特征提取學(xué)習(xí)計(jì)算復(fù)雜度的問題,而pooling方法是為了后面有監(jiān)督特征分類器學(xué)習(xí)的,也是為了減小需要訓(xùn)練的系統(tǒng)參數(shù)(當(dāng)然這是在普遍例子中的理解,也就是說我們采用無監(jiān)督的方法提取目標(biāo)的特征,而采用有監(jiān)督的方法來訓(xùn)練分類器)。本次實(shí)驗(yàn)是練習(xí)convolution和pooling的使用,更深一層的理解怎樣對大的圖片采用convolution得到每個(gè)特征的輸出結(jié)果,然后采用pooling方法對這些結(jié)果進(jìn)行計(jì)算,使之具有平移不變等特性。首先來看看整個(gè)訓(xùn)練和測試過程的大概流程:在訓(xùn)練階段,是對小的patches進(jìn)行whitening的。由于輸入的數(shù)據(jù)是大的圖片,所以

30、每次進(jìn)行convolution時(shí)都需要進(jìn)行whitening和網(wǎng)絡(luò)的權(quán)值計(jì)算,這樣每一個(gè)學(xué)習(xí)到的隱含層節(jié)點(diǎn)的特征對每一張圖片都可以得到一張稍小的特征圖片,接著對這張?zhí)卣鲌D片進(jìn)行均值pooling。有了這些特征值以及標(biāo)注值,就可以用softmax來訓(xùn)練多分類器了。在測試階段是對大圖片采取convolution的,每次convolution的圖像塊也同樣需要用訓(xùn)練時(shí)的whitening參數(shù)進(jìn)行預(yù)處理,分別經(jīng)過convolution和pooling提取特征,這和前面的訓(xùn)練過程一樣。然后用訓(xùn)練好的softmax分類器就可進(jìn)行預(yù)測了。訓(xùn)練特征提取的網(wǎng)絡(luò)參數(shù)用的時(shí)間比較多,而訓(xùn)練比如說softmax分類器

31、則用的時(shí)間比較短。在matlab中當(dāng)有n維數(shù)組時(shí),一般是從右向左進(jìn)行剝皮計(jì)算,因?yàn)閙atlab輸出都是按照這種方法進(jìn)行的。當(dāng)然了,如果要理解的話,從左向右和從右向左都是可以的,只要是方便理解就行。程序中進(jìn)行convolution測試的理由是:先用cnnConvolve函數(shù)計(jì)算出所給樣本的convolution值,然后隨機(jī)選取多個(gè)patch,用直接代數(shù)運(yùn)算的方法得出網(wǎng)絡(luò)的輸出值,如果對于所有(比如說這里選的1000個(gè))的patch,這兩者之間的差都非常小的話,說明convution計(jì)算是正確的。程序中進(jìn)行pooling測試的理由是:采用函數(shù)cnnPool來計(jì)算,而該函數(shù)的參數(shù)為polling的維

32、數(shù)以及需要pooling的數(shù)據(jù)。因此程序中先隨便給一組數(shù)據(jù),然后用手動的方法計(jì)算出均值pooling的結(jié)果,最后用cnnPool函數(shù)也計(jì)算出一個(gè)結(jié)果,如果兩者的結(jié)果相同,則說明pooling函數(shù)是正確的。程序中顏色特征的學(xué)習(xí)體現(xiàn)在:每次只對RGB中的一個(gè)通道進(jìn)行convolution,分別計(jì)算3次,然后把三個(gè)通道得到的convolution結(jié)果矩陣對應(yīng)元素相加即可。這樣的話,后面的Pooling操作只需在一個(gè)圖像上進(jìn)行即可。由于只需訓(xùn)練4個(gè)類別的softmax分類器,所以其速度非???,1分鐘都不到。訓(xùn)練出來的特征圖像為: 最終的預(yù)測準(zhǔn)確度為:Accuracy: 80.406%3.4構(gòu)建deep

33、 network網(wǎng)絡(luò) 練習(xí)2個(gè)隱含層的網(wǎng)絡(luò)的訓(xùn)練方法,每個(gè)網(wǎng)絡(luò)層都是用的sparse autoencoder思想,利用兩個(gè)隱含層的網(wǎng)絡(luò)來提取出輸入數(shù)據(jù)的特征。本次實(shí)驗(yàn)驗(yàn)要完成的任務(wù)是對MINST進(jìn)行手寫數(shù)字識別,當(dāng)提取出手寫數(shù)字圖片的特征后,就用softmax進(jìn)行對其進(jìn)行分類。進(jìn)行deep network的訓(xùn)練方法大致如下:1. 用原始輸入數(shù)據(jù)作為輸入,訓(xùn)練出(利用sparse autoencoder方法)第一個(gè)隱含層結(jié)構(gòu)的網(wǎng)絡(luò)參數(shù),并將用訓(xùn)練好的參數(shù)算出第1個(gè)隱含層的輸出。2. 把步驟1的輸出作為第2個(gè)網(wǎng)絡(luò)的輸入,用同樣的方法訓(xùn)練第2個(gè)隱含層網(wǎng)絡(luò)的參數(shù)。3. 用步驟2 的輸出作為多分類器so

34、ftmax的輸入,然后利用原始數(shù)據(jù)的標(biāo)簽來訓(xùn)練出softmax分類器的網(wǎng)絡(luò)參數(shù)。4. 計(jì)算2個(gè)隱含層加softmax分類器整個(gè)網(wǎng)絡(luò)一起的損失函數(shù),以及整個(gè)網(wǎng)絡(luò)對每個(gè)參數(shù)的偏導(dǎo)函數(shù)值。5. 用步驟1,2和3的網(wǎng)絡(luò)參數(shù)作為整個(gè)深度網(wǎng)絡(luò)(2個(gè)隱含層,1個(gè)softmax輸出層)參數(shù)初始化的值,然后用lbfs算法迭代求出上面損失函數(shù)最小值附近處的參數(shù)值,并作為整個(gè)網(wǎng)絡(luò)最后的最優(yōu)參數(shù)值。上面的訓(xùn)練過程是針對使用softmax分類器進(jìn)行的,而softmax分類器的損失函數(shù)等是有公式進(jìn)行計(jì)算的。所以在進(jìn)行參數(shù)校正時(shí),可以對把所有網(wǎng)絡(luò)看做是一個(gè)整體,然后計(jì)算整個(gè)網(wǎng)絡(luò)的損失函數(shù)和其偏導(dǎo),這樣的話當(dāng)我們有了標(biāo)注好了

35、的數(shù)據(jù)后,就可以用前面訓(xùn)練好了的參數(shù)作為初始參數(shù),然后用優(yōu)化算法求得整個(gè)網(wǎng)絡(luò)的參數(shù)了。關(guān)于深度網(wǎng)絡(luò)的學(xué)習(xí)幾個(gè)需要注意的小點(diǎn)(假設(shè)隱含層為2層):利用sparse autoencoder進(jìn)行預(yù)訓(xùn)練時(shí),需要依次計(jì)算出每個(gè)隱含層的輸出,如果后面是采用softmax分類器的話,則同樣也需要用最后一個(gè)隱含層的輸出作為softmax的輸入來訓(xùn)練softmax的網(wǎng)絡(luò)參數(shù)。由步驟1可知,在進(jìn)行參數(shù)校正之前是需要對分類器的參數(shù)進(jìn)行預(yù)訓(xùn)練的。且在進(jìn)行參數(shù)校正(Finetuning )時(shí)是將所有的隱含層看做是一個(gè)單一的網(wǎng)絡(luò)層,因此每一次迭代就可以更新所有網(wǎng)絡(luò)層的參數(shù)。另外在實(shí)際的訓(xùn)練過程中可以看到,訓(xùn)練第一個(gè)隱含層

36、所用的時(shí)間較長,應(yīng)該需要訓(xùn)練的參數(shù)矩陣為200*784(沒包括b參數(shù)),訓(xùn)練第二個(gè)隱含層的時(shí)間較第一個(gè)隱含層要短些,主要原因是此時(shí)只需學(xué)習(xí)到200*200的參數(shù)矩陣,其參數(shù)個(gè)數(shù)大大減小。而訓(xùn)練softmax的時(shí)間更短,那是因?yàn)樗膮?shù)個(gè)數(shù)更少,且損失函數(shù)和偏導(dǎo)的計(jì)算公式也沒有前面兩層的復(fù)雜。最后對整個(gè)網(wǎng)絡(luò)的微調(diào)所用的時(shí)間和第二個(gè)隱含層的訓(xùn)練時(shí)間長短差不多。實(shí)驗(yàn)結(jié)果:第一個(gè)隱含層的特征值如下所示: 第二個(gè)隱含層的特征值顯示不知道該怎么弄,因?yàn)榈诙€(gè)隱含層每個(gè)節(jié)點(diǎn)都是對應(yīng)的200維,用display_network這個(gè)函數(shù)去顯示的話是不行的,它只能顯示維數(shù)能夠開平方的那些特征,所以不知道是該將20

37、0弄成20*10,還是弄成16*25好,很好奇關(guān)于deep learning那么多文章中第二層網(wǎng)絡(luò)是怎么顯示的,將200分解后的顯示哪個(gè)具有代表性呢?待定。所以這里暫且不顯示,因?yàn)榻厝?00前面的196位用display_network來顯示的話,什么都看不出來: 沒有經(jīng)過網(wǎng)絡(luò)參數(shù)微調(diào)時(shí)的識別準(zhǔn)去率為:Before Finetuning Test Accuracy: 92.190%經(jīng)過了網(wǎng)絡(luò)參數(shù)微調(diào)后的識別準(zhǔn)確率為:After Finetuning Test Accuracy: 97.670%四 深度學(xué)習(xí)研發(fā)面臨的重大問題4.1 理論問題理論問題主要體現(xiàn)在兩個(gè)方面,一個(gè)是統(tǒng)計(jì)學(xué)習(xí)方面的,另一個(gè)

38、是計(jì)算方面的。我們已經(jīng)知道,深度模型相比較于淺層模型有更好的對非線性函數(shù)的表示能力。具體來說,對于任意一個(gè)非線性函數(shù),根據(jù)神經(jīng)網(wǎng)絡(luò)的Universal Approximation Theory,我們一定能找到一個(gè)淺層網(wǎng)絡(luò)和一個(gè)深度網(wǎng)絡(luò)來足夠好地表示。但深度網(wǎng)絡(luò)只需要少得多的參數(shù)。但可表示性不代表可學(xué)習(xí)性。我們需要了解深度學(xué)習(xí)的樣本復(fù)雜度,也就是我們需要多少訓(xùn)練樣本才能學(xué)習(xí)到足夠好的深度模型。從另一方面來說,我們需要多少計(jì)算資源才能通過訓(xùn)練得到更好的模型?理想的計(jì)算優(yōu)化方法是什么?由于深度模型都是非凸函數(shù),這方面的理論研究極其困難。4.2 建模問題在推進(jìn)深度學(xué)習(xí)的學(xué)習(xí)理論和計(jì)算理論的同時(shí),我們是

39、否可以提出新的分層模型,使其不但具有傳統(tǒng)深度模型所具有的強(qiáng)大表示能力,還具有其他的好處,比如更容易做理論分析。另外,針對具體應(yīng)用問題,我們?nèi)绾卧O(shè)計(jì)一個(gè)最適合的深度模型來解決問題?我們已經(jīng)看到,無論在圖像深度模型,還是語言深度模型,似乎都存在深度和卷積等共同的信息處理結(jié)構(gòu)。甚至對于語音聲學(xué)模型,研究人員也在探索卷積深度網(wǎng)絡(luò)。那么一個(gè)更有意思的問題是,是否存在可能建立一個(gè)通用的深度模型或深度模型的建模語言,作為統(tǒng)一的框架來處理語音、圖像和語言?4.3 工程問題需要指出的是,對于互聯(lián)網(wǎng)公司而言,如何在工程上利用大規(guī)模的并行計(jì)算平臺來實(shí)現(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ù)大都是采用隨機(jī)梯度法(SGD)方法訓(xùn)練的。這種方法本身不可能在多個(gè)計(jì)算機(jī)之間并行。即使是采用GPU進(jìn)行傳統(tǒng)的DNN模型進(jìn)行訓(xùn)練,其訓(xùn)練時(shí)間也是非常漫長的,一般訓(xùn)練幾千小時(shí)的聲學(xué)模型所需要幾個(gè)月的時(shí)間。而隨著互聯(lián)網(wǎng)服務(wù)的深入,海量數(shù)據(jù)訓(xùn)練越來越重要,DNN這種緩慢的訓(xùn)練速度必然不能滿足互聯(lián)網(wǎng)服務(wù)應(yīng)用的需要。Google搭建的DistBelief,是一個(gè)采用普通服務(wù)器的深度學(xué)習(xí)并行計(jì)算平臺,采用異步算法,由很多計(jì)算單元獨(dú)立地更新同一個(gè)參數(shù)服務(wù)器的模型參數(shù),實(shí)現(xiàn)了隨機(jī)梯度下降算法

41、的并行化,加快了模型訓(xùn)練速度。與Google采用普通服務(wù)器不同,百度的多GPU并行計(jì)算平臺,克服了傳統(tǒng)SGD訓(xùn)練的不能并行的技術(shù)難題,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練已經(jīng)可以在海量語料上并行展開。可以預(yù)期,未來隨著海量數(shù)據(jù)訓(xùn)練的DNN技術(shù)的發(fā)展,語音圖像系統(tǒng)的識別率還會持續(xù)提升。參考文獻(xiàn):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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論