前言:
本次主要是重新復習下Sparse autoencoder基礎知識,並且加入點自己的理解。關於sparse autoencoder在前面的博文Deep learning:八(Sparse Autoencoder)中已有所介紹。
基礎知識:
首先來看看為什么sparse autoencoder能夠學習到輸入數據的特征呢?當使用autoencoder時,隱含層節點的個數會比輸入層小(一般情況下),而autoencoder又要能夠重構輸入數據,說明隱含層節點壓縮了原始數據,既然這個壓縮是有效的,則它就代表了輸入數據(因為輸入數據每個分量值並不是相互獨立的)的一部分特征了。如果對隱含節點加入稀疏性限制(此時隱含層節點的個數一般比輸入層要多),即對輸入的數據而言,其大部分時間都處於抑制狀態,這時候學習到的特征就更有代表性,因為它只對它感興趣的輸入值響應,說明這些輸入值就是我們需要學習的特征。
在前面講的稀疏性中,並不是說對於某一個輸入樣本,隱含層中大部分的節點都處於非抑制狀態(雖然事實上有可能確實是如此),而是說對於所有的輸入樣本,某一個節點對這些輸入的響應大部分都處於非抑制狀態。
此時的稀疏性懲罰值公式如下所示:
其中的變量一般取很小,比如0.05. 而
的計算公式則如下:
把其中的KL散度展開后,其公式如下:
不過在Ng的一節視頻教程http://www.stanford.edu/class/cs294a/handouts.html中,關於稀疏性的一些表達和計算方式稍有不同,它的並不是一次計算所有樣本在本節點i的期望,而是通過每一個樣本來迭代得到,如下面的講解截圖所示:
比較難理解的是,它這里的偏置值b竟然不是由偏導公式來求得的,而是通過稀疏性來求得,有點不解,求解過程如下所示:
參考資料:
Deep learning:八(Sparse Autoencoder)
http://www.stanford.edu/class/cs294a/handouts.html