深度学习--通过正则化regularization防止overfitting

通过正则化regularization防止overfitting

增加训练数据集的量和减小神经网络的规模是减小overfitting的途径之一.但更深层更大的网络潜在有更强的学习能力,即使对于固定的神经网络和固定的训练集仍可以减小overfitting.
常用的正则化形式有
L1 regularization:

 C=Co+λnw|w|

L2 regularization:

 C=Co+λ2nww2

以L2 Regularization为例:

对于二次损失函数加L2正则化项为:

 C=12nyaL2+λ2nww2

对于交叉熵损失函数加L2正则化项为:

 C=12nj[yjlnajL+(1yj))ln(1aLj))]+λ2nww2

以上两种都可表示为:

 C=Co+λ2nww2

可以看出,regularization的cost偏向于让神经网络学习比较小的权重w,除非  Co 明显减少.
λ : 调整两项的相对重要程度,较小的 λ 项倾向于让第一项  Co 最小化,较大的 λ 项倾向于最小化权重之和.

求偏导:

 Cw=Cow+λ2nw

 Cb=Cob

则梯度下降法的更新法则为:

 wwη(Cow+λnw)wηCowηλnw

 bbηCob

即:

 w1ηλnwηCow

 bbηCob

对于随机梯度下降法SGD为:
 w1ηλnwηmxCxw

 bbηmxCxb

 x 即SGD在小批量样本x上进行的)
通过一个因子  1ηλn 重新调整了权重,使权重变小.

实现:code2中函数total_cost()中在cost上加上L2-regularization项.

你可能感兴趣的:(深度学习)