Neural-Networks
神經網絡,Lasso 正則化
如何在神經網絡上實現套索正則化或彈性網絡?(特別是前饋)。我知道這個問題的封閉式解決方案不存在,它們是如何實現的?如何計算梯度?
注意,我熟悉這兩個程序以及它們完成的工作,我要問的是如何實現它們,如何制定漸變。
你可以看看稀疏自動編碼器,它有時會對神經激活施加 L1 懲罰,從優化的角度來看,它類似於 Lasso(對權重的 L1 懲罰)。這是一個 Theano實現。UFLDL教程提供了一種替代方法:
這個目標函數提出了最後一個問題——L1 範數在 0 處不可微,因此對基於梯度的方法提出了問題。雖然可以使用其他基於非梯度下降的方法來解決該問題,但我們將使用允許我們使用梯度下降的近似值來“平滑”L1 範數。為了“平滑” L1 範數,我們使用代替,其中 ε 是一個“平滑參數”,也可以解釋為一種“稀疏參數”(要看到這一點,請觀察當 ε 與 x 相比較大時,x + ε 以 ε 為主,並取平方根產量大約).
所以你可以使用平滑近似來遵循他們的方法,但你也可以使用精確的梯度,它在 0 處不連續,但有時這可能不是問題。例如,流行的 ReLU 神經元也有一個在 0 處不連續的梯度,但對於大多數應用程序來說這不是問題。
此外,您可以查看極限學習機 (ELM),它們是 MLP,僅學習最終層的權重並使用隨機隱藏層權重。這看起來很奇怪,但它可以在非常快的時間內達到合理的結果(見右圖)。由於訓練 ELM 的優化問題只是線性回歸,因此您可以為此使用任何 Lasso 工具。