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






















































