Stanford UFLDL教程 线性解码器
線性解碼器
Contents[hide]
|
稀疏自編碼重述
稀疏自編碼器包含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)函數的導數。
中英文對照
總結
以上是生活随笔為你收集整理的Stanford UFLDL教程 线性解码器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stanford UFLDL教程 微调多
- 下一篇: Stanford UFLDL教程 卷积特