通过两个例子来直观体会一下,左图是高偏差,右图是高方差,中间是刚刚好。现在我们看一下这个庞大的深度拟合神经网络,这是神经网络的代价函数J(w[l],b)=1m∑i=1mL(y^[i],y[i])J(w^{[l]},b)=\frac{1}{m}\sum_{i=1}^mL(\hat{y}^{[i]},y^{[i]})J(w[l],b)=m1​i=1∑m​L(y^​[i],y[i])在原始损失函数中添加正则项,损失函数表示为J(w[l],b)=1m∑i=1mL(y^[i],y[i])+λ2m∑l=1L∣∣w[l]∣∣F2J(w^{[l]},b)=\frac{1}{m}\sum_{i=1}^mL(\hat{y}^{[i]},y^{[i]})+\frac{\lambda}{2m}\sum_{l=1}^L||w^{[l]}||^2_FJ(w[l],b)=m1​i=1∑m​L(y^​[i],y[i])+2mλ​l=1∑L​∣∣w[l]∣∣F2​为什么添加佛罗贝尼乌斯范数就可以减少过拟合,直观上理解就是如果正则化λ\lambdaλ设置得足够大,权重矩阵www被设置为接近于0的值,直观理解就是把多隐藏单元的权重设置为0,于是基本上消除了这些隐藏单元的许多影响,如果是这种情况,这个被大大简化了的神经网络会变成一个很小的网络,小到如同一个逻辑回归单元,可是深度却很大,它会使这个网络从过拟合的状态更接近与左图的高偏差状态,但是λ\lambdaλ会存在一个中间值,于是会有一个接近“just right”的中间状态,直观理解就是λ\lambdaλ增加到足够大,w会接近于0,实际上是不会发生这种情况的,我们尝试消除或者至少减小许多隐藏单元的影响,最终这个网络会变得很简单,这个神经网络越来越接近逻辑回归。我们直观上认为大量隐藏单元被完全消除了。其实不然,实际上是该神经网络的所有隐藏单元依然存在,但是它们的影响变得更小了,神经网络变得更简单了,貌似这样更不容易过拟合,因此并不确定这个直觉经验是否有效。不过,在编程中执行正则化时,你会实际看到一些方差减小的结果。

再来直观感受一下正则化为什么可以预防过拟合,假设我们用的是这样的双曲激活函数tanh,用g(z)g(z)g(z)表示tanh(z)tanh(z)tanh(z)。那么我们发现只要z非常小,如果z只涉及少量参数,这里我们可以利用双曲正切函数的线性状态,只要z可以扩展为这样的更大值或者更小值,激活函数开始变得非线性,现在你应该摒弃这个直觉,即如果正则参数λ\lambdaλ很大,激活函数的参数会相对小,因为代价函数中的参数变大了。如果w很小,因为z[l]=w[l]a[l−1]+b[l]z^{[l]}=w^{[l]}a^{[l-1]}+b^{[l]}z[l]=w[l]a[l−1]+b[l]如果w很小,相对来说,z也会很小,特别地,如果z的值最终在这个范围内,都是相对较小的值,g(z)g(z)g(z)大致呈线性,每层几乎都是线性的,和线性回归函数一样,前面已经说过,如果每层都是线性的,那么整个网络就是一个线性网络,即使是一个非常深的深层网络,因具有线性激活函数的特征,最终我们只能计算线性函数。因此它不适用于非常复杂的决策,以及过度拟合数据集的非线性决策边界。

总结一下,如果正则化参数变得很大,参数w很小,z也会相对变小,此时忽略b的影响,z会相对变小。实际上z的取值范围很小,这时候的激活函数会相对呈线性,整个神经网络会计算离线性函数近的值,这个线性函数非常简单,并不是已给极复杂的高度非线性函数,不会发生过拟合。

总结正则化之前给大家一个执行方面的小建议,在增加正则化项时,应用之前定义的代价函数J,我们做一下修改,增加了一项,目的是预防权重过大。

