首页 > 代码库 > Neural Network and DeepLearning (3.2)改进神经网络的学习方法

Neural Network and DeepLearning (3.2)改进神经网络的学习方法

Overfitting and regularization(过度拟合和规范化)

我们的网络在280迭代期后就不再能够推广到测试数据上。所以这不是有用的学习。我们说网络在280迭代期后就过度拟合(overfitting)过度训练(overtraining)了。

我们的网络实际上在学习训练数据集的特例,而不是能够一般的进行识别。我们的网络几乎是在单纯记忆训练集合,而没有对数字本质进行理解并泛化到测试数据集上。

一种检测过度拟合的明显方法:

跟踪测试数据集合上的准确率随训练变化情况。如果看到测试数据上的准确率不再提升,那我们就停止训练。

具体过程就是在每个迭代期的最后都计算在validation_data上的分类准确率。一旦分类准确率已经饱和,就停止训练。这个策略被称为提前停止(early stopping。可以将验证集看成是一种特殊的训练数据集,能帮助我们学习到好的超参数(hyper-parameters)。这种寻找好的超参数的方法有时候被称为hold out方法,因为validation_data是从training_data训练集中留出或者“拿出”的一部分。

 

规范化

L2规范化(也称为权重衰减)

L2规范化的想法是增加一个额外的项到代价函数上,这个项叫做规范化项。下面是规范化的交叉熵:

技术分享其中λ>0可以称为规范化参数,n就是训练集合的大小。(需要注意的是规范化项里面并不包含偏置)

当然对其他的代价函数也可以进行规范化,例如二次代价函数:

技术分享两者都可以写成这样:

技术分享其中C0是原始的代价函数。

规范化可以当作一种寻找小的权重最小化原始代价函数之间的折中。这两部分之间相对的重要性由λ的值来控制:λ越小,就越偏向于最小化原始代价函数,反之,倾向于小的权重

将随机梯度下降算法应用在一个规范化的神经网络上

对规范化的损失函数求偏导数:

技术分享可以看到偏执的梯度下降学习规则不会发生变化:

技术分享

而权重的学习规则变成了:

技术分享这和正常的梯度下降学习规则相同,增加了一个因子技术分享重新调整了权重w。这种调整有时候被称为权重衰减

那么,随机梯度下降的权重的规范化学习规则就变成了:

技术分享偏置的规范化学习规则不变:

技术分享

规范化让网络具有更好的泛化能力,显著减轻了过度拟合的影响。

备注:无规范化的网络会偶然被限制住,明显困在了代价函数的局部最优出。结果就是不同的运行会给出相差很大的结果。对比来看,规范化的网络能够提供更容易复制的结果。

为何规范化可以帮助减轻过度拟合

小的权重在某种程度上,意味着更低的复杂性,也就是对数据给出了一种更简单却更强大的解释,因此应该优先选择。

 

Neural Network and DeepLearning (3.2)改进神经网络的学习方法