久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

深度學(xué)習(xí)入門(mén)教程UFLDL學(xué)習(xí)實(shí)驗(yàn)筆記一:稀疏自編碼器

 mscdj 2016-03-16

UFLDL即(unsupervised feature learning & deep learning)。這是斯坦福網(wǎng)站上的一篇經(jīng)典教程,。顧名思義,,你將在這篇這篇文章中學(xué)習(xí)到無(wú)監(jiān)督特征學(xué)習(xí)和深度學(xué)習(xí)的主要觀點(diǎn)。

UFLDL全文出處在這:http://ufldl./wiki/index.php/UFLDL%E6%95%99%E7%A8%8B,,本文為本人原創(chuàng),,參考了UFLDL的教程,是我自己個(gè)人對(duì)于這一系列教程的理解以及自己的實(shí)驗(yàn)結(jié)果,。非盈利性質(zhì)網(wǎng)站轉(zhuǎn)載請(qǐng)?jiān)谖恼麻_(kāi)頭處著名本文作者:77695,,來(lái)源http://www.cnblogs.com/cj695/。盈利性質(zhì)網(wǎng)站轉(zhuǎn)載請(qǐng)與作者聯(lián)系,,聯(lián)系方式在文章后面,。如未聯(lián)系,本人將通過(guò)一切可能且合法的途徑追繳相應(yīng)稿酬,。請(qǐng)?jiān)谵D(zhuǎn)載時(shí)保留此聲明,。

神經(jīng)網(wǎng)絡(luò)

一個(gè)神經(jīng)網(wǎng)絡(luò)由一系列神經(jīng)元組成,一個(gè)神經(jīng)元由一系列參數(shù)x1,,x2,。。。及偏置量+1作為輸入,,將輸入與對(duì)應(yīng)權(quán)值W(與x1,x2,。。,。相乘),,(與1相乘)相乘后求和,并將和放入激活函數(shù),,即可得到該神經(jīng)元的輸出,。我們稱這個(gè)神經(jīng)元的輸入-輸出映射關(guān)系其實(shí)就是一個(gè)邏輯回歸(logistic regression)

image

在這里激活函數(shù)我們用:

image他的導(dǎo)數(shù)是右邊的形式image

這是sigmoid函數(shù)的圖像

image

整個(gè)神經(jīng)元可以用一個(gè)公式表示:

image

神經(jīng)網(wǎng)絡(luò)就是很多個(gè)神經(jīng)元組合在一起,一個(gè)神經(jīng)元的輸出,,也可以是另外一個(gè)神經(jīng)元的輸入,,如下圖:

image

具體請(qǐng)直接查看UFLDL相應(yīng)教程,這里不再贅述,,下文一樣,。

反向傳導(dǎo)算法

一個(gè)神經(jīng)網(wǎng)絡(luò)向前傳導(dǎo),其神經(jīng)元的參數(shù)可以是各種各樣的,,這樣也會(huì)導(dǎo)致各種各樣的借,,而我希望我整個(gè)神經(jīng)網(wǎng)絡(luò)的輸出,是與我預(yù)期的輸出越相近越好,,為了描述相近的程度,,我們計(jì)算神經(jīng)網(wǎng)絡(luò)輸出與預(yù)計(jì)輸出的差值的平方和。這個(gè)和越小,,即輸出與預(yù)期越接近,,我們稱這個(gè)叫做代價(jià)函數(shù)。但使得輸出與預(yù)期接近的W參數(shù)組合有很多,,并不是每一種組合都好,,也不是說(shuō)越接近越好,當(dāng)W參數(shù)太大的時(shí)候,,會(huì)發(fā)生過(guò)擬合,,使得泛化能力不夠,因此我們引入所有W的平方和,,加入到代價(jià)函數(shù)中,,我們稱它叫懲罰項(xiàng)。我們使用梯度下降法,,求得最優(yōu)的W,,b這就是機(jī)器學(xué)習(xí)的整個(gè)過(guò)程。梯度下降中,,其實(shí)就是求得代價(jià)函數(shù)對(duì)W,b的偏導(dǎo)值。在計(jì)算偏導(dǎo)的時(shí)候,,因?yàn)閺?fù)合函數(shù)的求導(dǎo)法則:

image

可以看到,,要求整個(gè)懲罰函數(shù)的導(dǎo)數(shù)首先就要計(jì)算從懲罰函數(shù)開(kāi)始向后求導(dǎo),具體公式這里就不貼了,。

梯度檢驗(yàn)

要檢測(cè)自己反向傳導(dǎo)得到的偏導(dǎo)函數(shù)是否正確,,這里有一種簡(jiǎn)單粗暴的方法,就是梯度檢驗(yàn),,通過(guò)對(duì)某一個(gè)參數(shù)加以及減一個(gè)較小的值的差除以2倍較小的值即可近似算出該點(diǎn)偏導(dǎo)值,,因此可以用來(lái)檢驗(yàn)偏導(dǎo)是否計(jì)算正確。但為什么我們不直接用這個(gè)計(jì)算代替求偏導(dǎo)函數(shù),,因?yàn)樘耍?/p>

