关于weight decay

weight decay的作用主要是令神经网络中的权重变小(趋于0),以防止过拟合
y = ∑ i w i x i y=\sum_{i}{w_ix_i} y=iwixi,则因噪声的存在,可能会令其中某几个 w w w偏大,导致无法正确拟合正常输入
weight decay的公式为:

C = C 0 + λ 2 n ∑ i w i 2 C=C_0+\frac{\lambda}{2n}\sum_i{w_i^2} C=C0+2nλiwi2

∂ C ∂ w k = ∂ C 0 ∂ w k + λ w k n \frac{\partial{C}}{\partial{w_k}}=\frac{\partial{C_0}}{\partial{w_k}}+\frac{\lambda w_k}{n} wkC=wkC0+nλwk

其中 C 0 C_0 C0为原误差, λ \lambda λ为weight decay系数,也可以看做是惩罚值, 1 2 \frac{1}{2} 21则用于求导时的简化

原始梯度下降 w n e w = w o l d − η Δ , Δ = ∂ C 0 ∂ w k w_{new}=w_{old}-\eta\Delta ,\Delta=\frac{\partial{C_0}}{\partial{w_k}} wnew=woldηΔ,Δ=wkC0

使用了weight decay之后, Δ \Delta Δ中多了一项 λ w k n \frac{\lambda w_k}{n} nλwk,即对梯度下降时较大的权重,会赋予较大的惩罚值,使新的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

你可能感兴趣的:(机器学习,机器学习)