1.过拟合
模型复杂而训练样本不足,过度训练,会导致过度拟合。
训练数据集上的代价表现是越来越好的,测试集上的代价越来越差。训练数据上的分类准确率一直在提升接近 100%,而测试准确率仅仅能够达到 82.27%。
网络几乎是在单纯记忆训练集合,而没有对数字本质进行理解能够泛化到测试数据集上。
避免过拟合的方法:early stopping,L1、L2正则化,dropout, 人为扩展训练数据
2. early stopping
数据集分为三部分:training_data、validation_data,testing_data。如果设置超参数是基于 test_data 的话, 会得到过度拟合于 test_data 的超参数。借助 validation_data 来克服这个问题,在训练过程中,用validation_data来确定一些超参数(如迭代期epoch, 学习速率η)。然后一旦获得了想要的超参数,最终我们就使用 test_data 进行准确率测量。
在每个迭代期的最后都计算在validation_data上的分类准确率。一旦分类准确率已经饱和,就停止训练。这个策略被称为提前停止(early stopping)。
3. L2正则化(权重衰减)
正则化的交叉熵:
正则化的二次代价函数:
L2正则化就是在代价函数后面再加上一个正则化项:
正则化可以当做一种寻找小的权重和最小化原始的代价函数之间的折中。这两部分之前相对的重要性就由 λ 的值来控制了:λ 越小,就偏向于最小化原始代价函数,反之,倾向于小的权重。
将随机梯度下降算法应用在一个正则化的神经网络上,对上式求偏导数得:
偏置的偏导数不变化, 偏置的梯度下降学习规则不会发生变化,权重的学习规则:
和通常的梯度下降学习规则相同,除了通过一个因子重新调整了权重w。这种调整被称为权重衰减,因为它使得权重变小。
随机梯度下降的正则化学习规则:
小的权重在某种程度上,意味着更低的复杂性,也就对数据给出了一种更简单却更强大解释。正则化的神经网络常常能够比非正则化的泛化能力更强, 这只是一种实验事实。
有一个大的偏置并不会像大的权重那样会让神经元对输入太过敏感。所以我们不需要对大的偏置所带来的学习训练数据的噪声太过担心。同时,允许大的偏置能够让网络更加灵活。因为,大的偏置让神经元更加容易饱和,这有时候是我们所要达到的效果。所以,我们通常不会对偏置进行正则化。
4. L1 正则化
这个方法是在未正则化的代价函数上加上一个权重绝对值的和:
计算导数:
其中 sgn(w) 就是 w 的正负号,即 w 是正数时为 +1,而 w 为负数时为 −1。
对 L1 正则化的网络进行更新的规则就是:
在 L1 正则化中,权重通过一个常量向 0 进行缩小。在 L2 正则化中,权重通过一个和 w 成比例的量进行缩小的。所以,当一个特定的权重绝对值 |w| 很大时,L1 正则化的权重缩小得远比 L2 正则化要小得多。相反,当一个特定的权重绝对值 |w| 很小时,L1 正则化的权重缩小得要比 L2 正则化大得多。最终的结果就是:L1 正则化倾向于聚集网络的权重在相对少量的高重要度连接上,而其他权重就会被驱使向 0 接近。
5. Dropout
和 L1、L2 正则化不同,Dropout技术并不依赖对代价函数的修改,而是改变了网络本身。
基本的工作机制:
转载自:https://blog.csdn.net/qq_35497808/article/details/76032627
随机(临时)地删除网络中的一半的隐藏神经元,输入层和输出层的神经元保持不变
那些临时被删除的神经元,用虚圈表示在图中:
在一个小批量数据上按照反向传播算法更新修改后的神经网络中的权值。(虚线不更新)
然后重复这个过程,首先重置Dropout的神经元,然后选择一个新的随机的隐藏神经元的子集进行删除,估计对一个不同的小批量数据的梯度,然后更新权重和偏置。
当Dropout掉不同的神经元集合时,有点像在训练不同的神经网络。Dropout过程就如同大量不同网络的效果的平均。用这种平均法帮助消除过度拟合。
6. 人为扩展训练数据
将原始图片旋转一个小角度
在数据中添加随机噪声
一些有弹性的畸变
截取原始图片的一部分
---------------------
作者:qq_35497808
来源:CSDN
原文:https://blog.csdn.net/qq_35497808/article/details/76032627
版权声明:本文为博主原创文章,转载请附上博文链接!