關於weight decay

weight decay的作用主要是令神經網絡中的權重變小(趨於0),以防止過擬合
y=iwixiy=\sum_{i}{w_ix_i},則因噪聲的存在,可能會令其中某幾個ww偏大,導致無法正確擬合正常輸入
weight decay的公式爲:

C=C0+λ2niwi2C=C_0+\frac{\lambda}{2n}\sum_i{w_i^2}

Cwk=C0wk+λwkn\frac{\partial{C}}{\partial{w_k}}=\frac{\partial{C_0}}{\partial{w_k}}+\frac{\lambda w_k}{n}

其中C0C_0爲原誤差,λ\lambda爲weight decay係數,也可以看做是懲罰值, 12\frac{1}{2}則用於求導時的簡化

原始梯度下降wnew=woldηΔ,Δ=C0wkw_{new}=w_{old}-\eta\Delta ,\Delta=\frac{\partial{C_0}}{\partial{w_k}}

使用了weight decay之後,Δ\Delta中多了一項λwkn\frac{\lambda w_k}{n},即對梯度下降時較大的權重,會賦予較大的懲罰值,使新的w趨於0

而在選取decay值上,目前尚沒有比較普適的公式
How could I choose the value of weight decay for neural network regularization 中提到用平時調參時常用的兩種策略:grid search 和 random search
其實都是類似窮舉,首先需要有個驗證集(不同於訓練集),分別對驗證集採取不同decay值(如0.5, 0.1, 0.01等等)進行測試,選取其中效果較好的decay,即作爲訓練集的decay

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章