通过正则化regularization防止overfitting
增加训练数据集的量和减小神经网络的规模是减小overfitting的途径之一.但更深层更大的网络潜在有更强的学习能力,即使对于固定的神经网络和固定的训练集仍可以减小overfitting.
常用的正则化形式有
L1 regularization:
C=Co+λn∑w|w|
L2 regularization:
C=Co+λ2n∑ww2
以L2 Regularization为例:
对于二次损失函数加L2正则化项为:
C=12n∑∥∥y−aL∥∥2+λ2n∑ww2
对于交叉熵损失函数加L2正则化项为:
C=12n∑j[yjlnajL+(1−yj))ln(1−aLj))]+λ2n∑ww2
以上两种都可表示为:
C=Co+λ2n∑ww2
可以看出,regularization的cost偏向于让神经网络学习比较小的权重w,除非
Co
明显减少.
λ
: 调整两项的相对重要程度,较小的
λ
项倾向于让第一项
Co
最小化,较大的
λ
项倾向于最小化权重之和.
求偏导:
∂C∂w=∂Co∂w+λ2nw
∂C∂b=∂Co∂b
则梯度下降法的更新法则为:
w′=w−η(∂Co∂w+λnw)=w−η∂Co∂w−ηλnw
b′=b−η∂Co∂b
即:
w′=(1−ηλn)w−η∂Co∂w
b′=b−η∂Co∂b
对于随机梯度下降法SGD为:
w′=(1−ηλn)w−ηm∑x∂Cx∂w
b′=b−ηm∑x∂Cx∂b
(
∑x
即SGD在小批量样本x上进行的)
通过一个因子
1−ηλn
重新调整了权重,使权重变小.
实现:code2中函数total_cost()中在cost上加上L2-regularization项.