深度学习的实用层面 —— 1.5 为什么正则化可以减少过拟合相关推荐

  1. 深度学习的实用层面 —— 1.6 Dropout正则化

    除了L2正则化,还有一个非常实用的正则化方法--dropout(随机失活),我们看一下它的工作原理. 假设你在训练上图这样的神经网络,它存在过拟合,这就是dropout所要处理的,我们复制这个神经网络 ...

  2. 深度学习的实用层面 —— 1.8 其它正则化方法

    除了L2正则化和随机失活(dropout正则化),还有几种方法可以减少神经网络中的过拟合. 假设你正在拟合猫咪图片分类器,如果你想通过扩增训练数据来解决过拟合,但扩增训练数据代价高,而且有时候我们无法 ...

  3. 吴恩达深度学习的实用层面编程作业:正则化Regularization

  4. 吴恩达深度学习笔记5-Course2-Week1【深度学习的实用层面】

    改善深层神经网络:超参数调试.正则化以及优化 深度学习的实用层面 一.训练.验证.测试集 样本数据分成以下三个部分: 训练集(train set): 用于对模型进行训练. 验证集(hold-out c ...

  5. 3.深度学习的实用层面

    第一周:深度学习的实用层面 项目进展得一个关键性得因素就是划分高质量得训练集,验证集,测试集.这有助于提高循环迭代得效率.验证集也称为development set 也称为dev set. 验证集主要 ...

  6. 吴恩达【优化深度神经网络】笔记01——深度学习的实用层面

    文章目录 引言 一.训练集/验证集/测试集(Train/Dev/Test sets) 1. 数据集选择 2. 补充:交叉验证(cross validation) 二.偏差和方差(Bias/Varian ...

  7. 深度学习的实用层面 —— 1.3 机器学习基础

    初始化模型之后,首先要知道算法的偏差高不高,如果偏差较高,试着评估训练集或者训练数据的性能,如果偏差的确很高,甚至无法拟合训练集,那么你要做的就是选择一个新网络,比如含有更多隐层或者隐藏单元的网络,或 ...

  8. 吴恩达深度学习笔记 course 2 1.1~1.14 深度学习的实用层面

    1.1 Train/dev/test sets 在构建一个神经网络的时候我们往往需要设计很多参数,如:layers,learning rates ,acivation functions,hidden ...

  9. 吴恩达老师深度学习视频课笔记:深度学习的实用层面

            训练.验证和测试数据集(training.development and test sets):训练神经网络时,我们需要作出很多决策,如神经网络分多少层(layers).每层含有多少个 ...

最新文章

  1. Linux初级运维(七)——bash脚本编程(常见测试)
  2. iOS--动画demo--Launch Image淡出效果
  3. 客户端命令(docker)
  4. 根据从日期控件选定的时间以表格形式显示数据_VB项目开发FlexGrid控件使用讲解...
  5. 蓝桥杯第六届省赛JAVA真题----循环节长度
  6. Redhat/CentOS修改主机名
  7. 阵列信号处理知识点合集
  8. linux命令五十七之tar命令;linux多个文件压缩打包到一个压缩文件
  9. 嗨!亲爱的朋友们,欢迎您光临我的…
  10. 西藏:失落的旅游天堂?
  11. python之简介及入门
  12. UVA live3713
  13. 智能驾驶看湘江:中国智能网联汽车产业的“长沙样本”
  14. spring mvc使用@InitBinder 标签对表单数据绑定
  15. 语音识别芯片的基本原理和工作流程
  16. Inventor 2021 安装避坑指南
  17. 【Accumulation】The definition of SISR
  18. 小程序源码:紫色特别舒服的UI趣味测试-多玩法安装简单
  19. Java工程师培训课(十一、新的开始)
  20. Wannafly挑战赛26 B 冥土追魂(暴力)

热门文章

  1. 清空VS2003/VS2005最近打开解决方案记录
  2. 面试精讲之面试考点及大厂真题 - 分布式专栏 15 如何解决消息重复,保证消息顺序问题
  3. Nginx使用HTTPS建立与上游服务器的网络通信
  4. How to Install and Configure OpenSSH Server In Linux
  5. Linux日志服务器的搭建
  6. BGP——路由汇总造成次优选路问题
  7. docker之阿里云centos 7.x 启动容器报错处理办法
  8. 【编程】不同编程语言的用处(图解)
  9. Upload-Labs(11-15)
  10. C#LeetCode刷题之#234-回文链表(Palindrome Linked List)