無監督學習(unsurpervised learning)是深度學習的基礎,也是大數據時代科學家們用來處理數據挖掘的主要工具。個人理解的話就是數據太多,而人們不可能給每個數據樣本加標簽吧,所以才有了無監督學習。當然用的最多的是用無監督學習算法訓練參數,然后用一部分加了標簽的數據測試。這種方法叫半監督學習(semi-unsurpervised)。最近看的幾個深度學習算法是:稀疏自編碼(sparse auto-encoder)、稀疏限制玻爾茲曼機器(sparse RBM)、K-means 聚類和高斯混合模型。根據論文An Analysis of Single-Layer Networks in Unsupervised Feature Learning的實驗結果,K-means聚類算法是准確率最高,而且不需要超參數(hyper-parameter)。
稀疏自編碼(sparse auto-encoder)
提到自編碼,就必須了解BP神經網絡。而稀疏自編碼是在自編碼基礎上加入了對隱藏單元活性(activition)的限制:即稀疏性參數ρ,通常是一個接近於0的較小值(比如ρ=0.05)。如果機器學習的基礎比較薄弱的話,建議先看Andrew Ng 老師講授的《機器學習》。
BP神經網絡,是使用前向傳播(forward propagation)、后向傳播(backward propagation)來訓練參數。這里給出前向傳播和后向傳播的公式,具體細節見參考資料:
前向傳播(向量表示法):
其中,f(x)稱為激活函數(activation function).可以或者激活函數
sigmoid函數:
取值范圍[0,1].它的導數就是
雙曲正切函數:
取值范圍[-1,1]。它的導數是
(激活函數的導數在后向傳播中會經常用到)
后向傳播:
前向傳播中,需要用到的參數W和b,是我們要訓練的參數。我們可以利用批量梯度下降的方法求得(這部分需要熟悉機器學習中梯度下降部分)。給定一個包含m個樣例的數據集,我們可以定義整體代價函數為:
其中,第一項中的
是一個均方差項;第二項則是一個正規化項,其目的是減少權值的幅度,防止過度擬合。
於是就有了梯度下降法中每一次迭代對W和b的更新:
其中α是學習速率。而關鍵步驟則是計算偏導數~這個,就是我們要講的后向傳播算法了。
整體代價函數的的偏導數:
現在對其分析可以知道::
於是,后向傳播算法就是在說明針對第 層的每一個節點
,我們計算出其“殘差”
。
天才的科學家們提出了如下的計算過程:
- 進行前饋傳導計算,利用前向傳導公式,得到
直到輸出層
的激活值。
2.對於第 層(輸出層)的每個輸出單元
,我們根據以下公式計算殘差:
-
-
3.對
的各個層,第
層的第
個節點的殘差計算方法如下:
-
-
4.計算我們需要的偏導數,計算方法如下:
最后,我們將對梯度下降算法做個全面總結。在下面的偽代碼中, 是一個與矩陣
維度相同的矩陣,
是一個與
維度相同的向量。注意這里“
”是一個矩陣,而不是“
與
相乘”。下面,我們實現批量梯度下降法中的一次迭代:
- 對於所有
,令
,
(設置為全零矩陣或全零向量)
- 對於
到
,
- 使用反向傳播算法計算
和
。
- 計算
。
- 計算
。
- 使用反向傳播算法計算
- 更新權重參數:
-
於乎~就這樣了。。。
下面就好辦了,對於自編碼,無非就是嘗試學習一個 的函數。而稀疏自編碼則是給隱藏神經元加入稀疏性限制。
吶:
表示隱藏神經元j的平均活躍度,而限制則是 是稀疏性參數,通常是一個接近於0的較小的值(比如
)。
於是有了懲罰因子:
等於
這是相對熵的公式表示形式,意義在於當 時
。相對熵的三條結論:
1.對於兩個完全相同的函數,它們的相對熵等於0.
2.相對熵越大,兩個函數差異越大;反之,相對熵越小,差異越小。
3.對於概率分布或者概率密度分布,如果取值均大於零,相對熵可以度量兩個隨機分布的差異性。
(引用吳軍老師《數學之美》中的結論)。
所以,稀疏自編碼的總體代價函數就是:
而實際與后向傳播不同的地方就是:
現在我們將其換成
-
- 嗯,就此算是結束了對稀疏自編碼的介紹。如果對一些概念不懂的話,請先了解Andrew Ng老師講解的《機器學習課程》。





參考資料:
1,斯坦福大學關於深度學習的網站(其實你只要看這個,稀疏自編碼你就明白了,我的基本算是copy這的)
http://deeplearning.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B
2,Andrew Ng老師講解的《機器學習課程》
http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=MachineLearning