←上一篇 ↓↑ 下一篇→
1.7 理解 Dropout 回到目录 1.9 归一化输入

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

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

一.数据扩增

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

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

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

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

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

二.early stopping

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

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

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

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

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

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

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

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

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

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

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

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

课程PPT




←上一篇 ↓↑ 下一篇→
1.7 理解 Dropout 回到目录 1.9 归一化输入

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

  1. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  2. 吴恩达deeplearning.ai系列课程笔记+编程作业(6)第二课 改善深层神经网络-第二周:优化算法 (Optimization algorithms)

    第二门课 改善深层神经网络:超参数调试.正则化以及优化(Improving Deep Neural Networks:Hyperparameter tuning, Regularization and ...

  3. 1.4 正则化-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.3 机器学习基础 回到目录 1.5 为什么正则化可以减少过拟合 正则化 (Regularization) 深度学习可能存在过拟合问题--高方差,有两个解决方法,一个是正则 ...

  4. 3.12 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...

  5. 深度学习教程(6) | 神经网络优化算法(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/35 本文地址:https://www.showmeai.tech/article-d ...

  6. 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 无 回到目录 1.2 什么是神经网络 欢迎 第一个视频主要讲了什么是深度学习,深度学习能做些什么事情.以下是吴恩达老师的原话: 深度学习改变了传统互联网业务,例如如网络搜索和 ...

  7. 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...

  8. 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你

    机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...

  9. 1.5 为什么正则化有利于预防过拟合-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.4 正则化 回到目录 1.6 Dropout 正则化 为什么正则化有利于预防过拟合呢 (Why regularization reduces overfitting?) ...

最新文章

  1. 折半插入排序稳定吗_C++实现经典算法--折半插入排序
  2. **Java有哪些悲观锁的实现_80% 人不知道的 Redis 分布式锁的正确实现方式(Java 版)...
  3. [UI] MFD UI kit
  4. C++11系列学习之七---------初始化列表
  5. 儿童编程python入门_儿童编程python入门
  6. 转:大规模网站架构技术原理透析
  7. Python学习笔记:利用Pyforest导入本地已安装的库
  8. 20190823 尚硅谷MySQL核心技术
  9. 二、JAVA基础、语法
  10. 如何获取系统Home(Launcher)应用判断用户是否处于home界面
  11. 人工智能撰稿将代替人工写作?我们拭目以待
  12. git 解决授权失败的方法
  13. 如何只用电脑登录微信
  14. MSDOS(MBR)、GPT、BIOS、UEFI
  15. java 字符串排列组合_字符串排列组合问题
  16. 惠普计算机进入安全模式,Windows10系统惠普电脑快速进入安全模式的方法
  17. 一阶电路实验报告心得_电路实验心得体会
  18. jdk1.8下载与安装教程(win10)超详细
  19. 如何在 微软Microsoft 官网 下载 office365
  20. Vivado使用:综合篇(二)综合选项设置

热门文章

  1. 网络流三·二分图多重匹配 HihoCoder - 1393
  2. 推荐一个妹子,播报汽车新闻
  3. Memcached内存存储
  4. java.util.List学习笔记
  5. 其实吧,微信就是已经用电脑上线,第二天消息还是从手机上重新接收
  6. SWT 下菜单与子菜单添加的实现(详细图解)
  7. C语言位运算实现加法
  8. 【技巧】解决win10的1803版本下,无法收到1809推送、从而无法更新到1903版本的问题。...
  9. 读书印记 - 《注意力经济:如何把大众的注意力变成生意》
  10. Laravel 文件夹结构简介