




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于AutoEncoder原理和L_BFGS優(yōu)化算法實(shí)現(xiàn)手寫數(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基本原理113.2算法流程163.3算法收斂性分析:19基于AutoEncoder的手寫數(shù)字識別19MNIST數(shù)據(jù)庫19模型訓(xùn)練20模型測試20實(shí)驗(yàn)結(jié)果及分析:20AutoEncoder21SparseAutoEncoder21DenoiseAutoEncoder22實(shí)驗(yàn)結(jié)果匯總及分析23參考資料25AutoEncoder實(shí)現(xiàn)手寫數(shù)字識別1神經(jīng)網(wǎng)絡(luò)基本概念概述神經(jīng)網(wǎng)絡(luò)是一種模仿動物神經(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ò)由多個神經(jīng)元構(gòu)成,下圖就是單個神經(jīng)元的圖神經(jīng)網(wǎng)絡(luò)是一種模仿動物神經(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ò)由多個神經(jīng)元構(gòu)成,下圖就是單個神經(jīng)元的圖1所示:圖1神經(jīng)元模型f(z)f(z)二(1)圖2sigmoid函數(shù)圖像這個神經(jīng)元是以x,x,x以及截距+1為輸入值的運(yùn)算單元,其輸出為23h(x)二f(Wtx)二f(Y3Wx+b),其中函數(shù)f(?)被稱作“激活函數(shù)”。在本次試W,bi二ii驗(yàn)中,我們選用sigmoid函數(shù)作為激活函數(shù)f(?)11+exp(-z)神經(jīng)網(wǎng)絡(luò)模型神經(jīng)網(wǎng)絡(luò)就是將許多個單一的神經(jīng)元聯(lián)結(jié)在一起,這樣,一個神經(jīng)元的輸出就可以是另一個神經(jīng)元的輸入。例如,下圖就是一個簡單的神經(jīng)網(wǎng)絡(luò):I2J+1LayerLxLayer神經(jīng)網(wǎng)絡(luò)就是將許多個單一的神經(jīng)元聯(lián)結(jié)在一起,這樣,一個神經(jīng)元的輸出就可以是另一個神經(jīng)元的輸入。例如,下圖就是一個簡單的神經(jīng)網(wǎng)絡(luò):I2J+1LayerLxLayerL;LayerL3圖3神經(jīng)網(wǎng)絡(luò)示意圖我們用a(I)第l層第i單元的激活值(輸出值)。當(dāng)l=1時,a(I)二x,也就是iii第i個輸入值。對于給定的參數(shù)集合W,b,神經(jīng)網(wǎng)絡(luò)就可以按照函數(shù)h(x)來計(jì)W,b算輸出結(jié)果。以上述模型為例,計(jì)算步驟如下:a⑵=f(W(i)x+W(i)x+W(i)x+b(i))TOC\o"1-5"\h\z1111221331a⑵=f(W(1)x+W(1)x+W(1)x+b(1))2112222332a⑵=f(W(1)x+W(1)x+W(1)x+b(1))3113223333h(x)=a⑶=f(W⑵a⑵+W⑵a⑵+W⑵a⑵+b⑵)W,b11111221331我們用z(l)表示第第l層第i單元輸入加權(quán)和(包括偏置),這樣我們對上式i就可以得到一種更加簡潔的表示法:z⑵=W⑴x+b⑴a⑵=f(z⑵)⑶z⑶=W⑵a⑵+b⑵h(x)=a⑶=f(z⑶)W,b上述的計(jì)算步驟叫作前向傳播。給定第l層的激活值a(l)后,第l+1層的激活值a(l+1)就可以按照下面步驟計(jì)算得到:z(l+1)=W(l)a(l)+b(l)a(l+1)=f(z(l+1))
2AutoEncoder原理反向傳播算法自編碼(AutoEncoder)神經(jīng)網(wǎng)絡(luò)是一種無監(jiān)督的學(xué)習(xí)算法,它使用了反向傳播算法,讓目標(biāo)值等于輸入值,例如輸入值為訓(xùn)練樣本集合{x⑴,X(2),x⑶…},則我們的輸出值y(i)=x(i)。下圖是一個自編碼神經(jīng)網(wǎng)絡(luò)的示例:圖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í)一個h(x)=x,也就是說我們嘗試逼近一個恒等函數(shù),從而使得輸W,b出x接近于輸入x。假設(shè)我們有一個固定樣本集{(x(l),y(】)),???,(x(m),y(m))},它包含m個樣例。對于單個樣例(x,y),其代價函數(shù)為:J(W,b;x,y)J(W,b;x,y)二-h2w,b(x)-y|2(5)這是一個方差代價函數(shù)。給定一個包含m個樣例的數(shù)據(jù)集,我們可以定義整體代價函數(shù)為:
J(W,b)=丄近m1i=1hJ(W,b)=丄近m1i=1h(x)-y2)w,bi=1mJ(W,b;x(i),y(i))|+?遲為E(w(I))2I2jil=1i=1j=1-EEE1(w(l))22jil=1i=1j=1(6)以上公式中的第一項(xiàng)J(W,b)是一個均方差項(xiàng)。第二項(xiàng)是一個規(guī)則化項(xiàng)(也叫權(quán)重衰減項(xiàng)),其目的是減小權(quán)重的幅度,防止過度擬合。我們的目標(biāo)是針對參數(shù)W和b來求其函數(shù)J(W,b)的最小值。為了求解神經(jīng)網(wǎng)絡(luò),我們將每一個參數(shù)w(I)和b(I)初始化為一個很小的、接近于0的隨機(jī)數(shù),iji之后對目標(biāo)函數(shù)求最優(yōu)解。梯度下降法中每一次迭代都是按照如下公式對參數(shù)W和b進(jìn)行更新:8W(I)=W(I)-aJ(W,b)(7)ijj8W(i)(7)ij8b(i)=b(i)-aJ(W,b)ii8b(i)i其中a是學(xué)習(xí)速率。更新參數(shù)W和b的關(guān)鍵步驟是計(jì)算偏導(dǎo)數(shù)。而反向傳播算法是計(jì)算偏導(dǎo)數(shù)的一種有效方法。整體代價函數(shù)J(W,b)的偏導(dǎo)數(shù)為:aJ(W,b)=8W(iaJ(W,b)=8W(i)ijaT—J(W,b)=8b(i)iLJ(W,b;x(i),y(i))+-W(i)ijm8W(i)Li=1j丄E$J(W,b;x(i),y(i))m8b(i)i=1i反向傳播算法的思路是:給定一個樣例(x,y),我們首先進(jìn)行前向傳導(dǎo)算法,得到L,L,…的激活值,包括輸出層L的輸出值h(x)。之后,針對第i層的每23?iW,b一個節(jié)點(diǎn)i,我們計(jì)算出其“殘差”5(i),該殘差表明了該節(jié)點(diǎn)對最終輸出值得i誤差產(chǎn)證了多少影響。殘差的定義如下:88Z(88Z(ni)
ihw,b(x)-沖=-(y-a(代))-f'(z(ni))iiz(9)對于i=n-1,n-2,n-3,...,2的各個層,第i層的第i個節(jié)點(diǎn)的殘差計(jì)算方法iii如下:
/、0W(i)5(i+i)f'(z(i))jijJ=/、0W(i)5(i+i)f'(z(i))jijJ=i丿需要我們計(jì)算的偏導(dǎo)數(shù)就可以寫成下面的形式(10)QJ(W,b;x,y)=a(i)5(i+i)QW(i)jiijQJ(W,b;x,y)=5(i+i)Qb(i)ii總的來說,利用向量化的表示,反向傳播算法可以表示成以下幾個步驟:(11)1.進(jìn)行前饋傳導(dǎo)計(jì)算,利用前向傳導(dǎo)公式,得到L,L,…直至輸出層L的叫23激活值。2.對于第n層(輸出層),計(jì)算出殘差:i5(n)=—(y—a(n))?廣(z(n))(12)3.對于i二n—1,n—2,n—3,...,2的各個層iii(l))t5(i+i)).f(z(i))(13)計(jì)算最終需要的偏導(dǎo)數(shù)值:J(W,b;x,y)=5(i+i)(a(i))tw(i)J(W,b;x,y)=5(i+i)b(i)根據(jù)公式(7)更新權(quán)重參數(shù):(14)AW(i)=AW(i)+VJ(W,b;x,y)w(i)Ab(i)=Ab(i)+VJ(W,b;x,y)b(i)1\—AW(i)+九W(i)丄m丿b(i)=b(i)—a—Ab(i)mW(i)=W(i)—a(15)(16)Softmax回歸Softmax回歸模型是logistic回歸模型在多分類問題上的推廣。在logistic回歸中,訓(xùn)練集由m個已標(biāo)記的樣本構(gòu)成:{(x(i),y(i)),…,(x(m),y(m))},其中輸入特征x(i)n+i。由于logistic回歸是針對二分類問題的,因此類標(biāo)記y⑴e{o,i}。
假設(shè)函數(shù)如下:h9(x)=1+exp(-9Tx)假設(shè)函數(shù)如下:我們的目的就是訓(xùn)練模型參數(shù)9,使其能夠最小化代價函數(shù):J(9)=-—£y(i)logh(x(i))+(1-y(i))log(1一h(x(i)))(17)(18)1-i=1(17)(18)而在Softmax回歸中,類標(biāo)簽y可以取k個不同的值。因此對于訓(xùn)練集,y(D),???,(x(m),y(m))},我們有y⑴e式如下:h(X(i)h(X(i))=91e9fx(i)■■£Ke9jx(i)j=1■e9jx(i)p(y(i)=kIx(i);9)p(y(i)=1Ix(i);9)p(y(i)=21x(i);9)(19)其中9,9,...,9訥n+1是模型參數(shù)。12kSoftmax回歸算法的代價函數(shù)如下J(9)J(9)=--m££1{y(i)Jlog嚴(yán)—__£ke9Tx(i)i=1Li=1j=1(20)其中1{}是示性函數(shù)。為了限制Softmax回歸在描述對象時候出現(xiàn)過擬合現(xiàn)象,我們加入了權(quán)重衰減項(xiàng)k£n92來修改代價函數(shù),則整個代價函數(shù)變?yōu)?i=1j=0ijJ(9)J(9)=-丄mU1{y(i)=j}logZjke9fx(i)i=1j=111-J1=1+匹£922ji=1j=1(21)經(jīng)過這個權(quán)重衰減后a>o),代價函數(shù)就變成了嚴(yán)格的凸函數(shù),這樣就可以保證得到唯一解。此時的Hessian矩陣變?yōu)榭赡婢仃?,并且因?yàn)镴(9)是凸函數(shù),L-BFGS等算法可以保證收斂到全局最優(yōu)解。StackedAutoEncoder棧式自編碼神經(jīng)網(wǎng)絡(luò)(StackedAutoEncoder)是一個由多層自編碼神經(jīng)網(wǎng)絡(luò)組成的神經(jīng)網(wǎng)絡(luò),其前一層的自編碼神經(jīng)網(wǎng)絡(luò)的輸出作為厚一層自編碼神經(jīng)網(wǎng)絡(luò)的輸入。對于一個n層的棧式自編碼神經(jīng)網(wǎng)絡(luò),假定用W(k,1),W(k,2),b(k,1),b(k,2)表示第k個自編碼神經(jīng)網(wǎng)絡(luò)的W(1),W(2),b(l),b(2)參數(shù),那么該棧式自編碼神經(jīng)網(wǎng)絡(luò)的編碼過程就是,按照從前向后的順序徐行每一層自編碼神經(jīng)網(wǎng)絡(luò)的編碼步驟:a(()=f(z(l))(22)z((+i)=W((,i)a(()+b((,1)一種比較好的獲取棧式自編碼神經(jīng)網(wǎng)絡(luò)參數(shù)的方法是采用逐層貪婪訓(xùn)練法進(jìn)行訓(xùn)練。即利用原始輸入來訓(xùn)練網(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ùn)練得到第二層的參數(shù)W(2,1),W(2,2),b(2,1),b(2,2),最后對后面的各層采用同樣的策略訓(xùn)練參數(shù)。微調(diào)過程微調(diào)(fine-tuning)是深度學(xué)習(xí)中的常用策略,可以大幅提神一個展示自編碼神經(jīng)網(wǎng)絡(luò)的性能表現(xiàn)。從更高的視角來講,微調(diào)將棧式自編碼神經(jīng)網(wǎng)絡(luò)的所有層視為一個模型,網(wǎng)絡(luò)中所有的權(quán)重只都可以被優(yōu)化。在棧式的自編碼神經(jīng)網(wǎng)絡(luò)中,微調(diào)的實(shí)現(xiàn)主要分為以下幾個步驟:對于輸出層(n層),我們使用的是Softmax回歸分類器,該層的殘差為:(5(n()=J)?f(Z(n())(23)an(其中VJ="(I-P),其中I為輸入數(shù)據(jù)對應(yīng)的類別標(biāo)簽,P為條件概率向量。對于(=n-1,n-2,n-3,...,2的各個層,利用公式(13),(14),(15),((((16)計(jì)算殘差,更新參數(shù)。SparseAutoEncoder稀疏自編碼神經(jīng)網(wǎng)絡(luò)(SparseAutoEncoder)的稀疏性可以被解釋如下。如果當(dāng)神經(jīng)元的輸出接近于1的時候我們認(rèn)為它是被激活的,而輸出接近于0的時候認(rèn)為它是被抑制的,那么是的神經(jīng)元大部分的時候都是被抑制的限制被稱作稀疏性限制。令6=丄「a(2)(x(i))]表示隱層神經(jīng)元j的平均活躍度。我們可以加入jmj一條限制0=p,其中P是一個接近于0的稀疏性參數(shù),也就是說該層的所有隱j節(jié)點(diǎn)的平均活躍度是P,接近于0的。為了實(shí)現(xiàn)這一限制,我們在我們的優(yōu)化目標(biāo)函數(shù)中加入一個額外的懲罰因子,而這一懲罰因子將懲罰那些與P相差較大的P的情況,從而使得隱層神經(jīng)元的平均活躍度保持在較小的范圍之內(nèi)。在本次j實(shí)驗(yàn)中,我們選擇相對熵來做我們懲罰函數(shù),懲罰因子可以表示為:TOC\o"1-5"\h\z無KL(p||p)=無plog2+(1-p"og^^(24)、pl-p丿=ij=1jj這一懲罰因子具有如下的性質(zhì),當(dāng)p=p時,KL(p||p)=0,并且隨著p和jjp。KL懲罰因子的函數(shù)圖5所示:j圖5KL懲罰因子加入懲罰因子后,總體的代價函數(shù)就可以表示為:J(W,b)=J(W,b)+卩£2KL(p||p)(25)sparsejj=1DenoiseAutoEncoder當(dāng)采用無監(jiān)督的方法分層預(yù)訓(xùn)練深度網(wǎng)絡(luò)的權(quán)值時,為了學(xué)習(xí)到較魯棒的特征,可以在網(wǎng)絡(luò)的可視層(即數(shù)據(jù)的輸入層)引入隨機(jī)噪聲,這種方法稱為DenoiseAutoEncoder(簡稱dAE模型)。DenoiseAutoEncoder的模型如下:圖6denoiseAutoencoder原理由上圖可知,樣本x按照qD分布加入隨機(jī)噪聲后變?yōu)閄,在本實(shí)驗(yàn)中,我們加入的噪音是對原始數(shù)據(jù)隨機(jī)部分清0。dAE可以直觀的解釋為:l.dAE有點(diǎn)類似人體的感官系統(tǒng),比如人眼看物體時,如果物體某一小部分被遮住了,人依然能夠?qū)⑵渥R別出來,2.多模態(tài)信息輸入人體時(比如聲音,圖像等),少了其中某些模態(tài)的信息有時影響也不大。3.普通的autoencoder的本質(zhì)是學(xué)習(xí)一個相等函數(shù),即輸入和重構(gòu)后的輸出相等,這種相等函數(shù)的表示有個缺點(diǎn)就是當(dāng)測試樣本和訓(xùn)練樣本不符合同一分布,即相差較大時,效果不好,明顯,dAE在這方面的處理有所進(jìn)步。3L_BFGS算法基本原理機(jī)器學(xué)習(xí)算法中經(jīng)常碰到非線性優(yōu)化問題,如SparseFiltering算法,其主要工作在于求解一個非線性極小化問題。在具體實(shí)現(xiàn)中,大多調(diào)用的是成熟的軟件包做支撐,其中最常用的一個算法是L-BFGS。L_BFGS算法是擬牛頓算法中廣泛使用的一種優(yōu)化算法。牛頓算法具有標(biāo)準(zhǔn)形式:Xk+1二Xk-(V2f(Xk))一1Vf(xk)。擬牛頓法是在牛頓法的基礎(chǔ)上發(fā)展來的。牛頓法的基本思想是在現(xiàn)有極小值點(diǎn)估計(jì)值的附近對目標(biāo)函數(shù)進(jìn)行二階泰勒展開,進(jìn)而找到極小點(diǎn)的下一個估計(jì)值。因而,牛頓法具有二次收斂性;然而,牛頓法要求海森矩陣為正定陣,同時對海森矩陣的計(jì)算也意味著很大的計(jì)算代價,包括對海森矩陣求逆的過程。隨后,擬牛頓算法應(yīng)運(yùn)而生,擬牛頓法屬于梯度法的一種,具有下面形式:Xk+1=Xk+akdk,dk=—DkVf(xk),其中Dk是正定矩陣。該方法在迭代過程中通過對迭代方向dk的調(diào)整,使其接近牛頓下降方向。它的特點(diǎn)是:收斂速度快,避免牛頓法的二次微分計(jì)算。相對于共軛梯度法,它的不足在于,在計(jì)算迭代方向dk的矩陣向量乘法中,需要存儲矩陣Dk。并被證明在解決有約束、無約束以
及大規(guī)模優(yōu)化問題上比牛頓法更有效。擬牛頓算法的基本思想是不通過求偏導(dǎo)而直接構(gòu)造出可近似海森矩陣(或海森矩陣的逆矩陣)的對稱正定矩陣,在“擬牛頓條件”下優(yōu)化目標(biāo)函數(shù)。不同的擬牛頓算法則對應(yīng)不同的構(gòu)造海森矩陣或其逆矩陣的方式。擬牛頓條件:假定在第k次迭代后,使用二次模型對目標(biāo)函數(shù)f在X處進(jìn)行近似,A為求k導(dǎo)操作:1m(p)二f+AfTp+懇pTBp(26)kkk2k這里A表示求導(dǎo),m(0)和Am(0)分別對應(yīng)f和Af。B為n*n對稱正定矩kkkkk陣,并且在每次迭代中會進(jìn)行更新。對上式求極值點(diǎn)可得:p=~B~iAf(27)kkk那么p則視為下一步迭代的搜索方向,在該方向上進(jìn)行一維線搜索得到步k長?之后,將會確定下一步迭代的x取值:kk+1(28)x=x+ap(28)k+1kkk緊接著,使用相似的方法,在X處對該目標(biāo)函數(shù)使用二次模型進(jìn)行近似,可以k+1得到:mk+mk+11(p)二fk+1+爼+iTp+2pTBk+1p(29)接下來將建立X點(diǎn)處和X點(diǎn)處的關(guān)系,即上式在X處和X處的梯度值應(yīng)TOC\o"1-5"\h\zkk+1kk+1該和目標(biāo)函數(shù)f一致。因此,可以得到以下的關(guān)系:Am(-ap)=Af-Bap=Af(30)k+1kkk+1k+1kkk整理可得:Af-Af=Bapk+1kk+1kk(31)令A(yù)f-Af=y,ap=s=X-Xk+1kkkkkk+1k將得到以下關(guān)系式:y二Bskk+1k(32)(38)—(38)—1這就是割線方程,描述了目標(biāo)函數(shù)自變量偏移量和梯度變化量之間的關(guān)系,也就是擬牛頓算法需要滿足的條件。其中B是對目標(biāo)函數(shù)相應(yīng)的海森矩陣的近k+1似,假定對海森矩陣的逆矩陣進(jìn)行近似,則可以得到另一等價的割線方程:s二Dy(33)kk+1kBFGS算法是通過近似海森矩陣來實(shí)現(xiàn)的,同時B是對稱正定矩陣。接下k+1來給出B的構(gòu)造方法。k+1BFGS算法:采用直接法進(jìn)行構(gòu)造,并定義矩陣B的更新方式:k+1B=B+AB;B=Ik+1kk0(34)為了保證B矩陣的對稱正定特性,對AB按以下方式進(jìn)行定義:kkAB=auut+pvvtk將上式和割線方程聯(lián)立可得(35)y=Bs+auuTs+pvvtskkkkk(36)二Bs+(auTs)u+(pvts)vkkkk括號中表示數(shù)值結(jié)果,并非向量結(jié)果。在這里,假定括號中數(shù)值分別是1和-1;之后,確定a和p的數(shù)值,可得:autskpvTsk=1oa=—^-uTsk=—1oP=vTskBs+auuTs+pvvTskkkk(37)=Bs+u—vkk再令Bs=v,u=y,并進(jìn)一步得到a和p的數(shù)值:kkk1a=——yTs
kk(39)(39)最終得出了B的更新方程:口"丄yyTBsstbB=B+—k―k———k—k—kkk+ikytsstbskkkkk對上式應(yīng)用Sherman-Morrison-Woodbury公式將得到該方程的另一表示:B-1=(I-psyt)B-i(I-pyst)+psstk+ikkkkkkkkkk1P=—kyTs(40)kkB-1oDk+1k+1D=(I-psyt)D(I-pyst)+psstk+1kkkkkkkkkk以上就是BFGS算法的海森矩陣(或其逆矩陣)的估計(jì)值的更新方程。L_BFGS算法:L-BFGS算法是在BFGS算法的基礎(chǔ)上得到的,由于原始的BFGS算法需要保存n*n的矩陣,該存儲量隨n成平方規(guī)模增長,為了減少存儲量,減小內(nèi)存開銷,適應(yīng)大規(guī)模的優(yōu)化問題,L_BFGS算法應(yīng)運(yùn)而生。L_BFGS算法是對BFGS算法的近似,其核心思想是不再存儲完整的n*n矩陣,而是僅僅保留m個最近的n維向量y和s,這樣存儲量就由O(n2)降低至O(m*n)。與此同時,算法性kk能也接近原始BFGS算法(選取合適的m值,依問題而定)。緊接著,將給出L_BFGS算法的具體原理。根據(jù)BFGS算法中D的更新方k+1程,可以根據(jù)公式展開得到D與D的關(guān)系,如下:k+10D=(VTVT...VT)D(V...VV)k+1kk-1000k-1k+(VTVT...VT)pssT(V...VV)kk-110001k-1k+(VTVT...VT)pssT(V...VV)kk-121112k-1k+...+(VTVT)pssT(VV)(41)kk-1k-2k-2k-2k-1k+(VT)pssT(V)kk-1k-1k-1k+pssTkkkpkyTpkyTskk,Vk=I-pysTkkk很自然的,考慮L_BFGS算法,如果k<=m-1,那么用來計(jì)算D的公式成k+1立,無需修改;如果k>m-l(即k>=m)時,僅僅保留最近的m個向量y和mk個向量s,則用來計(jì)算D的公式變?yōu)椋篢OC\o"1-5"\h\zkk+1D=(VTVt…Vt)D(V…VV)k+1kk—1k—m+10k—m+1k—1k+(VtVt...VT)pssT(V...VV)kk—1k—m+2k—m+1k—m+1k—m+1k—m+2k—1k+(VTVT...VT)pssT(V...VV)kk—1k—m+3k—m+2k—m+2k—m+2k—m+3k—1k+...(42)+(VTVT)pssT(VV)kk—1k—2k—2k—2k—1k+(VT)pssT(V)kk—1k—1k—1k+pssTkkk那么可以將上述兩種情況進(jìn)行綜合,令x二min{m—1,k},則有:D=(VTVT..VT)D(V..VV)k+1kk—1k—x0k—xk—1kTOC\o"1-5"\h\z+(VTVT...VT)pssT(V...VV)kk—1k—x+1k—xk—xk—xk—x+1k—1k+(VTVT...VT)pssT(V...VV)kk—1k—x+2k—x+1k—x+1k—x+1k—x+2k—1k+...(43)+(VTVT)pssT(VV)kk—1k—2k—2k—2k—1k+(VT)pssT(V)kk—1k—1k—1k+pssTkkk在每步迭代中得到D后,在x處建立相應(yīng)的二次模型,根據(jù)極值點(diǎn)條件:kkP二—D(44)kkkp將成為x處下一步進(jìn)行搜索的方向,根據(jù)JorgeNocedalStephenJ.Wrightkk《NumericalOptimization》書中的介紹,這里給出一個計(jì)算DAf的高效的算k+1k法:AlgorithmL_BFGSAlgorithmL_BFGStwo一loop-recursionq?紂kfori=k一1,…k一majpsTqiiiqJq-ayiiend一forrjDq0fori=k一m,…k一1卩JpyTriirJr+s(a-P)iiend一forreturnr算法流程以上給出了L_BFGS算法的原理和算法流程,這部分將給出在具體優(yōu)化過程中該算法的應(yīng)用。通常,需要將L_BFGS算法和線搜索方向配合起來使用,以達(dá)到不錯的效果,其收斂性也能得到一定的保證。L-BFGS可以被用來求解大型的無約束優(yōu)化問題(MachineLearning中的很多問題都可以用其求解,如LogisticRegress等)。這里首先給出一種廣泛使用的非精確一維線搜索算法---Wolfe非精確線搜索。非精確線搜索算法是指對目標(biāo)函數(shù)來說,給出在x點(diǎn)處沿著下降方向d的步長值,使在x+ad處的函數(shù)值相比x處的函數(shù)值有一定的下降。而不同的非精確一維線搜索算法通過構(gòu)造不同的測試條件來達(dá)到使函數(shù)值取得一定下降的目的,本文僅給出滿足(強(qiáng))Wolfe條件的一維非精確線搜索算法。下面給出滿足Wolfe條件的可接受步長區(qū)間的圖:1申似上甲1+3訂LncofMifficicnr£tdesired/:|「-J---./■'w■■1uc-eepwble〔acceptable圖7Wolfe條件的可接受步長區(qū)間的圖(1)f(x+ap)<f(x)+caAfTpkkkk1kkk(45)(2)Af(x+ap)tp>cAftpkkkk2kk(46)強(qiáng)Wolfe條件:(2)abs(Af(x+ap)tp)+cAftp<0kkkk2kk(47)這里條件1用來使x+ap處的函數(shù)值有一定的下降值,條件2用來限定kkkx+ap處的斜率應(yīng)大于x處斜率的c倍;而強(qiáng)Wolfe條件(2)的進(jìn)一步限定kkkk2了x+ap處斜率值,使可接受步長落在某個波谷中。kkk當(dāng)然,在該算法具體的實(shí)現(xiàn)中,僅僅有這些是不夠的,當(dāng)每次迭代步長落在不滿足(強(qiáng))Wolfe條件的地方,需要使用插值算法給出新的步長值,這樣才能夠達(dá)到滿意的結(jié)果。下面給出Wolfe非精確一維線搜索算法的流程:AlgorithmWolfe_searchinitialize:x,d,c=1.0E-4,c=0.912old_gtd0=g(x)Td,old_f0=f(x)aL=0,aU=1.0E8,stepk=0calculate:f=f(x+step*d),gtd=g(x+step*d)TdWolfel=f(x+step*d)-old_f0-c*old_gtd0*step1Wolfe2=c*old_gtd0-g(x+step*d)Td2(orWolfe2=c*old_gtd0+abs(g(x+step*d)Td))2judge:if(Wolfel<0)if(Wolfe2<0)break;elseaLJstepaUJaUoutside-insertforstependifaLJaLaUJstepinner-insertforstependifgotocalculate:returnstep現(xiàn)在已經(jīng)介紹了線搜索以及L_BFGS算法的相關(guān)內(nèi)容。下面給出整體算法流程,用來實(shí)現(xiàn)實(shí)際的最優(yōu)化問題。initialize:x,f(x),k=00loop:while(k<k_max)if(g(x)<epsilon)kbreak;if(k==0)d=-g(x)
kkelsegetdviaAlgorithmL_BFGSkendgetaviaAlgorithmWolfe_searchkx=x+a*dk+1kkkk=k+1end-whilereturnxk3.3算法收斂性分析:根據(jù)割線方程,D和B應(yīng)為對稱正定矩陣,這在yTS>0時成立。當(dāng)目
k+1k+1kk標(biāo)函數(shù)為凸函數(shù),yTs>0成立;然而對非凸函數(shù)來說,該不等式不一定成立,kk但是,如果線搜索算法滿足Wolfe或強(qiáng)Wolfe條件,yts>0將成立。此外,線kk搜索算法中初始步長的選擇也尤為重要。4基于AutoEncoder的手寫數(shù)字識別MNIST數(shù)據(jù)庫MNIST數(shù)據(jù)集是由Google實(shí)驗(yàn)室的CorinnaCortes和紐約大學(xué)柯朗研究所的YannLeCun建有一個手寫數(shù)字?jǐn)?shù)據(jù)庫,訓(xùn)練庫有60,000張手寫數(shù)字圖像,測試庫有10,000張。每一個手寫數(shù)字大小為28x28像素。部分手寫數(shù)字如下圖所示:圖8部分樣本模型訓(xùn)練在本次實(shí)驗(yàn)中,我們將28x28像素的手寫數(shù)字變換成lx784的列數(shù)據(jù)作為我們模型的輸入x。訓(xùn)練數(shù)據(jù)個數(shù)為60000組。訓(xùn)練目標(biāo)為得到第一層自編碼神經(jīng)網(wǎng)絡(luò)的W,b,第二層自編碼神經(jīng)網(wǎng)絡(luò)的W,b,以此類推°Softmax回歸的參數(shù)0。ll22具體操作步驟見第二章。模型測試我們使用MNIST數(shù)據(jù)集中提供的10000組數(shù)據(jù)對我們訓(xùn)練的模型進(jìn)行準(zhǔn)確度測試。模型準(zhǔn)確率=(分對樣本數(shù))/(總樣本數(shù))。5實(shí)驗(yàn)結(jié)果及分析:對于只有一個隱層的Autoencoder的權(quán)重可視化,以及準(zhǔn)確率,如5.1到5.3所示??偟膶?shí)驗(yàn)結(jié)果和參數(shù)詳見表1.
AutoEncoder這是最原始的Autoencoder,在訓(xùn)練時沒有引入稀疏項(xiàng)和白噪聲。這個Autonecoder只有一個隱層。圖9所示是該隱層的權(quán)值。隱層節(jié)點(diǎn)一共有196個。訓(xùn)練的具體參數(shù)可查后面的表1.準(zhǔn)確度:0.915W可視化:圖9Autoencoder權(quán)值可視化結(jié)果分析:從圖中可以依稀的看出數(shù)字0到9,這是由于這是Autoencoder的第一層。Autoencoder雖然是神經(jīng)網(wǎng)絡(luò)。但是可以看成是線性的模型,又由于這是第一層的權(quán)值(總共也就一層),所以對數(shù)據(jù)的抽象程度不高,所以從權(quán)值中基本上能夠看出0到9的數(shù)字。這一點(diǎn)在稀疏Autoencoder中表現(xiàn)的更加明顯。SparseAutoEncoderSparseAutoencoder在Autoencoder的基礎(chǔ)上引入了稀疏項(xiàng),起到壓縮信息的作用。具體說就是將輸入數(shù)據(jù)用盡量少的神經(jīng)節(jié)點(diǎn)來表示。這樣就會盡量的保留
有用的信息而剔除無用的信息。如果從空間的角度來理解就是將原始數(shù)據(jù)投射到由隱層節(jié)點(diǎn)個數(shù)個向量張成的一個低維度空間里面,同時要求投射到低維空間后數(shù)據(jù)盡量沿隱層節(jié)點(diǎn)的基向量,也就是權(quán)值向量分布。這樣帶來的好處就是能提高下一步分類的準(zhǔn)確度。準(zhǔn)確度:0.9276w可視化:片2*0ETS52/!=72曷弓?El石片2*0ETS52/!=72曷弓?El石0^23a"aj牛■_“zi7?47f■■i0二管7——<sco^VE2y號<2/◎亡2da1SS3577^/■->rG/\3「/JG-CGo£?36圖10SparseAutoencoder權(quán)值可視化結(jié)果分析:從圖中可以看出,相對于圖9(原始Autoencoder),圖10的數(shù)字信息更加明顯,而且少了不少的“噪聲”。原因正如上面所說,引入稀疏項(xiàng)之后,原始數(shù)據(jù)每次激活的神經(jīng)元的數(shù)量較之前少了很多。因此,一些繁雜的信息,比如圖9里面的“噪聲”,就被去掉了,只留下了真正有用的信息。因此,圖10顯得比較清晰。而且從實(shí)驗(yàn)結(jié)果上可以看出以SparseAutoencoder為基礎(chǔ)的分類器的分類精度確實(shí)比基本的Autoencoder的分類精度高。DenoiseAutoEncoder這里的DenoiseAutoencoder跟Autoencoder的訓(xùn)練程序參數(shù)設(shè)置基本相同,唯一不同的是DenoiseAutoencoder在訓(xùn)練的時候加入了噪聲。加入噪聲的目的是為了模擬可能出現(xiàn)的遮擋,模糊,等情況,從而使訓(xùn)練出來的分類器更加健壯。準(zhǔn)確度:0.9194W可視化:圖11DenoiseAutoencoder權(quán)值可視化結(jié)果分析由于與Autoencoder相比,只有訓(xùn)練樣本不一樣,因?yàn)樵谟?xùn)練時加入噪聲。加噪聲的
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件設(shè)計(jì)師考試前景預(yù)測與試題答案
- 數(shù)字電路與邏輯設(shè)計(jì)試題及答案
- 設(shè)計(jì)理念在軟件設(shè)計(jì)師考試中的試題及答案
- 軟件設(shè)計(jì)師考試數(shù)據(jù)結(jié)構(gòu)試題及答案
- 把握2025年軟件設(shè)計(jì)師考試的試題及答案策略
- 深度研究西方政治制度中的利益表達(dá)機(jī)制試題及答案
- 軟件設(shè)計(jì)師考試現(xiàn)狀調(diào)查試題及答案
- 公共政策中的競爭與合作關(guān)系試題及答案
- 教育行業(yè)招生市場數(shù)字化營銷策略與招生團(tuán)隊(duì)建設(shè)研究報告
- 項(xiàng)目管理工具應(yīng)用效果試題及答案
- 肺脹中醫(yī)護(hù)理查房-課件
- 急診臨床思維-課件
- 立德修身誠信為本
- 小石獅【經(jīng)典繪本】
- 艾里遜8000系列變速箱培訓(xùn):《動力傳遞分析》
- 商務(wù)英語寫作實(shí)踐智慧樹知到答案章節(jié)測試2023年中北大學(xué)
- 社會治安動態(tài)視頻監(jiān)控系統(tǒng)工程建設(shè)方案
- 脫硫塔玻璃鱗片膠泥襯里施工組織設(shè)計(jì)
- XB/T 505-2011汽油車排氣凈化催化劑載體
- GB/T 3672.2-2002橡膠制品的公差第2部分:幾何公差
- GB 8076-2008混凝土外加劑
評論
0/150
提交評論