imageimage

在這里我們用L-BFGS算法快速計(jì)算偏導(dǎo)數(shù)

自編碼算法與稀疏性

image

使得輸出盡可能與輸入一致我們稱之為自編碼,。比如,若隱藏層神經(jīng)元數(shù)目小于輸入層,,則這個(gè)網(wǎng)絡(luò)就要學(xué)習(xí)怎么去壓縮這些數(shù)據(jù),。使得神經(jīng)元大部分的時(shí)間都是被抑制的限制則被稱作稀疏性限制。其懲罰函數(shù)如下:

image

image

image

可視化自編碼器訓(xùn)練結(jié)果

可以證明,,image時(shí)有單元i有最大激勵(lì),。

實(shí)現(xiàn)

生成數(shù)據(jù)集:即從所有10副512x512的圖片中取8x8的塊,一共取10000塊,。

imageimageimage

這是數(shù)據(jù)集的一些圖片,,可以看到這主要是一些自然圖片。

這里只粘貼所有自己實(shí)現(xiàn)部分的代碼,。

1
2
3
4
5
6
7
8
9
10
[w,h,n]=size(IMAGES);
randx=randi(w-patchsize,1,numpatches);
randy=randi(h-patchsize,1,numpatches);
randIdx=randi(n,1,numpatches);
for i=1 : numpatches
    pc=IMAGES(randx(i):randx(i)+patchsize-1,randy(i):randy(i)+patchsize-1,randIdx(i));
    patches(:,i)=pc(:);
end

生成結(jié)果如下:

image

實(shí)現(xiàn)懲罰函數(shù)以及梯度函數(shù):按照之前的公式計(jì)算,,大家直接看代碼吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[l,n]=size(data);
dataHidden=sigmoid(W1*data+b1*ones(1,n));
dataOut=sigmoid(W2*dataHidden+b2*ones(1,n));
rou=sum(dataHidden,2)/n;
spCost=beta*(sum((sparsityParam*log(sparsityParam*ones(size(rou))./rou)...
    +(1-sparsityParam)*log(((1-sparsityParam)*ones(size(rou)))./(1-rou)))));
xyCost=(sum(sum((dataOut-data).*(dataOut-data))))/2/n;
wCost=(lambda/2)*((sum(sum(W1.*W1))+sum(sum(W2.*W2))));
cost=wCost+xyCost+spCost;
delta3=-(data-dataOut).*dataOut.*(1-dataOut);
spDt=beta*((-sparsityParam*ones(size(rou))./rou)+(((1-sparsityParam)...
    *ones(size(rou)))./(ones(size(rou))-rou)));
delta2=((W2')*delta3+spDt*ones(1,n)).*dataHidden.*(1-dataHidden);
W2grad=(delta3*(dataHidden'))/n+lambda*W2;
W1grad=(delta2*(data'))/n+lambda*W1;
b2grad=delta3*ones(n,1)/n;
b1grad=delta2*ones(n,1)/n;

實(shí)現(xiàn)時(shí)候出了一個(gè)問(wèn)題,,算梯度的時(shí)候少加了lambda*W1,,粗心害死人啊,!

梯度檢驗(yàn):按照公式實(shí)現(xiàn)梯度檢驗(yàn),,檢驗(yàn)實(shí)現(xiàn)的梯度是否正確。

1
2
3
4
5
6
for i=1 :(size(theta,1))
    e = zeros(size(theta));
    e(i)=EPSILON;
    cha=(J(theta+e)-J(theta-e));
    numgrad(i)=cha/(2*EPSILON);
end

看到運(yùn)行結(jié)果

image

只差10^-12數(shù)量級(jí),,說(shuō)明梯度檢驗(yàn)的實(shí)現(xiàn)沒(méi)錯(cuò)

訓(xùn)練以及結(jié)果:

最后運(yùn)行得到結(jié)果如下:

image

可以看到學(xué)習(xí)出來(lái)的結(jié)果基本是圖片相互正交的部分,,相當(dāng)于傅立葉變換中不同頻率正弦波,相當(dāng)于很多正交的基,,這些“基”以一定的權(quán)重相加,,就能夠近似組成任何一個(gè)8x8的圖片塊。

另外值得一提的是,,對(duì)于梯度下降算法,,在這里使用的是L-BFGS算法,,對(duì)于這個(gè)算法,我們不能將它用于商業(yè)用途,,若用與商業(yè)用途的話,,可以使用fminlbfgs函數(shù),他比L-BFGS慢但可用于商業(yè)用途,。

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多