Deep Learning论文笔记之(一)K-means特征学习
Deep Learning論文筆記之(一)K-means特征學(xué)習(xí)
zouxy09@qq.com
http://blog.csdn.net/zouxy09
?
???????? 自己平時(shí)看了一些論文,但老感覺(jué)看完過(guò)后就會(huì)慢慢的淡忘,某一天重新拾起來(lái)的時(shí)候又好像沒(méi)有看過(guò)一樣。所以想習(xí)慣地把一些感覺(jué)有用的論文中的知識(shí)點(diǎn)總結(jié)整理一下,一方面在整理過(guò)程中,自己的理解也會(huì)更深,另一方面也方便未來(lái)自己的勘察。更好的還可以放到博客上面與大家交流。因?yàn)榛A(chǔ)有限,所以對(duì)論文的一些理解可能不太正確,還望大家不吝指正交流,謝謝。
?
??????? 本文的論文來(lái)自:
Learning Feature Representations with K-means, Adam Coates and Andrew Y. Ng. In Neural Networks: Tricks of the Trade, Reloaded, Springer LNCS, 2012
???????? 下面是自己對(duì)其中的一些知識(shí)點(diǎn)的理解:
?
《Learning Feature Representations with K-means》
???????? 自從Deep Learning之風(fēng)盛起之時(shí)到現(xiàn)在,江湖上誕生了很多都可以從無(wú)標(biāo)簽數(shù)據(jù)中學(xué)習(xí)到深度的分級(jí)的特征的算法。大部分情況,這些算法都涉及到一個(gè)多層網(wǎng)絡(luò),而訓(xùn)練和調(diào)整這個(gè)網(wǎng)絡(luò)需要很多tricks。最近,我們發(fā)現(xiàn)K-means聚類算法也可以被作為一個(gè)非常快的訓(xùn)練方法。它的優(yōu)點(diǎn)是快!容易實(shí)現(xiàn)!當(dāng)然了,K-means也不是萬(wàn)能神丹,它也存在自身的局限性。在本文中,我們就關(guān)注K-means的方方面面。總結(jié)了最近的K-means算法的效果和介紹使用k-means來(lái)有效地學(xué)習(xí)圖像的特征的一些技巧。
?
一、概述
???????? 非監(jiān)督學(xué)習(xí)的一般流程是:先從一組無(wú)標(biāo)簽數(shù)據(jù)中學(xué)習(xí)特征,然后用學(xué)習(xí)到的特征提取函數(shù)去提取有標(biāo)簽數(shù)據(jù)特征,然后再進(jìn)行分類器的訓(xùn)練和分類。之前說(shuō)到,一般的非監(jiān)督學(xué)習(xí)算法都存在很多hyper-parameters需要調(diào)整。而,最近我們發(fā)現(xiàn)對(duì)于上面同樣的非監(jiān)督學(xué)習(xí)流程中,用K-means聚類算法來(lái)實(shí)現(xiàn)特征學(xué)習(xí),也可以達(dá)到非常好的效果,有時(shí)候還能達(dá)到state-of-the-art的效果。亮瞎了凡人之俗眼。
???????? 托“bag of features ”的福,K-means其實(shí)在特征學(xué)習(xí)領(lǐng)域也已經(jīng)略有名氣。今天我們就不要花時(shí)間迷失在其往日的光芒中了。在這里,我們只關(guān)注,如果要K-means算法在一個(gè)特征學(xué)習(xí)系統(tǒng)中發(fā)揮良好的性能需要考慮哪些因素。這里的特征學(xué)習(xí)系統(tǒng)和其他的Deep Learning算法一樣:直接從原始的輸入(像素灰度值)中學(xué)習(xí)并構(gòu)建多層的分級(jí)的特征。另外,我們還分析了K-means算法與江湖中其他知名的特征學(xué)習(xí)算法的千絲萬(wàn)縷的聯(lián)系(天下武功出少林,哈哈)。
???????? 經(jīng)典的K-means聚類算法通過(guò)最小化數(shù)據(jù)點(diǎn)和最近鄰中心的距離來(lái)尋找各個(gè)類中心。江湖中還有個(gè)別名,叫“矢量量化vector quantization”(這個(gè)在我的博客上也有提到)。我們可以把K-means當(dāng)成是在構(gòu)建一個(gè)字典D?Rnxk,通過(guò)最小化重構(gòu)誤差,一個(gè)數(shù)據(jù)樣本x(i) ?Rn可以通過(guò)這個(gè)字典映射為一個(gè)k維的碼矢量。所以K-means實(shí)際上就是尋找D的一個(gè)過(guò)程:
?????? 這里,s(i)就是一個(gè)與輸入x(i)對(duì)應(yīng)的碼矢量。D(j)是字典D的第j列。K-means畢生的目標(biāo)就是尋找滿足上面這些條件的一個(gè)字典D和每個(gè)樣本x(i)對(duì)應(yīng)的碼矢量s(i)。我們一起來(lái)分析下這些條件。首先,給定字典D和碼矢量s(i),我們需要能很好的重構(gòu)原始的輸入x(i)。數(shù)學(xué)的表達(dá)是最小化x(i)和它的重構(gòu)D s(i)。這個(gè)目標(biāo)函數(shù)的優(yōu)化需要滿足兩個(gè)約束。首先,|| s(i)||0<=1,意味著每個(gè)碼矢量s(i)被約束為最多只有一個(gè)非零元素。所以我們尋找一個(gè)x(i)對(duì)應(yīng)的新的表達(dá),這個(gè)新的表達(dá)不僅需要更好的保留x(i)的信息,還需要盡可能的簡(jiǎn)單。第二個(gè)約束要求字典的每列都是單位長(zhǎng)度,防止字典中的元素或者特征變得任意大或者任意小。否則,我們就可以隨意的放縮D(j)和對(duì)應(yīng)的碼矢量,這樣一點(diǎn)用都木有。
???????? 這個(gè)算法從精神層面與其他學(xué)習(xí)有效編碼的算法很相似,例如sparse coding:
???????? Sparse coding也是優(yōu)化同樣類型的重構(gòu)。但對(duì)于編碼復(fù)雜度的約束是通過(guò)在代價(jià)函數(shù)中增加一個(gè)懲罰項(xiàng)λ|| s(i)||1,以限制s(i)是稀疏的。這個(gè)約束和K-means的差不多,但它允許多于一個(gè)非零值。在保證s(i)簡(jiǎn)單的基礎(chǔ)上,可以更準(zhǔn)確的描述x(i)。
???????? 雖然Sparse coding比K-means性能要好,但是Sparse coding需要對(duì)每個(gè)s(i)重復(fù)的求解一個(gè)凸優(yōu)化問(wèn)題,當(dāng)拓展到大規(guī)模數(shù)據(jù)的時(shí)候,這個(gè)優(yōu)化問(wèn)題是非常昂貴的。但對(duì)于K-means來(lái)說(shuō),對(duì)s(i)的優(yōu)化求解就簡(jiǎn)單很多了:
???????? 這個(gè)求解是很快的,而且給定s求解D也很容易,所以我們可以通過(guò)交互的優(yōu)化D和s(可以了解下我博客上的EM算法的博文)來(lái)快速的訓(xùn)練一個(gè)非常大的字典。另外,K-means還有一個(gè)讓人青睞的地方是,它只有一個(gè)參數(shù)需要調(diào)整,也就是要聚類的中心的個(gè)數(shù)k。
?
二、數(shù)據(jù)、預(yù)處理和初始化
???????? 這里我們采用的是包含很多小的圖像patches的數(shù)據(jù)集,每個(gè)patch是16x16的灰度圖,對(duì)每個(gè)patch樣本我們將其拉成一個(gè)256維的列向量。這些patches可以在無(wú)標(biāo)簽圖像中隨機(jī)的裁剪得到。為了建立一個(gè)“完備complete”的字典(至少有256個(gè)類中心的字典),我們需要保證有足夠的用以訓(xùn)練的patches,這樣每個(gè)聚類才會(huì)包含一定合理數(shù)量的輸入樣本。對(duì)于16x16的灰度patch來(lái)說(shuō),樣本數(shù)m=100,000個(gè)是足夠的。實(shí)際上,訓(xùn)練一個(gè)k-means字典比其他的算法(例如sparse coding)需要的訓(xùn)練樣本個(gè)數(shù)要多,因?yàn)樵?span style="font-family:Calibri">k-means中,一個(gè)樣本數(shù)據(jù)只會(huì)貢獻(xiàn)于一個(gè)聚類的中心,換句話說(shuō)一個(gè)樣本只能屬于一個(gè)類,與其他類就毫無(wú)瓜葛了,該樣本的信息全部?jī)A注給了它的歸宿(對(duì)應(yīng)類的中心)。
?
2.1、預(yù)處理 Pre-processing
???????? 在訓(xùn)練之前,我們需要對(duì)所有的訓(xùn)練樣本patches先進(jìn)行亮度和對(duì)比度的歸一化。具體做法是,對(duì)每個(gè)樣本,我們減去灰度的均值和除以標(biāo)準(zhǔn)差。另外,在除以標(biāo)準(zhǔn)差的時(shí)候,為了避免分母為0和壓制噪聲,我們給標(biāo)準(zhǔn)差增加一個(gè)小的常數(shù)。對(duì)于[0, 255]范圍的灰度圖,給方差加10一般是ok的:
???????? 對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行歸一化后,我們就可以在上面運(yùn)行k-means算法以獲得相應(yīng)的聚類中心了(字典D的每一列),可視化在圖a中,可以看到,k-means趨向于學(xué)習(xí)到低頻的類邊緣的聚類中心。但不幸的是,這樣的特征不會(huì)有比較好的識(shí)別效果,因?yàn)猷徲蛳袼氐南嚓P(guān)性(圖像的低頻變化)會(huì)很強(qiáng)。這樣K-means就會(huì)產(chǎn)生很多高度相關(guān)的聚類中心。而不是分散開(kāi)聚類中心以更均勻的展開(kāi)訓(xùn)練數(shù)據(jù)。所以我們需要先用白化來(lái)去除數(shù)據(jù)的相關(guān)性,以驅(qū)使K-means在正交方向上分配更多的聚類中心。
?????? 圖a是由k-means從沒(méi)有經(jīng)過(guò)白化處理的自然圖像中學(xué)習(xí)到的聚類中心。圖b展示了沒(méi)有和有白化的效果。左邊是沒(méi)有經(jīng)過(guò)白化的,因?yàn)閿?shù)據(jù)存在相關(guān)性,所以聚類中心會(huì)跑偏。右邊是經(jīng)過(guò)白化后的,可以看到聚類中心是更加正交的,這樣學(xué)習(xí)到的特征才會(huì)不一樣。圖c展示的是從經(jīng)過(guò)白化后的圖像patches學(xué)習(xí)到的聚類中心。
???????? 實(shí)現(xiàn)whitening白化一個(gè)比較簡(jiǎn)單的方法是ZCA白化(可以參考UFLDL)。我們先對(duì)數(shù)據(jù)點(diǎn)x的協(xié)方差矩陣進(jìn)行特征值分解cov(x)=VDVT。然后白化后的點(diǎn)可以表示為:
??????? ?zca是一個(gè)很小的常數(shù)。對(duì)于對(duì)比度歸一化后的數(shù)據(jù),對(duì)16x16的patch,可以設(shè)?zca=0.01,對(duì)8x8的patch,可以設(shè)?zca=0.1 。需要注意的一點(diǎn)是,這個(gè)常數(shù)不能太小,如果太小會(huì)加強(qiáng)數(shù)據(jù)的高頻噪聲,會(huì)使特征學(xué)習(xí)更加困難。另外,因?yàn)閿?shù)據(jù)的旋轉(zhuǎn)對(duì)K-means沒(méi)有影響,所以可以使用其他的白化變換方法,例如PCA白化(與ZCA不同只在于其旋轉(zhuǎn)了一個(gè)角度)。
???????? 在白化后的數(shù)據(jù)中運(yùn)行k-means可以得到清晰的邊緣特征。這些特征和sparse coding啊,ICA啊等等方法學(xué)到的初級(jí)特征差不多。如圖c所示。另外,對(duì)于新的數(shù)據(jù),可能需要調(diào)整歸一化的參數(shù)?和白化的參數(shù)?zca,以滿足好的效果(例如,圖像patches具有高對(duì)比度,低噪聲和少低頻波動(dòng))。
?
2.2、初始化 Initialization
???????? 一般的K-means聚類算法存在一個(gè)比較常見(jiàn)的問(wèn)題,就是會(huì)出現(xiàn)空的聚類。通俗的講,就是它聚類后的一個(gè)類里面居然沒(méi)有樣本(接近于沒(méi)有)。那么很明顯,這個(gè)類就一點(diǎn)意義都沒(méi)有,留著反而還會(huì)危害人間。這我們當(dāng)然得做些努力來(lái)避免這種情況的發(fā)生了。那就得找原因了吧。其實(shí)這一定情況下可以認(rèn)為是中心的初始化的不恰當(dāng)導(dǎo)致的。常用的中心初始化方法就是隨機(jī)地從樣本中挑k個(gè)出來(lái)作為k個(gè)初始的聚類中心。但這不是個(gè)明智的選擇。它有可能會(huì)導(dǎo)致圖像趨于稠密聚集某些區(qū)域,因?yàn)槿绻S機(jī)選擇的patches,也就是訓(xùn)練樣本本身就在某個(gè)區(qū)域分布非常密,那么我們隨機(jī)去選擇聚類中心的時(shí)候,就會(huì)出現(xiàn)就在這個(gè)數(shù)據(jù)分布密集的地方被選出了很多的聚類中心(因?yàn)樵瓟?shù)據(jù)分布密集,所以被選中的概率會(huì)大)。這是不好的,因?yàn)楸旧磉@個(gè)密集的區(qū)域,一個(gè)聚類中心才是好的,你硬搞出幾個(gè)聚類中心,好好的隊(duì)伍就會(huì)被強(qiáng)拆了,還搞得其他比較分散的數(shù)據(jù)點(diǎn)找不到歸宿,因?yàn)榫垲愔行碾x它好遙遠(yuǎn),大部分的聚類中心都讓富二代給占有了,社會(huì)資源分配不當(dāng)啊,哈哈。這樣還會(huì)出現(xiàn)一種情況,就是如果樣本分布密集的話,它們都幾乎從屬于一個(gè)聚類中心,那么其他聚類中心就幾乎沒(méi)有樣本屬于它。這樣也不好。所以,一個(gè)比較好的初始化方式就是從一個(gè)正態(tài)分布中隨機(jī)初始化聚類中心,然后歸一化他們到單位長(zhǎng)度。另外,因?yàn)榻?jīng)過(guò)了白化的階段,我們期望我們的數(shù)據(jù)的主要成分已經(jīng)在一定程度上被組織為球面spherical分布了,而在一個(gè)球面上隨機(jī)地選取一些向量結(jié)果就顯得溫柔多了。
???????? 另外,還存在一些啟發(fā)性的方法去改善k-means的這個(gè)問(wèn)題。例如啟發(fā)性得重新初始化空的聚類中心。實(shí)踐中證明,這種方法對(duì)圖像數(shù)據(jù)的效果比較好。當(dāng)空類出現(xiàn)的時(shí)候,我們?cè)匐S機(jī)挑選樣本來(lái)替代這個(gè)空類中心,一般都是足夠有效的。但好像一般也沒(méi)啥必要。事實(shí)上,對(duì)于一個(gè)足夠規(guī)模的實(shí)現(xiàn)來(lái)說(shuō),我們會(huì)訓(xùn)練很多的聚類中心,如果一個(gè)聚類中心包含的數(shù)據(jù)點(diǎn)太少了,我們直接拋棄它就好了,不要這個(gè)聚類中心了,因?yàn)榘硞兊木垲愔行膲蚨?#xff0c;多你一個(gè)不多,少你一個(gè)不少的。
???????? 還有一種改善的方法叫做聚類中心的抑制更新damped updates。它在每次的迭代中,都會(huì)根據(jù)以下方式更新聚類中心:
???????? 需要注意的是,這種形式的抑制并不會(huì)對(duì)“大”的聚類有很大的影響(因?yàn)?span style="font-family:Calibri">XST的第j列會(huì)比Dold的第j列要大得多),它只能防止小的聚類在一次的迭代過(guò)程中被拉得太遠(yuǎn)(就像濾波的方法一樣,新的值不僅受當(dāng)前值的影響,還受歷史值的影響,這樣就會(huì)防止這個(gè)值出現(xiàn)突變。例如a_old=1,新的值為5,那么a_new=0.5*5+0.5*a_old=3,也就是a_new會(huì)跳到3而不是一下子跳到5,當(dāng)然還取決于前面的權(quán)值0.5,看我們更信任新值還是歷史值。但如果新值很大,那就沒(méi)有特別大的效果了。例如新值為99,那么a_new=50,它還是比a_old=1要大多了)。我們將這個(gè)k-means訓(xùn)練算法概括如下:
?
三、與稀疏特征學(xué)習(xí)的比較
???????? 上面我們提到,K-means能像ICA,sparse coding一樣學(xué)習(xí)到方向性的邊緣特征。那我們會(huì)懷疑,這是偶然嗎(因?yàn)檫吘壧R?jiàn)了,所以一般的學(xué)習(xí)模型都可以發(fā)現(xiàn)它們)?!還是說(shuō)這隱含著K-means本身就具有和ICA相似的稀疏分解的能力。因?yàn)槊總€(gè)s(i)只能包含一個(gè)非零元素(相應(yīng)的聚類中心),所以k-means會(huì)嘗試去學(xué)習(xí)一個(gè)可以很好的描述整個(gè)輸入圖像的聚類中心。因此,它也無(wú)法保證一定可以學(xué)到和ICA或者sparse coding學(xué)到的濾波器一樣。這些算法可以學(xué)習(xí)到真正的“分布式”描述,因?yàn)橐粡垐D像可以通過(guò)一個(gè)字典的幾列來(lái)聯(lián)合描述,而不是只通過(guò)一列。盡管如此,k-means在天時(shí)地利人和的時(shí)候依然能發(fā)現(xiàn)數(shù)據(jù)的稀疏投影,雖然作為一個(gè)聚類方法它好像沒(méi)有明確的通過(guò)公式告訴我們它還能做這個(gè)。所以我們看到的結(jié)果也不是幻覺(jué)或者偶然。
???????? 雖然k-means和ICA和sparse coding有著經(jīng)驗(yàn)性的相似,但它有一個(gè)很大的缺點(diǎn):它發(fā)現(xiàn)數(shù)據(jù)稀疏投影方向的能力很大程度上取決于輸入數(shù)據(jù)的維數(shù)和數(shù)量。如果數(shù)據(jù)的維數(shù)增加,我們就需要增加大量的樣本,才能得到好的結(jié)果。這點(diǎn)就比較難伺候了。例如,在實(shí)驗(yàn)中,對(duì)64x64的patch,我們用了500,000個(gè)樣本來(lái)訓(xùn)練k-means,結(jié)果還是很爛。我們只學(xué)習(xí)到了很少的邊緣。在這種情況下,就會(huì)存在很多的接近空數(shù)據(jù)點(diǎn)的聚類,所以就需要非常多的數(shù)據(jù)才能讓k-means發(fā)揮光與熱。所以,這就存在一個(gè)折衷了,是否要采用k-means,就要看我們的數(shù)據(jù)有多少維,我們能提供多少數(shù)據(jù)(一般要達(dá)到相同的結(jié)果,比sparse coding要多很多)。對(duì)于適當(dāng)?shù)木S度(例如100維),使用k-means的訓(xùn)練速度比其他算法快那么多,那么我情愿花點(diǎn)力氣去提供更多的樣本給它。但對(duì)于很高維的數(shù)據(jù),采用其他算法例如sparse coding會(huì)比k-means性能要好,甚至速度也要更快。
?
4、在圖像識(shí)別上的應(yīng)用
???????? 在這里沒(méi)什么好說(shuō)的,k-means就作為一種學(xué)習(xí)特征的方法,取代一般的非監(jiān)督學(xué)習(xí)過(guò)程里面的特征學(xué)習(xí)那塊就好了。可以參考UFLDL中的“卷積特征提取”和“池化”。另外,文中也介紹了一些選擇參數(shù)的方法,很多論文也可以看到,這里也不說(shuō)了。這里比較有趣的一點(diǎn)是,文中說(shuō)到,根據(jù)觀測(cè)的結(jié)果,如果我們的識(shí)別系統(tǒng)設(shè)計(jì)有大量有效的有標(biāo)簽訓(xùn)練數(shù)據(jù)的話,那么選擇一個(gè)簡(jiǎn)單的快速的前向編碼器(特征映射函數(shù))的話,效果都可以挺好。但如果我們的有標(biāo)簽訓(xùn)練數(shù)據(jù)不多,那么采用一個(gè)復(fù)雜的編碼函數(shù)會(huì)更好。例如,在大規(guī)模情況下,采用軟閾值非線性函數(shù):
就可以工作的比較好。其中,ɑ是個(gè)可調(diào)的常數(shù)。相反,復(fù)雜的sigmoid非線性函數(shù)效果就沒(méi)那么好了:
?
5、構(gòu)建深度網(wǎng)絡(luò)
???????? 在上面一個(gè)章節(jié)中,我們是先從一些無(wú)標(biāo)簽數(shù)據(jù)中隨機(jī)提取一些patches,然后用k-means來(lái)學(xué)習(xí)其中的特征,得到一個(gè)字典。然后對(duì)于一個(gè)大的圖像,我們用這個(gè)字典(特征提取器)去卷積圖像的每個(gè)局部感受野,從而提取整幅圖像的特征。然后我們?cè)偻ㄟ^(guò)一個(gè)pooling步驟去對(duì)提取到的特征進(jìn)行絳維。當(dāng)然了,如果我們可以通過(guò)上面這些提取到的特征去學(xué)習(xí)更高層的特征,那就更好了。最簡(jiǎn)單的方法就是,對(duì)無(wú)標(biāo)簽數(shù)據(jù)集X中,我們通過(guò)上面的方法得到pooling后的特征后,然后得到新的數(shù)據(jù)集Z,我們?cè)僭谶@個(gè)數(shù)據(jù)庫(kù)Z中用同樣的特征學(xué)習(xí)過(guò)程去學(xué)習(xí)新的特征。從而得到第二層的特征。但這有個(gè)問(wèn)題,就是這個(gè)Z一般都是非常高維的,所以需要用非常大的特征字典來(lái)學(xué)習(xí)(例如k=10000甚至更多)。但這樣,對(duì)k-means的要求也高了,我們需要提供更多的樣本來(lái)訓(xùn)練。
???????? 該文提出了一種pair-wise “dependency test"的方法來(lái)改善這個(gè)問(wèn)題。我們通過(guò)一個(gè)“能量相關(guān)”來(lái)定義數(shù)據(jù)集Z中兩個(gè)特征zj和zk的依賴性。我們需要在Z的特征表達(dá)之上學(xué)習(xí)更高級(jí)的特征。使用“dependency test",我們可以以一種相對(duì)簡(jiǎn)單的方式來(lái)選擇合理的感受野:我們挑了一個(gè)特征z0,然后使用“dependency test"來(lái)尋找和z0具有很強(qiáng)依賴性的R特征。然后只用這R特征作為k-means算法的輸入。如果我們選取的R足夠小(例如100或者200),那么歸一化和白化過(guò)后,再用k-means來(lái)訓(xùn)練一般都可以達(dá)到好的效果。因?yàn)檩斎氲木S數(shù)很小,所以我們只需要訓(xùn)練一百個(gè)左右的聚類中心,這樣使用少量的訓(xùn)練樣本就可以運(yùn)行k-means了。
???????? 詳細(xì)的算法介紹和效果見(jiàn)原論文。
?
六、總結(jié)
???????? 本文中,我們討論了用k-means來(lái)搭建特征學(xué)習(xí)系統(tǒng)的一些關(guān)鍵點(diǎn),現(xiàn)在總結(jié)如下:
1、需要先對(duì)數(shù)據(jù)進(jìn)行均值和對(duì)比度的歸一化。
2、使用白化來(lái)消去數(shù)據(jù)的相關(guān)性。注意白化參數(shù)的選擇。
3、通過(guò)高斯噪聲和歸一化來(lái)初始化k-means的聚類中心。
4、使用抑制更新來(lái)避免空聚類和增加穩(wěn)定性。
5、注意數(shù)據(jù)的維數(shù)和稀疏的影響。K-means通過(guò)尋找數(shù)據(jù)分布的”heavy-tailed"方向來(lái)找到輸入數(shù)據(jù)的稀疏投影。但如果數(shù)據(jù)沒(méi)有經(jīng)過(guò)適當(dāng)?shù)陌谆?#xff0c;或者數(shù)據(jù)維數(shù)太高了,或者存在無(wú)效的數(shù)據(jù),那么效果往往是不好的。
6、對(duì)于高維數(shù)據(jù),k-means需要增加大量的樣本來(lái)能得到好的效果。
7、一些外在的參數(shù)(例如pooling,編碼方法的選擇等等)對(duì)于系統(tǒng)性能的影響比學(xué)習(xí)算法本身要大。所以最好先化時(shí)間和成本在通過(guò)更多的交叉檢驗(yàn)的方法來(lái)挑選好的參數(shù)比花更多的成本在學(xué)習(xí)算法上要明智的多。
8、對(duì)于圖像識(shí)別來(lái)說(shuō),更多的聚類中心往往是有幫助的。當(dāng)然,前提是我們要有足夠的訓(xùn)練樣本。
9、當(dāng)有標(biāo)簽數(shù)據(jù)多的時(shí)候,采用一個(gè)簡(jiǎn)單的編碼器。如果標(biāo)簽數(shù)據(jù)有限(例如每類只有百來(lái)個(gè)訓(xùn)練樣本),那么采用一個(gè)復(fù)雜的編碼器會(huì)更好。
10、盡可能地使用局部感受野。K-means是否成功,其瓶頸在于輸入數(shù)據(jù)的維數(shù)。越低越好。如果無(wú)法手動(dòng)的選擇好的局部感受野,那么嘗試去通過(guò)一個(gè)自動(dòng)的依賴性測(cè)試dependency test來(lái)幫助從數(shù)據(jù)中挑選出一組低維的數(shù)據(jù)。這對(duì)于深度網(wǎng)絡(luò)來(lái)說(shuō)是很有必要的。
總結(jié)
以上是生活随笔為你收集整理的Deep Learning论文笔记之(一)K-means特征学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Hadoop教程(五):Flume、Sq
- 下一篇: Deep Learning论文笔记之(二