線性解碼器 Contents [hide] 1稀疏自編碼重述 2線性解碼器 3中英文對照 4中文譯者 稀疏自編碼重述
稀疏自編碼器包含3層神經元,分別是輸入層,隱含層以及輸出層。從前面(神經網路)自編碼器描述可知,位於神經網路中的神經元都採用相同的激勵函數。在註解中,我們修改了自編碼器定義,使得某些神經元採用不同的激勵函數。這樣得到的模型更容易應用,而且模型對參數的變化也更為魯棒。
回想一下,輸出層神經元計算公式如下:
其中 a(3) 是輸出. 在自編碼器中, a(3) 近似重構了輸入 x = a(1)。
S 型激勵函數輸出範圍是 [0,1],當 f(z(3)) 採用該激勵函數時,就要對輸入限制或縮放,使其位於[0,1] 範圍中。一些資料集,比如 MNIST,能方便將輸出縮放到 [0,1] 中,但是很難滿足對輸入值的要求。比如, PCA 白化處理的輸入並不滿足[0,1] 範圍要求,也不清楚是否有最好的辦法可以將資料縮放到特定範圍中。
線性解碼器
設定 a(3) = z(3) 可以很簡單的解決上述問題。從形式上來看,就是輸出端使用恒等函數f(z) = z 作為激勵函數,於是有 a(3) = f(z(3)) = z(3)。我們稱該特殊的激勵函數為線性激勵函數 (稱為恒等激勵函數可能更好些)。
需要注意,神經網路中隱含層的神經元依然使用S型(或者tanh)激勵函數。這樣隱含單元的激勵公式為 ,其中 是 S 型函數, x 是輸入,W(1) 和 b(1) 分別是隱單元的權重和偏差項。我們僅在輸出層中使用線性激勵函數。
一個 S 型或 tanh 隱含層以及線性輸出層構成的自編碼器,我們稱為線性解碼器。
在這個線性解碼器模型中,。因為輸出 是隱單元激勵輸出的線性函數,改變W(2) ,可以使輸出值 a(3) 大於 1 或者小於 0。這使得我們可以用實值輸入來訓練稀疏自編碼器,避免預先縮放樣本到給定範圍。
隨著輸出單元的激勵函數的改變,這個輸出單元梯度也相應變化。回顧之前每一個輸出單元誤差項定義為:
其中 y = x 是所期望的輸出, 是自編碼器的輸出, 是激勵函數.因為在輸出層激勵函數為f(z) = z, 這樣 f'(z) = 1,所以上述公式可以簡化為
當然,若使用反向傳播演算法來計算隱含層的誤差項時:
因為隱含層採用一個 S 型(或 tanh)的激勵函數 f,在上述公式中, 依然是 S 型(或 tanh)函數的導數。
中英文對照 線性解碼器 Linear Decoders 稀疏自編碼 Sparse Autoencoder 輸入層 input layer 隱含層 hidden layer 輸出層 output layer 神經元 neuron 神經網路 neural network 自編碼器 autoencoder 激勵函數 activation function 魯棒 robust S型激勵函數 sigmoid activation function tanh激勵函數 tanh function 線性激勵函數 linear activation function 恒等激勵函數 identity activation function 隱單元 hidden unit 權重 weight 偏差項 error term 反向傳播演算法 backpropagation from: http://ufldl.stanford.edu/wiki/index.php/%E7%BA%BF%E6%80%A7%E8%A7%A3%E7%A0%81%E5%99%A8