Deep Learning論文筆記之(三)單層非監(jiān)督學習網(wǎng)絡分析
自己平時看了一些論文,但老感覺看完過后就會慢慢的淡忘,某一天重新拾起來的時候又好像沒有看過一樣。所以想習慣地把一些感覺有用的論文中的知識點總結(jié)整理一下,一方面在整理過程中,自己的理解也會更深,另一方面也方便未來自己的勘察。更好的還可以放到博客上面與大家交流。因為基礎有限,所以對論文的一些理解可能不太正確,還望大家不吝指正交流,謝謝。
本文的論文來自:
An Analysis of Single-Layer Networks in Unsupervised Feature Learning, Adam Coates, Honglak Lee, and Andrew Y. Ng. In AISTATS 14, 2011。在其論文的demo_code。不過我還沒讀。
下面是自己對其中的一些知識點的理解:
《An Analysis of Single-Layer Networks in Unsupervised Feature Learning》
最近,很多的研究都聚焦在從無標簽數(shù)據(jù)中學習特征的算法,采用逐漸復雜的非監(jiān)督算法和深度模型在一些基準的數(shù)據(jù)庫中還得到了很好的效果。本文說明了一些簡單的因素,例如模型隱層的節(jié)點數(shù),對要達到高的性能,要比學習算法的選擇或者模型的深度更重要。本文主要是針對一個隱含層的網(wǎng)絡結(jié)構(gòu)進行分析的,分別對比了4種網(wǎng)絡結(jié)構(gòu), sparse auto-encoders、sparse RBMs 、 K-means clustering和Gaussian mixtures。本文還分析了4個影響網(wǎng)絡性能的因素:感受野大小receptive field size、隱層節(jié)點數(shù)(或者要提取的特征數(shù))、卷積步長(stride)和白化whitening。
最后作者得出了下面幾個結(jié)論:
1、網(wǎng)絡中隱含層神經(jīng)元節(jié)點的個數(shù)(需要學習的特征數(shù)目),采集的密度(也就是convolution時的移動步伐,也就是在什么地方計算特征)和感知區(qū)域大小對最終特征提取效果的影響很大,甚至比網(wǎng)絡的層次數(shù),deep learning學習算法本身還要重要。
2、Whitening在預處理過程中還是很有必要的。
3、如果不考慮非監(jiān)督學習算法的選擇的話,whitening、 large numbers of features和small stride都會得到更好的性能。
4、在以上4種實驗算法中,k-means效果竟然最好。因此在最后作者給出結(jié)論時的建議是,盡量使用whitening對數(shù)據(jù)進行預處理,每一層訓練更多的特征數(shù),采用更密集的方法對數(shù)據(jù)進行采樣。
一、概述
很多特征學習系統(tǒng)的一個主要缺點就是他們的復雜度和開銷。另外,還需要調(diào)整很多參數(shù)(hyper-parameters)。比如說學習速率learning rates、動量momentum(好像rbm中需要用到)、稀疏度懲罰系數(shù)sparsity penalties和權值衰減系數(shù)weight decay等。而這些參數(shù)最終的確定需要通過交叉驗證獲得,本身這樣的結(jié)構(gòu)訓練起來所用時間就長,這么多參數(shù)要用交叉驗證來獲取時間就更多了。所以本文得出的結(jié)論用kmeans效果那么好,且無需有這些參數(shù)要考慮。(對于k-means的分析,見“Deep Learning論文筆記之(一)K-means特征學習”)。
二、非監(jiān)督特征學習框架:
1、通過以下步驟去學習一個特征表達:
1)從無便簽的訓練圖像中隨機提取一些小的patches;
2)對這些patches做預處理(每個patch都減去均值,也就是減去直流分量,并且除以標準差,以歸一化。對于圖像來說,分別相當于局部亮度和對比度歸一化。然后還需要經(jīng)過白化);
3)用非監(jiān)督學習算法來學習特征映射,也就是輸入到特征的映射函數(shù)。
2、學習到特征映射函數(shù)后,給定一個有標簽的訓練圖像集,我們用學習到的特征映射函數(shù),對其進行特征提取,然后用來訓練分類器:
1)對一個圖像,用上面學習到的特征來卷積圖像的每一個sub-patches,得到該輸入圖像的特征;
2)將上面得到的卷積特征圖進行pooling,減少特征數(shù),同時得到平移等不變性;
3)用上面得到的特征,和對應的標簽來訓練一個線性分類器,然后在給定新的輸入時,預測器標簽。
三、特征學習:
對數(shù)據(jù)進行預處理后,就可以通過非監(jiān)督學習算法去學習特征了。我們可以把非監(jiān)督學習算法看成一個黑盒子。它接受輸入,然后產(chǎn)生一個輸出。可以表示為一個函數(shù)f:RN->RK,把一個N維的輸入向量x(i)映射為一個K維的特征向量。在這里,我們對比分析了四種不同的非監(jiān)督學習算法:
1)sparse auto-encoders
我們用BP去訓練一個K個隱藏節(jié)點的自動編碼機,代價函數(shù)是重構(gòu)均方誤差,并存在一個懲罰項。主要限制隱藏節(jié)點,使其保持一個低的激活值。算法輸出一個權值矩陣W(KxN維)和一組基B(K維),特征映射函數(shù)為:f(x)=g(Wx+b)。這里g(z)=1/(1+exp(-z))是sigmoid函數(shù),對向量z的每個元素求值。
在這里,存在很多參數(shù)需要調(diào)整,例如權值衰減系數(shù)和目標激活值。針對特定的感受野大小,這些參數(shù)需要通過交叉驗證方法來選擇。
2)sparse restricted Boltzmann machine
RBM是一個無向圖模型,包含K個二值隱層隨機變量。稀疏RBMs可以通過contrastive divergence approximation(對比分歧近似)方法來訓練。其中的稀疏懲罰項和自動編碼機一樣。訓練模型還是輸入權值矩陣W和基b,我們也可以使用和上面的自動編碼機同樣的特征映射函數(shù)。但它的訓練方法和自動編碼機是完全不一樣的。
3)K-means clustering
我們用K-means聚類算法來從輸入數(shù)據(jù)中學習K個聚類中心c(k)。當學習到這K個聚類中心后,我們可以有兩種特征映射f的方法。第一種是標準的1-of-K,屬于硬分配編碼:
這個fk(x)表示樣本x的特征向量f的第k個元素,也就是特征分量。為什么叫硬分配呢,因為一個樣本只能屬于某類。也就是說每個樣本x對應的特征向量里面只有一個1,其他的全是0。K個類有K個中心,樣本x與哪個中心歐式距離最近,其對應的位就是1,其他位全是0,屬于稀疏編碼的極端情況,高稀疏度啊。
第二種是采用非線性映射。屬于軟編碼。
這里zk=||x-c(k)||2,u(z)是向量z的均值。也就是先計算出對應樣本與k個類中心點的平均距離d,然后如果那些樣本與類別中心點的距離大于d的話都設置為0,小于d的則用d與該距離之間的差來表示。這樣基本能夠保證一半以上的特征都變成0了,也是具有稀疏性的,且考慮了更多那些距類別中心距離比較近的值。為什么叫軟分配呢。軟表示這個樣本以一定的概率屬于這個類,它還以一定的概率屬于其他的類,有點模糊聚類的感覺。而硬則表示這個樣本與哪個類中心距離最近,這個樣本就只屬于這個類。與其他類沒有任何關系。
4)Gaussian mixtures
高斯混合模型GMM用K個高斯分布的混合來描述了輸入數(shù)據(jù)的密度分布。GMMs可以通過EM算法來訓練。一般來說需要先運行一次K-means算法來初始化GMM的K個高斯分量。這樣可以避免其陷入較差的局部最小值。這里的特征映射f把每個輸入樣本x映射為一個后驗概率:
∑k是對角協(xié)方差矩陣,Φk是由EM學習得到的每個類的先驗概率。其實這里和上面k-means的軟分配有點像。對每個樣本x都要計算其屬于每一個類別j的概率。然后用這些后驗概率來編碼對應x的特征向量。
四、特征提取和分類
通過上面的步驟,我們就可以得到了將一個輸入patch x(N維)映射到一個新的描述y=f(x)(K維)的函數(shù)f。這時候,我們就可以用這個特征提取器來提取有標簽圖像數(shù)據(jù)的特征來訓練分類器了。
這里的描述到處都是,就不啰嗦了,可以參考UFLDL中的“卷積特征提取”和“池化”。
五、關于白化
對稀疏自動編碼機和RBMs來說,有沒有白化就顯得有點隨意了。當要提取的特征數(shù)較少的時候(隱層節(jié)點數(shù)少),對稀疏RBMs,白化會有點用。但如果特征數(shù)目很多,白化就顯得不那么有用了。但對于聚類的算法來說,白化是一個關鍵的必不可少的預處理步驟,因為聚類算法對數(shù)據(jù)的相關性是盲目的。所以我們需要先通過白化來消去數(shù)據(jù)的相關性再聚類??梢钥闯?span style="font-family:Calibri;">whitening后學習到更多的細節(jié),且whitening后幾種算法都能學到類似gabor濾波器的效果,因此并不一定是deep learning的結(jié)構(gòu)才可以學到這些特性。