機(jī)器學(xué)習(xí)試驗(yàn)報(bào)告完整_第1頁
機(jī)器學(xué)習(xí)試驗(yàn)報(bào)告完整_第2頁
機(jī)器學(xué)習(xí)試驗(yàn)報(bào)告完整_第3頁
機(jī)器學(xué)習(xí)試驗(yàn)報(bào)告完整_第4頁
機(jī)器學(xué)習(xí)試驗(yàn)報(bào)告完整_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

基于AutoEncoder原理和L_BFGS優(yōu)化算法實(shí)現(xiàn)手寫數(shù)字識(shí)別目錄TOC\o"1-5"\h\z神經(jīng)網(wǎng)絡(luò)根本概念3概述3神經(jīng)網(wǎng)絡(luò)模型4AutoEncoder原理5反向傳播算法5Softmax回歸7StackedAutoEncoder8微調(diào)過程9SparseAutoEncoder9DenoiseAutoEncoder10L_BFGS算法11根本原理11算法流程16算法收斂性分析:18基于AutoEncoder的手寫數(shù)字識(shí)別18MNIST數(shù)據(jù)庫(kù)18模型練習(xí)19模型測(cè)試19實(shí)驗(yàn)結(jié)果及分析:19AutoEncoder20SparseAutoEncoder20DenoiseAutoEncoder21實(shí)驗(yàn)結(jié)果匯總及分析22參考資料24AutoEncoder實(shí)現(xiàn)手寫數(shù)字識(shí)別1神經(jīng)網(wǎng)絡(luò)根本概念概述神經(jīng)網(wǎng)絡(luò)是一種模仿動(dòng)物神經(jīng)網(wǎng)絡(luò)行為特征,進(jìn)行分布式并行信息處理的算法數(shù)學(xué)模型.這種網(wǎng)絡(luò)依靠系統(tǒng)的復(fù)雜程度,通過調(diào)整內(nèi)部大量節(jié)點(diǎn)之間相互連接的關(guān)系,從而到達(dá)處理信息的目的.神經(jīng)網(wǎng)絡(luò)由多個(gè)神經(jīng)元構(gòu)成,下列圖就是單個(gè)神經(jīng)元的圖1所示:圖i圖i神經(jīng)元模型這個(gè)神經(jīng)元是以Xi,X2,X3以及截距+1為輸入值的運(yùn)算單元,其輸出為3hW,b(x)=f(WTx)=f(£iyiXi+b),其中函數(shù)f()被稱作激活函數(shù).在本次試驗(yàn)中,我們選用sigmoid函數(shù)作為激活函數(shù)f()f(z)=f(z)=1exp(-z)圖2sigmoid函數(shù)圖像神經(jīng)網(wǎng)絡(luò)模型神經(jīng)網(wǎng)絡(luò)就是將許多個(gè)單一的神經(jīng)元聯(lián)結(jié)在一起,這樣,一個(gè)神經(jīng)元的輸出就可以是另一個(gè)神經(jīng)元的輸入.例如,下列圖就是一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò):LayerLayerLaver卜圖3神經(jīng)網(wǎng)絡(luò)示意圖我們用a⑴第l層第i單元的激活值(輸出值)當(dāng)1=1時(shí),a?=x,也就是第i個(gè)輸入值.對(duì)于給定的參數(shù)集合W,b,神經(jīng)網(wǎng)絡(luò)就可以根據(jù)函數(shù)hW,b(x)來計(jì)算輸出結(jié)果.以上述模型為例,計(jì)算步驟如下:a(2)=fWTxw;?x2W1%-H1))a22)=f(w21x1+w22)x2+w23)x3十b11)a32)=f〞3(;11+W3(2)x2+w531)x3+b(1))hw,b(x)=a1(3)=f(W2)a1⑵W221a22)靡匕2)?b⑵)我們用Zi(1)表示第第1層第i單元輸入加權(quán)和(包括偏置),這樣我們對(duì)上式就可以得到一種更加簡(jiǎn)潔的表示法:z(2)=W⑴xb(1)a⑵二f(z(2))z(3)=W⑵a⑵b⑵hw,b(x)=a⑶=f(z(3))上述的計(jì)算步驟叫作前向傳播.給定第1層的激活值a⑴后,第1+1層的激活值a(1書就可以根據(jù)下面步驟計(jì)算得到:(4)z(l1)=W⑴a⑴-b⑴a(l1)=f(z(l1(4)2AutoEncoder原理2.1反向傳播算法自編碼(AutoEncoder)神經(jīng)網(wǎng)絡(luò)是一種無監(jiān)督的學(xué)習(xí)算法,它使用了反向傳播算法,讓目標(biāo)值等于輸入值,例如輸入值為練習(xí)樣本集合{x(1),x⑵,x(3)…},那么我們的輸出值y⑴=x(i).下列圖是一個(gè)自編碼神經(jīng)網(wǎng)絡(luò)的例如:Layer匕圖4單隱層神經(jīng)網(wǎng)絡(luò)自編碼神經(jīng)網(wǎng)絡(luò)的主要參數(shù)是連接權(quán)重W和偏置b,我們嘗試?yán)米跃幋a神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)一個(gè)M,b(x)=x,也就是說我們嘗試逼近一個(gè)恒等函數(shù),從而使得輸出接近于輸入x.假設(shè)我們有一個(gè)固定樣本集{(x⑴,y⑴),…,(x(m),y(m))},它包含m個(gè)樣例.對(duì)于單個(gè)樣例(x,y),其代價(jià)函數(shù)為:12J(W,b;x,y)=2hW,b(x)-y|(5)這是一個(gè)方差代價(jià)函數(shù).給定一個(gè)包含m個(gè)樣例的數(shù)據(jù)集,我們可以定義整體代價(jià)函數(shù)為:

1m

J(W,1m

J(W,b)=、J(W|l_mi』(i)(i)(l)、2,b;x,y)(Wji)(6)l4i4(6)2n」ss1hw,b(x)-y||)+-EEE(w/⑴)22lUi」j」以上公式中的第一項(xiàng)J(W,b)是一個(gè)均方差項(xiàng).第二項(xiàng)是一個(gè)規(guī)那么化項(xiàng)(也叫權(quán)重衰減項(xiàng)),其目的是減小權(quán)重的幅度,預(yù)防過度擬合.我們的目標(biāo)是針對(duì)參數(shù)W和b來求其函數(shù)J(W,b)的最小值.為了求解神經(jīng)網(wǎng)絡(luò),我們將每一個(gè)參數(shù)Wj(l)和bi⑴初始化為一個(gè)很小的、接近于0的隨機(jī)數(shù),之后對(duì)目標(biāo)函數(shù)求最優(yōu)解.梯度下降法中每一次迭代都是根據(jù)如下公式對(duì)參數(shù)W和b進(jìn)行更新:叫⑴叫⑴=Wj(l)-:?二⑴J(W,b):Wj.(.(l).(l).bi—bi--■⑴J(W,b)b其中a是學(xué)習(xí)速率.更新參數(shù)W和b的關(guān)鍵步驟是計(jì)算偏導(dǎo)數(shù).而反向傳播算法是計(jì)算偏導(dǎo)數(shù)的一種有效方法.整體代價(jià)函數(shù)J(W,b)的偏導(dǎo)數(shù)為:11一EJ(11一EJ(W,b)=斤■:Wj.:Wj(l)J(W,b;x⑴,y(i))-Wj⑴:1mE)J(W,b)=mJbi(l)J(W,b;X'y)(8)反向傳播算法的思路是:給定一個(gè)樣例(X,y),我們首先進(jìn)行前向傳導(dǎo)算法,得到L2J3,…的激活值,包括輸出層Ln的輸出值hW,b(x)0之后,針對(duì)第l層的每一個(gè)節(jié)點(diǎn)i,我們計(jì)算出其“殘差〞*(l),該殘差說明了該節(jié)點(diǎn)對(duì)最終輸出值得誤差產(chǎn)證了多少影響.殘差的定義如下:每=^j|hw,b(x)—y『=一(yi—a(ni))f'(zZnl))⑼對(duì)于l=nl-1,n-2,n-3,…,2的各個(gè)層,第l層的第i個(gè)節(jié)點(diǎn)的殘差計(jì)算方法如下:(l)(l).(l1)f(Zi⑴)(10)需要我們計(jì)算的偏導(dǎo)數(shù)就可以寫成下面的形式:-Wi-Wij⑴J(W,b;x,y)=a(jl))(l⑴(11)可J(W,b;x,"i(l1)1.總的來說,利用向量化的表示,反向傳播算法可以表示成以下幾個(gè)步驟:進(jìn)行前饋傳導(dǎo)計(jì)算,利用前向傳導(dǎo)公式,得到L2,L3,…直至輸出層Lnl1.激活值2.2.對(duì)于第n層(輸出層),計(jì)算出殘差:(12).(nl)(nJ(12)、=-(y-a)f(z)3.對(duì)于l=口-1,口-2,n—3,…,2的各個(gè)3.4.、?⑴=(W⑴)「(l1)f(4.、?⑴=(W⑴)「(l1)f(z(l))計(jì)算最終需要的偏導(dǎo)數(shù)值:'、W(l)J(W,b;x,y)=、:(l1)(a(l))T"J(W,b;x,y)=、(l1)5.根據(jù)公式(7)更新權(quán)重參數(shù):W(l)=;W⑴」W(l)J(W,b;x,y)△b⑴=b⑴b(i)J(W,b;x,y)W⑴=w⑴/i1.:W(l)_mb(l)=b(l)->1.-:b(l),m2.2Softmax回歸(13)(14)(15)(16)Softmax回歸模型是logistic回歸模型在多分類問題上的推廣.在logistic回歸中,練習(xí)集由m個(gè)已標(biāo)記的樣本構(gòu)成:々x⑴,y⑴),…,(x(m),y(m))),其中輸入特由于logistic回歸是針對(duì)二分類問題的,因此類標(biāo)記y⑴■沁,1)假設(shè)函數(shù)如下:h.)h.)1exp(-Jx)(17)我們的目的就是練習(xí)模型參數(shù)0,使其能夠最小化代價(jià)函數(shù):1mJC)=-工y(i)loghr(x⑴)(1-y(i))10g(1-hr(x⑴))(18)m|1y而在Softmax回歸中,類標(biāo)簽y可以取k個(gè)不同的值.因此對(duì)于練習(xí)集{(x⑴y⑴),…,(x(m),y(m))},我們有y(i)w{1,2,…,k},所以假設(shè)函數(shù)hQ(x)形式如下:h[(xh[(x(i))p(y(i)=1|x⑴叫Ip(y⑴=2|x(i);8)_1V'Kijx-戶ieRy(i)=k|x(i);8)」.)[&x(i)

f一(19)(20)我們參加(20)我們參加了權(quán)重衰1mKJ(6)=—EE1{y(i)=j}10g

mj^Tx(i)e、、?Kmx(i)

l產(chǎn)1iKn?—、、、、」2jijJ2iTjT(21)其中%%…用k把飄n*是模型參數(shù).Softmax回歸算法的代價(jià)函數(shù)如下:1mk"x(i)j(h)=」工工Hy(i)=j}10ge的⑴

m-l,x其中iC是示性函數(shù).為了限制Softmax回歸在描述對(duì)象時(shí)候出現(xiàn)過擬合現(xiàn)象,kn減項(xiàng)一Z“耳2來修改代價(jià)函數(shù),那么整個(gè)代價(jià)函數(shù)變?yōu)?^2i1j土經(jīng)過這個(gè)權(quán)重衰減后(九>0),代價(jià)函數(shù)就變成了嚴(yán)格的凸函數(shù),這樣就可以保證得到唯一解.此時(shí)的Hessian矩陣變?yōu)榭赡婢仃?并且由于J(9)是凸函數(shù),L-BFGS等算法可以保證收斂到全局最優(yōu)解.2.3StackedAutoEncoder棧式自編碼神經(jīng)網(wǎng)絡(luò)(StackedAutoEncoder是一個(gè)由多層自編碼神經(jīng)網(wǎng)絡(luò)組成的神經(jīng)網(wǎng)絡(luò),其前一層的自編碼神經(jīng)網(wǎng)絡(luò)的輸出作為厚一層自編碼神經(jīng)網(wǎng)絡(luò)的輸入.對(duì)于一個(gè)n層的棧式自編碼神經(jīng)網(wǎng)絡(luò),假定用W(k,1),W(k,2),b(k,1),b(k,2)表示第k個(gè)自編碼神經(jīng)網(wǎng)絡(luò)的W⑴,W⑵,b⑴,b⑵參數(shù),那么該棧式自編碼神經(jīng)網(wǎng)絡(luò)的編碼過程就是,根據(jù)從前向后的順序徐行每一層自編碼神經(jīng)網(wǎng)絡(luò)的編碼步驟:(22)a(l)=f((22)z(l1)=W(l%⑴b(L1)一種比擬好的獲取棧式自編碼神經(jīng)網(wǎng)絡(luò)參數(shù)的方法是采用逐層貪婪練習(xí)法進(jìn)行練習(xí).即利用原始輸入來練習(xí)網(wǎng)絡(luò)的第一層,得到其參數(shù)W(1,1),W(1,2),b(1,1),b(1,2);然后網(wǎng)絡(luò)的第一層將原始輸入轉(zhuǎn)化為由隱層單元激活值組成的向量A,接著把A作為第二層的輸入,繼續(xù)練習(xí)得到第二層的參數(shù)W(2,1),W(2,2),b(2,1),b⑵2),最后對(duì)后面的各層采用同樣的策略練習(xí)參數(shù).2.4微調(diào)過程微調(diào)Gine-tuning)是深度學(xué)習(xí)中的常用策略,可以大幅提神一個(gè)展示自編碼神經(jīng)網(wǎng)絡(luò)的性能表現(xiàn).從更高的視角來講,微調(diào)將棧式自編碼神經(jīng)網(wǎng)絡(luò)的所有層視為一個(gè)模型,網(wǎng)絡(luò)中所有的權(quán)重只都可以被優(yōu)化.在棧式的自編碼神經(jīng)網(wǎng)絡(luò)中,微調(diào)的實(shí)現(xiàn)主要分為以下幾個(gè)步驟:.對(duì)于輸出層(n層),我們使用的是Softmax回歸分類器,該層的殘差為:、-⑺=-'Jf(z(nl))(23)其中qj=eT(I一p),其中I為輸入數(shù)據(jù)對(duì)應(yīng)的類別標(biāo)簽,p為條件概率向量..對(duì)于l=n-1,n-2,n-3;一,2的各個(gè)層,利用公式(13),(14),(15),(16)計(jì)算殘差,更新參數(shù).2.5SparseAutoEncoder稀疏自編碼神經(jīng)網(wǎng)絡(luò)(SparseAutoEncoder)的稀疏性可以被解釋如下.如果當(dāng)神經(jīng)元的輸出接近于1的時(shí)候我們認(rèn)為它是被激活的,而輸出接近于0的時(shí)候認(rèn)為它是被抑制的,那么是的神經(jīng)元大局部的時(shí)候都是被抑制的限制被稱作稀疏性限制.令片=1a2)(x(i))]表示隱層神經(jīng)元j的平均活潑度.我們可以參加

一條限制j=P,其中P是一個(gè)接近于0的稀疏性參數(shù),也就是說該層的所有隱節(jié)點(diǎn)的平均活潑度是P,接近于0的.為了實(shí)現(xiàn)這一限制,我們?cè)谖覀兊膬?yōu)化目標(biāo)函數(shù)中參加一個(gè)額外的懲罰因子,而這一懲罰因子將懲罰那些與P相差較大的?j的情況,從而使得隱層神經(jīng)元的平均活潑度保持在較小的范圍之內(nèi).在本次實(shí)驗(yàn)中,我們選擇相對(duì)嫡來做我們懲罰函數(shù),懲罰因子可以表示為:TOC\o"1-5"\h\zS2s2;1_;'、KL〔:」j〕:710go〔1-:〕log,二〔24〕j4j=?j1-j這一懲罰因子具有如下的性質(zhì),當(dāng)j=P時(shí),KL〔PP?j〕=0,并且隨著P和?oKL懲罰因子的函數(shù)圖5所?。?V**V**B(|tsrjFit圖5KL懲罰因子參加懲罰因子后,總體的代價(jià)函數(shù)就可以表示為:S2(25)Jsparse(W,b)=J(W,b)八KL(:」j(25)2.6DenoiseAutoEncoder當(dāng)采用無監(jiān)督的方法分層預(yù)練習(xí)深度網(wǎng)絡(luò)的權(quán)值時(shí),為了學(xué)習(xí)到較魯棒的特征,可以在網(wǎng)絡(luò)的可視層〔即數(shù)據(jù)的輸入層〕引入隨機(jī)噪聲,這種方法稱為DenoiseAutoEncoder〔簡(jiǎn)稱dAE模型〕.DenoiseAutoEncoder的模型如下:圖6denoiseAutoencoder原理由上圖可知,樣本x根據(jù)qD分布參加隨機(jī)噪聲后變?yōu)閄,在本實(shí)驗(yàn)中,我們參加的噪音是對(duì)原始數(shù)據(jù)隨機(jī)局部清00dAE可以直觀的解釋為:1.dAE有點(diǎn)類似人體的感官系統(tǒng),比方人眼看物體時(shí),如果物體某一小局部被遮住了,人依然能夠?qū)⑵渥R(shí)別出來,2.多模態(tài)信息輸入人體時(shí)(比方聲音,圖像等),少了其中某些模態(tài)的信息有時(shí)影響也不大.3.普通的autoencoder的本質(zhì)是學(xué)習(xí)一個(gè)相等函數(shù),即輸入和重構(gòu)后的輸出相等,這種相等函數(shù)的表示有個(gè)缺點(diǎn)就是當(dāng)測(cè)試樣本和練習(xí)樣本不符合同一分布,即相差較大時(shí),效果不好,明顯,dAE在這方面的處理有所進(jìn)步.L_BFGS算法根本原理機(jī)器學(xué)習(xí)算法中經(jīng)常碰到非線性優(yōu)化問題,如SparseFiltering算法,其主要工作在于求解一個(gè)非線性極小化問題.在具體實(shí)現(xiàn)中,大多調(diào)用的是成熟的軟件包做支撐,其中最常用的一個(gè)算法是L-BFGSoL_BFGS算法是擬牛頓算法中廣泛使用的一種優(yōu)化算法.牛頓算法具有標(biāo)準(zhǔn)形式:xk+=xk-F2f(xk)),^f(xk).擬牛頓法是在牛頓法的根底上開展來的.牛頓法的根本思想是在現(xiàn)有極小值點(diǎn)估計(jì)值的附近對(duì)目標(biāo)函數(shù)進(jìn)行二階泰勒展開,進(jìn)而找到極小點(diǎn)的下一個(gè)估計(jì)值.因而,牛頓法具有二次收斂性;然而,牛頓法要求海森矩陣為正定陣,同時(shí)對(duì)海森矩陣的計(jì)算也意味著很大的計(jì)算代價(jià),包括對(duì)海森矩陣求逆的過程.隨后,擬牛頓算法應(yīng)運(yùn)而生,擬牛頓法屬于梯度法的一種,具有下面形式:xk+=xk+akdk,dk=-D0(xk),其中Dk是正定矩陣.該方法在迭代過程中通過對(duì)迭代方向dk的調(diào)整,使其接近牛頓下降方向.它的特點(diǎn)是:收斂速度快,預(yù)防牛頓法的二次微分計(jì)算.相對(duì)于共腕梯度法,它的缺乏在于,在計(jì)算迭代方向dk的矩陣向量乘法中,需要存儲(chǔ)矩陣Dk.并被證實(shí)在解決有約束、無約束以及大規(guī)模優(yōu)化問題上比牛頓法更有效.擬牛頓算法的根本思想是不通過求偏導(dǎo)而直接構(gòu)造出可近似海森矩陣(或海森矩陣的逆矩陣)的對(duì)稱正定矩陣,在“擬牛頓條件〞下優(yōu)化目標(biāo)函數(shù).不同的擬牛頓算法那么對(duì)應(yīng)不同的構(gòu)造海森矩陣或其逆矩陣的方式.擬牛頓條件:假定在第k次迭代后,使用二次模型對(duì)目標(biāo)函數(shù)f在Xk處進(jìn)行近似,△為求導(dǎo)操作:mk(p)=fkfkTp2pTBkP(26)這里△表示求導(dǎo),皿(0)和色皿(0)分別對(duì)應(yīng)£卜和^口巳為n*n對(duì)稱正定矩陣,并且在每次迭代中會(huì)進(jìn)行更新.對(duì)上式求極值點(diǎn)可得:Pk=-B「:fk(27)那么Pk那么視為下一步迭代的搜索方向,在該方向上進(jìn)行一維線搜索得到步長(zhǎng)ak之后,將會(huì)確定下一步迭代的Xk書取值:Xj=Xk+%Pk(28)緊接著,使用相似的方法,在xk書處對(duì)該目標(biāo)函數(shù)使用二次模型進(jìn)行近似,可以得到:T1TTOC\o"1-5"\h\zmki(p)=fki」fkip萬pBkip(29)接下來將建立Xk點(diǎn)處和Xk+點(diǎn)處的關(guān)系,即上式在xk處和xk韋處的梯度值應(yīng)該和目標(biāo)函數(shù)f一致.因此,可以得到以下的關(guān)系:mki(-:kpk)=fki-Bki:kpk=fk(30)整理可得:fk1=fk=Bk1,kPk(31)令A(yù)fk+—Afk=yk,%Pk=Sk=Xk+—Xk將得到以下關(guān)系式:yk-BkiSk(32)這就是割線方程,描述了目標(biāo)函數(shù)自變量偏移量和梯度變化量之間的關(guān)系,也就是擬牛頓算法需要滿足的條件.其中B“是對(duì)目標(biāo)函數(shù)相應(yīng)的海森矩陣的近似,假定對(duì)海森矩陣的逆矩陣進(jìn)行近似,那么可以得到另一等價(jià)的割線方程:Sk=Dk1yk(33)BFGS算法是通過近似海森矩陣來實(shí)現(xiàn)的,同時(shí)Bk書是對(duì)稱正定矩陣.接下來給出Bk.的構(gòu)造方法.BFGS算法:采用直接法進(jìn)行構(gòu)造,并定義矩陣B?的更新方式:Bk.產(chǎn)Bk+Ek;B0=I(34)為了保證Bk矩陣的對(duì)稱正定特性,對(duì)ABk按以下方式進(jìn)行定義:Bk=:uuT,,vvT(35)將上式和割線方程聯(lián)立可得:yk=BkSk+:uuTSk:vvTSkT.T(36)=BkSk+(:uS)u(:vSjv括號(hào)中表示數(shù)值結(jié)果,并非向量結(jié)果.在這里,假定括號(hào)中數(shù)值分別是和-1;之后,確定口和P的數(shù)值,可得:T.1-uuSk=1=~tuSk:vTSk=Tu:=-1-vSkBkSk+-uuTSk:vvTSk(37)=BkSk+u-v二yk再令BkSk=v,u=yk,并進(jìn)一步得到1a和P的數(shù)值:1a二Tyk最(38)-SkTBkSk最終得出了艮的更新方程:Bk產(chǎn)Bk+*-器:舊(39)

ykSkSkBkSk對(duì)上式應(yīng)用Sherman-Morrison^Woodbury公式將得到該方程的另一表示:BkJT_1TT二(I-;kS<yk)Bk(I—rykSk)-jSkSk1T

ykSk(40)-BkJ=Dk1Dk1-(I->kSkyk)Dk(I-:'kykSk)':kSkSk以上就是BFGS算法的海森矩陣〔或其逆矩陣〕的估計(jì)值的更新方程.L_BFGS算法:L-BFGS算法是在BFGS算法的根底上得到的,由于原始的BFGS算法需要保存n*n的矩陣,該存儲(chǔ)量隨n成平方規(guī)模增長(zhǎng),為了減少存儲(chǔ)量,減小內(nèi)存開銷,適應(yīng)大規(guī)模的優(yōu)化問題,L_BFGS算法應(yīng)運(yùn)而生.L_BFGS算法是對(duì)BFGS算法的近似,其核心思想是不再存儲(chǔ)完整的n*n矩陣,而是僅僅保存m個(gè)最近的n維向量yk和Sk,這樣存儲(chǔ)量就由O〔n2〕降低至O〔m*n〕.與此同時(shí),算法性能也接近原始BFGS算法〔選取適宜的m值,依問題而定〕.緊接著,將給出L_BFGS算法的具體原理.根據(jù)BFGS算法中Dk書的更新方程,可以根據(jù)公式展開得到Dk卅與D.的關(guān)系,如下:Dk1=MTVk」T..V0T)D0M..VkM)(VkTVkJ.MT):0S0s0T(M...Vk」Vk)MTVk」.V2T)"(V2..VkNk)十...MTVk「):SySk」(Vk」Vk)(VkT):k-T(Vk):kSkSkT(41)-1-T=-^,Vk=I-\ykSkykSk很自然的,考慮L_BFGS算法,如果k<=m-1,那么用來計(jì)算D^的公式成立,無需修改;如果k>m-1〔即k>=m〕時(shí),僅僅保存最近的m個(gè)向量yk和m(42(42)(43)個(gè)向量Sk,那么用來計(jì)算D“的公式變?yōu)?Dk1=(VkTVkJ..Vk_m1■)Do(Vk^1...VkJVk)(VkTVkJ..Vk皿2,):k?iSkwSka1T(Vk"...Vk」Vk)?(VjVkJ.VkqJ)外_m2sk_m2sk_m2(Vk_m3..VkM)十...■(VkTVk'T):kNSkNSkNT(Vk」Vk)(VkT):?kjSk1SkJT(Vk)■:kSkSj那么可以將上述兩種情況進(jìn)行綜合,令x=min{m—1,k},那么有:Dk1=(VkTVkJ..Vk」)Do(Vk/...Vk」Vk)(VkVk」...Vk“i)[Sk/Sk&(Vk"...VkM)(VkVk1...Vk_x2)?k_x1Sk_x1Sk_x1(Vk_x2...VkJVk)十....(VjVk—DkNSkg/lVkM)(Vk)「k」Sk3Sk」(Vk):kSkSkT在每步迭彳t中得到Dk后,在xk處建立相應(yīng)的二次模型,根據(jù)極值點(diǎn)條件:Pk=-DkM(44)pk將成為xk處下一步進(jìn)行搜索的方向,根據(jù)JorgeNocedalStephenJ.Wright?NumericalOptimization?書中的介紹,這里給出一個(gè)計(jì)算Dk書Afk的高效的算法:AlgorithmL_BFGStwo-loop-recursionq,』fori=k-1,..k-mq'q-二i%end-forlD0qfori=k-m,...kT「Ry「r—rS(二i-:)end-forreturnr算法流程以上給出了L_BFGS算法的原理和算法流程,這局部將給出在具體優(yōu)化過程中該算法的應(yīng)用.通常,需要將L_BFGS算法和線搜索方向配合起來使用,以到達(dá)不錯(cuò)的效果,其收斂性也能得到一定的保證.L-BFGS可以被用來求解大型的無約束優(yōu)化問題(MachineLearning中的很多問題都可以用其求解,如LogisticRegress等).這里首先給出一種廣泛使用的非精確一維線搜索算法---Wolfe非精確線搜索.非精確線搜索算法是指對(duì)目標(biāo)函數(shù)來說,給出在x點(diǎn)處沿著下降方向d的步長(zhǎng)值,使在x+o(d處的函數(shù)值相比x處的函數(shù)值有一定的下降.而不同的非精確一維線搜索算法通過構(gòu)造不同的測(cè)試條件來到達(dá)使函數(shù)值取得一定下降的目的,本文僅給出滿足(強(qiáng))Wolfe條件的一維非精確線搜索算法.下面給出滿足Wolfe條件的可接受步長(zhǎng)區(qū)間的圖:?ae€cpld>l£?婚"phibk圖7Wolfe條件的可接受步長(zhǎng)區(qū)間的圖f(xk+%Pk)<f(xk)+G%AfkTPk(45)f(xk二kPk)TPk—C2,fkTPk(46)強(qiáng)Wolfe條件:(2)abs(Af(xk+%pk)Tpk)+5砥,pkE0(47)這里條件1用來使xk+%pk處的函數(shù)值有一定的下降值,條件2用來限定xk+%pk處的斜率應(yīng)大于xk處斜率的C2倍;而強(qiáng)Wolfe條件(2)的進(jìn)一步限定了xk+%pk處斜率值,使可接受步長(zhǎng)落在某個(gè)波谷中.當(dāng)然,在該算法具體的實(shí)現(xiàn)中,僅僅有這些是不夠的,當(dāng)每次迭代步長(zhǎng)落在不滿足(強(qiáng))Wolfe條件的地方,需要使用插值算法給出新的步長(zhǎng)值,這樣才能夠到達(dá)滿意的結(jié)果.下面給出Wolfe非精確一維線搜索算法的流程:AlgorithmWolfe_searchinitialize:x,d,G=1.0E-4,C2=0.9old_gtd0=g(x)Td,01d_f0=f(x)aL=0,aU=1.0E8,stepk=0calculate:f=f(xstep*d),gtd=g(xstep*d)TdWolfe1=f(x+step*d)-old_f0-c1*old_gtd0*stepWolfe2=c2*old_gtd0-g(x+step*d)Td(orWolfe2=q*old_gtd0+abs(g(x+step*d)Td))judge:if(Wolfe1<0)if(Wolfe2<0)break;elseaL-stepaU:一aUoutside-insertforstependifaL-aLaU,stepinner-insertforstependifgotocalculate:returnstep現(xiàn)在已經(jīng)介紹了線搜索以及L_BFGS算法的相關(guān)內(nèi)容.下面給出整體算法流程,用來實(shí)現(xiàn)實(shí)際的最優(yōu)化問題.initialize:X0,f(x),k=0loop:while(k<k_max)if(g(xk)::epsilon)break;if(k==0)dk=-g(Xk)elsegetdkviaAlgorithmL_BFGSendget£kviaAlgorithmWolfe_searchXk1林?八*dkk=k1end-whilereturnXk算法收斂性分析:根據(jù)割線方程,Dk書和民守應(yīng)為對(duì)稱正定矩陣,這在yjsk〉.時(shí)成立.當(dāng)目標(biāo)函數(shù)為凸函數(shù),yJa〉.成立;然而對(duì)非凸函數(shù)來說,該不等式不一定成立,但是,如果線搜索算法滿足Wolfe或強(qiáng)Wolfe條件,yjsk>0將成立.止匕外,線搜索算法中初始步長(zhǎng)的選擇也尤為重要.4基于AutoEncoder的手寫數(shù)字識(shí)別MNIST數(shù)據(jù)庫(kù)MNIST數(shù)據(jù)集是由Google實(shí)驗(yàn)室的CorinnaCortes和紐約大學(xué)柯朗研究所的YannLeCun建有一個(gè)手寫數(shù)字?jǐn)?shù)據(jù)庫(kù),練習(xí)庫(kù)有60,000張手寫數(shù)字圖像,測(cè)試庫(kù)有10,000張.每一個(gè)手寫數(shù)字大小為28父28像素.局部手寫數(shù)字如下列圖所示:圖8局部樣本模型練習(xí)在本次實(shí)驗(yàn)中,我們將28M28像素的手寫數(shù)字變換成1父784的列數(shù)據(jù)作為我們模型的輸入X.練習(xí)數(shù)據(jù)個(gè)數(shù)為60000組.訓(xùn)I練目標(biāo)為得到第一層自編碼神經(jīng)網(wǎng)絡(luò)的W1,bi,第二層自編碼神經(jīng)網(wǎng)絡(luò)的W2b,以此類推.Softmax回歸的參數(shù)日.具體操作步驟見第二章.模型測(cè)試我們使用MNIST數(shù)據(jù)集中提供的10000組數(shù)據(jù)對(duì)我們練習(xí)的模型進(jìn)行準(zhǔn)確度測(cè)試.模型準(zhǔn)確率=〔分對(duì)樣本數(shù)〕/〔總樣本數(shù)〕.5實(shí)驗(yàn)結(jié)果及分析:對(duì)于只有一個(gè)隱層的Autoencoder的權(quán)重可視化,以及準(zhǔn)確率,如5.1到5.3所示.總的實(shí)驗(yàn)結(jié)果和參數(shù)詳見表1.5.1AutoEncoder這是最原始的Autoencoder,在練習(xí)時(shí)沒有引入稀疏項(xiàng)和白噪嚴(yán).這個(gè)Autonecoder只有一個(gè)隱層.圖9所示是該隱層的權(quán)值.隱層節(jié)點(diǎn)一共有196個(gè)練習(xí)的具體參數(shù)可查后面的表1.準(zhǔn)確度:0.915W可視化:圖9Autoencoder權(quán)值可視化結(jié)果分析:從圖中可以依稀的看出數(shù)字0至U9,這是由于這是Autoencoder的第一層.Autoencoder雖然是神經(jīng)網(wǎng)絡(luò).但是可以看成是線性的模型,又由于這是第一層的權(quán)值〔總共也就一層〕,所以對(duì)數(shù)據(jù)的抽象程度不高,所以從權(quán)值中根本上能夠看出0到9的數(shù)字.這一點(diǎn)在稀疏Autoencoder中表現(xiàn)的更加明顯.SparseAutoEncoderSparseAutoencode在Autoencoder的根底上引入了稀疏項(xiàng),起到壓縮信息的作用.具體說就是將輸入數(shù)據(jù)用盡量少的神經(jīng)節(jié)點(diǎn)來表示.這樣就會(huì)盡量的保存有用的信息而剔除無用的信息.如果從空間的角度來理解就是將原始數(shù)據(jù)投射到由隱層節(jié)點(diǎn)個(gè)數(shù)個(gè)向量張成的一個(gè)低維度空間里面,同時(shí)要求投射到低維空間后數(shù)據(jù)盡量沿隱層節(jié)點(diǎn)的基向量,也就是權(quán)值向量分布.這樣帶來的好處就是能提升低一步分類的準(zhǔn)確度.準(zhǔn)確度:0.9276W可視化:圖10S圖10SparseAutoencoder權(quán)值可視化勺qT二7./二〕-二?.7a結(jié)果分析:從圖中可以看出,相對(duì)于圖9〔原始Autoencoder〕,圖10的數(shù)字信息更加明顯,而且少了不少的“噪聲〞.原因正如上面所說,引入稀疏項(xiàng)之后,原始數(shù)據(jù)每次激活的神經(jīng)元的數(shù)量較之前少了很多.因此,一些繁雜的信息,比方圖9里面的“噪聲〞,就被去掉了,只留下了真正有用的信息.因此,圖10顯得比擬清楚.而且從實(shí)驗(yàn)結(jié)果上可以看出以SparseAutoencode的根底的分類器的分類精度確實(shí)比根本的Autoencoder的分類精度高.DenoiseAutoEncoder這里的DenoiseAutoencoder跟Autoencoder的練習(xí)程序參數(shù)設(shè)置根本相同,唯一不同的是DenoiseAutoencoder在練習(xí)的時(shí)候參加了噪聲.參加噪聲的目的是為了模擬可能出現(xiàn)的遮擋,模糊,等情況,從而使練習(xí)出來的分類器更加健壯.準(zhǔn)確度:0.9194W可視化:圖11DenoiseAutoencoder權(quán)值可視化結(jié)果分析由于與Autoencoder相比,只有練習(xí)樣本不一樣,由于在練習(xí)時(shí)參加噪聲.加噪聲的規(guī)那么是:每一個(gè)像素點(diǎn)以0.3的概率變?yōu)?o所以,圖11和圖9大體上是一致的,由于練習(xí)數(shù)據(jù)不一樣,所以表到達(dá)權(quán)值上就有一些差異.而且從練習(xí)結(jié)果上看,參加噪聲后使得分類器精度有一定的提升.實(shí)驗(yàn)結(jié)果匯總及分析在表1中,n表示Autoencoder的層數(shù),AccRate表示以Autoencoder為根底的softmax分類器的準(zhǔn)確度,入1表示Autoencoder的權(quán)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論