Deep learning:四十八(Contractive AutoEncoder簡單理解)
Contractive autoencoder是autoencoder的一個變種,其實就是在autoencoder上加入了一個規(guī)則項馁菜,它簡稱CAE(對應(yīng)中文翻譯為茴扁?)豫喧。通常情況下娶视,對權(quán)值進行懲罰后的autoencoder數(shù)學(xué)表達形式為:
這是直接對W的值進行懲罰的逢净,而今天要講的CAE其數(shù)學(xué)表達式同樣非常簡單烤送,如下:
其中的
然后求和纺且,更具體的數(shù)學(xué)表達式為:
關(guān)于雅克比矩陣的介紹可參考雅克比矩陣&行列式——單純的矩陣和算子,關(guān)于F范數(shù)可參考我前面的博文Sparse coding中關(guān)于矩陣的范數(shù)求導(dǎo)中的內(nèi)容稍浆。
有了loss函數(shù)的表達式载碌,采用常見的mini-batch隨機梯度下降法訓(xùn)練即可。
關(guān)于為什么contrative autoencoder效果這么好衅枫?paper中作者解釋了好幾頁嫁艇,好吧,我真沒完全明白弦撩,希望懂的朋友能簡單通俗的介紹下步咪。下面是讀完文章中的一些理解:
好的特征表示大致有2個衡量標(biāo)準(zhǔn):1. 可以很好的重構(gòu)出輸入數(shù)據(jù); 2.對輸入數(shù)據(jù)一定程度下的擾動具有不變形。普通的autoencoder和sparse autoencoder主要是符合第一個標(biāo)準(zhǔn)猾漫。而deniose autoencoder和contractive autoencoder則主要體現(xiàn)在第二個。而作為分類任務(wù)來說感凤,第二個標(biāo)準(zhǔn)顯得更重要静袖。
雅克比矩陣包含數(shù)據(jù)在各種方向上的信息,可以對雅克比矩陣進行奇異值分解捐康,同時畫出奇異值數(shù)目和奇異值的曲線圖,大的奇異值對應(yīng)著學(xué)習(xí)到的局部方向可允許的變化量劳翰,并且曲線越抖越好(這個圖沒看明白生均,所以這里的解釋基本上是直接翻譯原文中某些觀點)。
另一個曲線圖是contractive ratio圖,contractive ratio定義為:原空間中2個樣本直接的距離比上特征空間(指映射后的空間)中對應(yīng)2個樣本點之間的距離。某個點x處局部映射的contraction值是指該點處雅克比矩陣的F范數(shù)耿眉。按照作者的觀點,contractive ration曲線呈上升趨勢的話更好(why稻艰?)归苍,而CAE剛好符合溺忧。
總之Contractive autoencoder主要是抑制訓(xùn)練樣本(處在低維流形曲面上)在所有方向上的擾動歌溉。
CAE的代碼可參考:pylearn2/cA.py
參考資料:
Contractive auto-encoders: Explicit invariance during feature extraction,Salah Rifai骑晶,Pascal Vincent痛垛,Xavier Muller,Xavier Glorot桶蛔,Yoshua Bengio