Autoencoder

autoencoder的目的在于訓練一個神經網絡,用于信號降維,同時降維之后的信號能夠很好地重建原信號。如下圖所示:

自編碼器Autoencoder

第一層L1表示輸入信號,它是一個6維的向量。第二層L2得到的3維的信號,就是降維后的信號,也就是編碼之后的信號,我們把它表示為a=(a1,a2,a3)。第三層L3輸出的是6維信號,表示重建信號。第一層和第二層的+1表示偏置。整個autoencoder其實就是一個人工神經網絡,它的輸出和輸入近似相等,中間為降維后的編碼信號。各層信號之間滿足如下關系:

![][auto]

W1,W2分別為第一層和第二層的權值矩陣,b1,b2為偏置。f和h表示非線性激活函數。\hat{x}為重建信號,應該使重建誤差盡量小。除此之外,我們希望編碼信號a是稀疏的。為了達到這一目的,我們可以使a的平均值盡量小。假設a_i的平均值為p_i(i=1,2,3),我們希望它接近一個常數p0(p0通常很小,比如0.05)。要達到上述目的,我們通過最小化下面的目標函數實現:

上式稱為KL divergence,是用來衡量兩個隨機分布的相近程度的。如果某個隨機分布的均值為p0,而我們令a_i的分布與這個隨機分布盡量接近,那么a_i的平均值也會接近p0,從而達到稀疏的目的。再加上重建誤差小這一約束條件,則整個autoencoder的目標函數為:

用梯度下降法迭代求解網絡參數。

參考資料
[1] http://ufldl.stanford.edu/tutorial/unsupervised/Autoencoders/

[auto]: http://latex.codecogs.com/svg.latex?\left{\begin{array}{ll}a&=f(W{(1)}x+b{(1)})\\hat{x}&=h(W{(2)}a+b{(2)})\end{array}\right.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容