稀疏自編碼器的學習結構:
稀疏自編碼器Ⅰ:
神經網絡
反向傳導算法
梯度檢驗與高級優化
稀疏自編碼器Ⅱ:
自編碼算法與稀疏性
可視化自編碼器訓練結果
Exercise: Sparse Autoencoder
稀疏自編碼器Ⅰ這部分先簡單講述神經網絡的部分,它和稀疏自編碼器關系很大。
神經網絡
基本概念:
Topics: connection weights, bias, activation function
神經元(運算單元):連接關系,輸入與權值
生物神經元:Synapse, axon, dendrite
激活函數(映射關系): sigmoid, tanh, linear activation, rectified linear, softmax …
以及激活函數的導數: g(a)=a, g'(a)=1;
g(a) = sigm(a)=1/1+exp(-a), g'(a)=g(a)(1-g(a));
g(a) = tanh(a)=exp(a)-exp(-a)/exp(a)+exp(-a) =exp(2a)-1/exp(2a)+1, g'(a)=1-g(a)^2

Topics: capacity, decision boundary of neuron
single neuron can solve linearly separable problems,do binary classification
Can't solve non linearly separable problems...
神經網絡模型
神經網絡就是將許多個單一"神經元"聯結在一起。
有輸入層,隱藏層(可多層),輸出層。
Topics: CAPACITY OF NEURAL NETWORK
Universal approximation theorem (Hornik, 1991):
‣ ''a single hidden layer neural network with a linear output unit can approximate any continuous function arbitrarily well, given enough hidden units''
只要隱含層單元個數足夠多,就一個隱藏層的神經網絡就能近似表示任何復雜連續函數。這個定理至關重要!
但是這不代表就能找到一個好的算法去找到合適的參數。
這就是神經網絡之前研究蕭條的原因之一,另一個曾經出現過的原因是一個神經元不能處理非線性可分的分類任務,如實現異或邏輯。
Topics: multilayer neural network
一層不夠好,那就多層,甚至現如今火的深度網絡。也是有生物理論背景的(visual cortex),也有些方法來訓練網絡,調整參數的。以后一邊學一邊總結。
forward propagation 前向傳播

總結為前一層是后一層的輸入,但注意中間層的激活函數和輸出層的激活函數可能不同。也是forward propagation 前向傳播的流程。
Topics: empirical risk minimization, regularization
最后,從機器學習中的監督學習角度來說,假設我們有訓練樣本集(Xi,Yi ),那么神經網絡算法能夠提供一種復雜且非線性的假設模型H(X) ,它具有參數W, b,可以以此參數來擬合我們的數據。
即Empirical risk minimization(期望風險/損失最小化)
‣ framework to design learning algorithms

最終學習問題轉化為最優化問題。優化方法有許多。
這里介紹常用的一種方法:隨機梯度下降法,stochastic gradient descent (SGD),注意下圖用的是stochastic隨機(單個each),而ufldl老教程用的是batch批量梯度下降法來訓練神經網絡,當然還可以有min-batch(部分)。且ufldl實驗中使用了L-BFGS optimization algorithm的函數包來進行優化。L-BFGS is a limited-memory quasi-Newton code for unconstrained optimization.

上圖的算法邏輯清晰,但是細節實現還有很多,比如:LOSS FUNCTION,GRADIENT COMPUTATION,等,如下圖

其中細節太多,下面先只學習反向傳播算法(backpropagation algorithm),它是求梯度(偏導數)過程中的一種重要方法。
反向傳播算法

對於單個樣例代價函數為:

m個樣例的數據集整體代價函數為:

注:權重衰減是作用於 W而不是b 。
梯度下降法
梯度下降法中每一次迭代都按照如下公式對參數W 和 b進行更新:

以上其實是批量梯度下降法的迭代框架。其中

反向傳播
而反向傳播算法是用來計算上述的偏導函數:

因為,

而BP求殘差(誤差)
注意:做反向傳播算法之前要先做前向傳播算法。以下是BP思想及其求殘差的實現方式。

反向傳播算法可表示為以下幾個步驟:

梯度下降算法全面總結
實現批量梯度下降法中的一次迭代:

現在,我們可以重復梯度下降法的迭代步驟來減小代價函數J(W,b) 的值,進而求解我們的神經網絡。
題外話:就上圖所述,其實只是個框架,具體很多細節還是有很多需要注意的。比如,參數的初始化問題,規則項中也有很大的文章可以做(這里用的是L2,那L1呢,功能和含義是不一樣的,等等)。以外還有模型選擇,交叉驗證等工作,限於這章主題和篇幅,以后另加學習和總結。
梯度檢驗與高級優化
就簡單總結下好了,不要整多,要化繁為簡。

聲明:
不要將本博客用作為商業目的,並且本人博客使用的內容僅僅作為個人學習,其中包括引用的或沒找到出處而未引用的內容。
轉載請注明,本文地址:http://www.cnblogs.com/JayZen/p/4119061.html
參考:
UFLDL教程
Hugo Larochelle nn course
