1.8 其他正则化方法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

其他正则化方法 (Other Regularization Methods)

除了 L 2 L2 正则化和随机失活(dropout)正则化,还有几种方法可以减少神经网络中的过拟合:

在这里插入图片描述

一.数据扩增

假设你正在拟合猫咪图片分类器,如果你想通过扩增训练数据来解决过拟合,但扩增数据代价高,而且有时候我们无法扩增数据,但我们可以通过添加这类图片来增加训练集。例如,水平翻转图片,并把它添加到训练集。所以现在训练集中有原图,还有翻转后的这张图片,所以通过水平翻转图片,训练集则可以增大一倍,因为训练集有冗余,这虽然不如我们额外收集一组新图片那么好,但这样做节省了获取更多猫咪图片的花费。

在这里插入图片描述

除了水平翻转图片,你也可以随意裁剪图片,这张图是把原图旋转并随意放大后裁剪的,仍能辨别出图片中的猫咪。

通过随意翻转和裁剪图片,我们可以增大数据集,额外生成假训练数据。和全新的,独立的猫咪图片数据相比,这些额外的假的数据无法包含像全新数据那么多的信息,但我们这么做基本没有花费,代价几乎为零,除了一些对抗性代价。以这种方式扩增算法数据,进而正则化数据集,减少过拟合比较廉价。

在这里插入图片描述

像这样人工合成数据的话,我们要通过算法验证,图片中的猫经过水平翻转之后依然是猫。大家注意,我并没有垂直翻转,因为我们不想上下颠倒图片,也可以随机选取放大后的部分图片,猫可能还在上面。

对于光学字符识别,我们还可以通过添加数字,随意旋转或扭曲数字来扩增数据,把这些数字添加到训练集,它们仍然是数字。为了方便说明,我对字符做了强变形处理,所以数字4看起来是波形的,其实不用对数字4做这么夸张的扭曲,只要轻微的变形就好,我做成这样是为了让大家看的更清楚。实际操作的时候,我们通常对字符做更轻微的变形处理。因为这几个4看起来有点扭曲。所以,数据扩增可作为正则化方法使用,实际功能上也与正则化相似。

二.early stopping

还有另外一种常用的方法叫作early stopping,运行梯度下降时,我们可以绘制训练误差,或只绘制代价函数的优化过程,在训练集上用0-1记录分类误差次数。呈单调下降趋势,如图。

在这里插入图片描述

因为在训练过程中,我们希望训练误差,代价函数 J J 都在下降,通过early stopping,我们不但可以绘制上面这些内容,还可以绘制验证集误差,它可以是验证集上的分类误差,或验证集上的代价函数,逻辑损失和对数损失等,你会发现,验证集误差通常会先呈下降趋势,然后在某个节点处开始上升,early stopping的作用是,你会说,神经网络已经在这个迭代过程中表现得很好了,我们在此停止训练吧,得到验证集误差,它是怎么发挥作用的?

在这里插入图片描述

当你还未在神经网络上运行太多迭代过程的时候,参数 w w 接近0,因为随机初始化 w w 值时,它的值可能都是较小的随机值,所以在你长期训练神经网络之前 w w 依然很小,在迭代过程和训练过程中 w w 的值会变得越来越大,比如在这儿,神经网络中参数 w w 的值已经非常大了,所以early stopping要做就是在中间点停止迭代过程,我们得到一个 w w 值中等大小的弗罗贝尼乌斯范数,与 L 2 L2 正则化相似,选择参数 w w 范数较小的神经网络,但愿你的神经网络过度拟合不严重。

在这里插入图片描述

术语early stopping代表提早停止训练神经网络,训练神经网络时,我有时会用到early stopping,但是它也有一个缺点,我们来了解一下。

我认为机器学习过程包括几个步骤,其中一步是选择一个算法来优化代价函数 J J ,我们有很多种工具来解决这个问题,如梯度下降,后面我会介绍其它算法,例如MomentumRMSpropAdam等等,但是优化代价函数 J J 之后,我也不想发生过拟合,也有一些工具可以解决该问题,比如正则化,扩增数据等等。

在这里插入图片描述

在机器学习中,超级参数激增,选出可行的算法也变得越来越复杂。我发现,如果我们用一组工具优化代价函数 J J ,机器学习就会变得更简单,在重点优化代价函数 J J 时,你只需要留意 w w b b J ( w , b ) J(w,b) 的值越小越好,你只需要想办法减小这个值,其它的不用关注。然后,预防过拟合还有其他任务,换句话说就是减少方差,这一步我们用另外一套工具来实现,这个原理有时被称为“正交化”。思路就是在一个时间做一个任务,后面课上我会具体介绍正交化,如果你还不了解这个概念,不用担心。

但对我来说early stopping的主要缺点就是你不能独立地处理这两个问题,因为提早停止梯度下降,也就是停止了优化代价函数 J J ,因为现在你不再尝试降低代价函数 J J ,所以代价函数 J J 的值可能不够小,同时你又希望不出现过拟合,你没有采取不同的方式来解决这两个问题,而是用一种方法同时解决两个问题,这样做的结果是我要考虑的东西变得更复杂。

如果不用early stopping,另一种方法就是 L 2 L2 正则化,训练神经网络的时间就可能很长。我发现,这导致超级参数搜索空间更容易分解,也更容易搜索,但是缺点在于,你必须尝试很多正则化参数 λ \lambda 的值,这也导致搜索大量 λ \lambda 值的计算代价太高。

Early stopping的优点是,只运行一次梯度下降,你可以找出 w w 的较小值,中间值和较大值,而无需尝试 L 2 L2 正则化超级参数 λ \lambda 的很多值。

如果你还不能完全理解这个概念,没关系,下节课我们会详细讲解正交化,这样会更好理解。

虽然 L 2 L2 正则化有缺点,可还是有很多人愿意用它。吴恩达老师个人更倾向于使用 L 2 L2 正则化,尝试许多不同的 λ \lambda 值,假设你可以负担大量计算的代价。而使用early stopping也能得到相似结果,还不用尝试这么多 λ \lambda 值。

这节课我们讲了如何使用数据扩增,以及如何使用early stopping降低神经网络中的方差或预防过拟合。

课程PPT

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了186 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_36815313/article/details/105394162