关于weight decay

weight decay的作用主要是令神经网络中的权重变小(趋于0),以防止过拟合
y = i w i x i y=\sum_{i}{w_ix_i} ,则因噪声的存在,可能会令其中某几个 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 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}

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

原始梯度下降 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}}

使用了weight decay之后, Δ \Delta 中多了一项 λ w k n \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

发布了109 篇原创文章 · 获赞 108 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/u013700358/article/details/96341489