無監(jiān)督學(xué)習(xí)中的兩個(gè)非概率模型:稀疏編碼與自編碼器
「無監(jiān)督學(xué)習(xí)」(Unsupervised Learning)現(xiàn)在已經(jīng)成為深度學(xué)習(xí)領(lǐng)域的熱點(diǎn)。和「有監(jiān)督學(xué)習(xí)」相比,這種方法的最大優(yōu)勢(shì)就在于其無須給系統(tǒng)進(jìn)行明確的標(biāo)注(label)也能夠進(jìn)行學(xué)習(xí)。最近,在德國(guó)的圖賓根,機(jī)器學(xué)習(xí)夏訓(xùn)營(yíng)(Machine Learning Summer School)正在如火如荼地進(jìn)行,其中來自 CMU 的 Ruslan Salakhutdinov 教授就帶來了很多關(guān)于「無監(jiān)督學(xué)習(xí)」的精彩內(nèi)容。今天機(jī)器之心給大家分享的正是其課件中有關(guān)「無監(jiān)督學(xué)習(xí)中的非概率模型」的相關(guān)內(nèi)容,主要介紹了稀疏編碼(Sparse Coding)和自編碼器(Autoencoder),這兩種結(jié)構(gòu)也是「無監(jiān)督學(xué)習(xí)」的基本構(gòu)件。
一、稀疏編碼(Sparse Coding)
1. 稀疏編碼的概念
稀疏編碼最早由 Olshausen 和 Field 于 1996 年提出,用于解釋大腦中的初期視覺處理(比如邊緣檢測(cè))。
目標(biāo):給定一組輸入數(shù)據(jù)向量 { x1,x2,...,xN },去學(xué)習(xí)一組基字典(dictionary of bases):
滿足:
其中 ank 的值大部分都為 0,所以稱為「稀疏」。每一個(gè)數(shù)據(jù)向量都由稀疏線性權(quán)值與基的組合形式來表達(dá)。
2. 稀疏編碼的訓(xùn)練
為輸入圖像片段;
為要學(xué)習(xí)的基字典(dictionary of bases)。
這個(gè)表達(dá)式的第一項(xiàng)為重構(gòu)誤差項(xiàng);第二項(xiàng)為稀疏懲罰項(xiàng)。
交替性優(yōu)化:
(1) 固定基字典,求解激活值 a(這是一個(gè)標(biāo)準(zhǔn)的 Lasso 問題);
(2) 固定激活值 a,優(yōu)化基字典(凸二次規(guī)劃問題——convex QP problem)。
(3) 稀疏編碼的測(cè)試過程
- 輸入為一個(gè)新圖像片段 x* , 和 K 個(gè)可學(xué)習(xí)的基;
- 輸出為一個(gè)圖像片段 x* 的稀疏表達(dá) a(sparse representation)。
[0, 0, ..., 0.8, ..., 0.3 ..., 0.5, ...] 為系數(shù)矩陣,也叫做特征表示(feature representation)。
下圖為應(yīng)用稀疏編碼進(jìn)行圖像分類的相關(guān)實(shí)驗(yàn)結(jié)果,該實(shí)驗(yàn)是在 Caltech101 物體類別數(shù)據(jù)集中完成的,并且用經(jīng)典的 SVM 作為分類算法。
3. 稀疏編碼的相關(guān)解釋
- a 是稀疏,且過完備(over-complete)的表征;
- 編碼函數(shù) a = f(x) 是 x 的隱函數(shù)和非線性函數(shù);
- 而重構(gòu)(解碼)函數(shù) x' = g(a) 是線性且顯性的。
二、自編碼器(Autoencoder)
1. 自編碼器結(jié)構(gòu)
編碼器和解碼器內(nèi)部的詳細(xì)數(shù)據(jù)信息至關(guān)重要;
2. 自編碼器范例
如上圖所示,編碼器的過濾器(filters)為 W,函數(shù)為 Sigmoid 函數(shù),
解碼器的過濾器(filters)為 D , 函數(shù)為線性回歸函數(shù)。
這是一個(gè)擁有 D 個(gè)輸入和 D 個(gè)輸出的自編碼器,并且包括 K 個(gè)隱單元(hidden units), K
我們可以通過使重構(gòu)誤差(reconstruction error)最小化來決定網(wǎng)絡(luò)的參數(shù) W 和 D :
3. 其它自編碼模型
- 如果隱蔽層(hidden layer)和輸出層是線性的,它將會(huì)對(duì)隱單元(hidden units)進(jìn)行學(xué)習(xí),這些隱單元是數(shù)據(jù)的線性方程,并且可以使方差最小化。這 K 個(gè)隱單元將會(huì)像前 K 個(gè)主成分(first k principal components)一樣,覆蓋相同的空間。這些權(quán)重矢量可能不是正交的。
- 對(duì)于非線性隱單元的情況來說,我們會(huì)利用 PCA(Principal Component Analysis)的非線性泛化(nonlinear generalization)來進(jìn)行處理。
- 和限制性玻爾茲曼機(jī)(Restricted Boltzmann Machines)相關(guān)。
預(yù)測(cè)稀疏分解(Predictive Sparse Decomposition):
在訓(xùn)練過程中:
可以看到,這種結(jié)構(gòu)在解碼器部分加入了稀疏懲罰項(xiàng)(詳見以上關(guān)于稀疏編碼的內(nèi)容)。
4. 堆疊式自編碼器(Stacked Autoencoder)
這是一種「貪婪」的分層學(xué)習(xí)。如果我們?nèi)サ艚獯a器部分,并且只使用前饋部分,會(huì)發(fā)現(xiàn)這是一個(gè)標(biāo)準(zhǔn)的類似于卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),參考下圖??梢允褂梅聪騻鞑韺?duì)參數(shù)進(jìn)行調(diào)校。
5. 深度自編碼器結(jié)構(gòu)及其相關(guān)實(shí)驗(yàn)結(jié)果
- 第一行:從測(cè)試數(shù)據(jù)集中隨機(jī)采樣;
- 第二行:用 30 維的自編碼器進(jìn)行重構(gòu)得到的結(jié)果;
- 第三行:用 30 維的 PCA 進(jìn)行重構(gòu)得到的結(jié)果
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)文章,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】