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