深度学习进阶课程11---减少overfitting的方法Regularization和Dropout
这篇文章继续写一下Regularization,写一下L1 regularization
公式如下:
跟L2 regularization相似,但不太一样,是对权重w的绝对值求和
求偏导:
sgn()跟w的符号有关,w大于0取1,w小于零取-1
权重更新法则:
比之前的L2更新法则:
都是减小权重,方法不同:
L1减少一个常量,L2减少权重的一个固定比例
会带来以下影响:
如果权重本身很大,L1减少的比L2少很多
如果权重本身很小,L1减少的更多
L1倾向于集中在少部分重要的连接上
当w=0,偏导数
无意义,因为|w|的形状在w=0时是一个V字形尖锐的拐点
所以,当w=0时,我们就使用un-regularization表达式,agn(0)=0,本来regularization的目的就是减小权重,当权重=0时,无需减少
下面再来介绍一个新的概念Dropout
和L1,L2 regularization非常不同,不是针对cost函数增加一项,而是对神经网络本身的结构做改变。
假设我们有一个神经网络
通常,我们根据输入的x,正向更新神经网络,算出输出值,然后反向根据backpropagation来更新权重和偏向
但是,dropout不同,开始的时候,删除掉隐藏层随机选取的一半神经元:
然后,在这个更改过的神经网络上正向和反向更新,利用一个mini-batch
然后,恢复之前删除过的神经元,再重新随机选择一半神经元删除,正向,反向,更新w,b,重复以上过程,最后,学习出来的神经网络中的每个神经元都是在只有一半神经元的基础上学习的,当所有神经元被恢复后,为了补偿,我们把隐藏层的所有权重减半
那么,为什么dropout可以减少overfitting?
假设我们对于同一组训练数据,利用不同的神经网络来训练,训练完成之后,求输出的平均值,这样可以减少overfitting。
Dropout和这个是同样的道理,每次扔到一半隐藏层的神经元,相当于我们在不同的神经网络上训练了,减少了神经元的依赖性,也就是每个神经元不能依赖于某个或某几个其他神经元,迫使神经网络学习和其他神经元联合起来更加健硕的特征
介绍dropout的文章,对于以前MNIST,最高的accuracy是98.4%,利用dropout,提高到98.7%
再来介绍另外一种方法,人工扩大训练集:
之前看到了只有1000张图和50000张图片训练的区别,比较了一下随着训练集的增大,accuracy的变化
参数:隐藏层:30个神经元,mini-batch size:10,学习率:0.5
λ=5.0(对于整个训练集,当训练集减少时要减少),当损失函数为cross-entropy cost 时训练30个epochs
我们可以看到,当训练集扩大的时候,对应的accuray也变大了不少,同时对减小overfitting也有很好的效果,可以想象,如果大规模增加训练集,可以达到更高的准确率
有label的训练集通常不好获得,一种方法,人工产生更多的训练数据:
以上两种图片旋转了15°,旋转不同角度,可以增加很多训练数据
比如:MNIST,一个隐藏层有800个神经元的网络,accuracy为98.4%,当人工增加数据后,accuracy可以达到98.9%,发明人工改变图像的模拟方法进一步增大训练集,准确率达到了99.3%
增大时,要模拟现实世界中这种数据可能出现的变化,来概括更广
对比神经网络和SVM:
比较两个算法的时候,是否使用同样的训练集很重要,因为训练集的增大可以提高accuracy
深度学习进阶课程11---减少overfitting的方法Regularization和Dropout相关推荐
- 深度学习进阶课程10---减少Overfitting的方法Regularization
上一篇文章写了增加训练数据集的量是减少overfitting的途径之一,其实减小神经网络的规模,也可以减小overfitting,但是更深层更大的网络潜在有更强的学习能力. 我们可以采用另一种方式来减 ...
- 深度学习进阶课程16---用ReL解决Vanishing Gradient问题
上篇文章发现一个新的问题,越往外越接近输出层,学习效率比较高 这篇文章来讨论一下如何解决这个问题 Exploding gradient problem: 修正以上问题: (1)初始化比较大的权重:比如 ...
- 【资源下载】DeepMindUCL深度学习与强化学习进阶课程
点击我爱计算机视觉标星,更快获取CVML新技术 本文课程介绍部分来自机器之心,因为原视频国内无法观看,所以我爱计算机视觉费了老大劲专门搬到国内分享给大家,下载方法见文末. 11月23日,DeepMin ...
- B站上线!DeepMind加UCL强强联手推出深度学习与强化学习进阶课程(附视频)
新智元报道 编辑:元子 [新智元导读]DeepMind和伦敦大学学院(University College London,UCL)合作,推出了一个系列的深度学习与强化学习精品进阶课程.该课程内 ...
- 吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai——基于 Cours
吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai--基于 Course ...
- 干货 | 吴恩达亲自为这份深度学习专项课程精炼图笔记点了赞!(附下载)
来源:机器之心.AI有道 本文约7500字,建议阅读10+分钟. 本文整理了深度学习基础.卷积网络和循环网络的学习笔记,附下载哦~ [ 导读 ]吴恩达在推特上展示了一份由 TessFerrandez ...
- Coursera吴恩达《神经网络与深度学习》课程笔记(5)-- 深层神经网络
红色石头的个人网站:redstonewill.com 上节课我们主要介绍了浅层神经网络.首先介绍神经网络的基本结构,包括输入层,隐藏层和输出层.然后以简单的2 layer NN为例,详细推导了其正向传 ...
- Coursera吴恩达《神经网络与深度学习》课程笔记(3)-- 神经网络基础之Python与向量化
红色石头的个人网站:redstonewill.com 上节课我们主要介绍了逻辑回归,以输出概率的形式来处理二分类问题.我们介绍了逻辑回归的Cost function表达式,并使用梯度下降算法来计算最小 ...
- 【人工智能】深度学习专项课程精炼图笔记!必备收藏
本文为人工智能学习笔记记录 ,参考机器之心,AI有道,Google资源 目录 深度学习基础 1. 深度学习基本概念 2. logistic 回归 3. 浅层网络的特点 4. 深度神经网络的特点 5. ...
最新文章
- Timestamp、String、Date之间的转换
- WINCE支持的波斯语的codepages
- centos中bash占用cpu,linux下如何定位CPU占用高的进程的问题点
- 调用阿里云接口实现短信消息的发送源码——CSDN博客
- not in和not exist的区别(转)
- 图论:二分图多重匹配
- android multipartentity 怎么上传参数,android-通过MultipartEntityBuilder通过HTTP表单上传文件,并显示进度b...
- VFIO PassThrough
- 高频面试题—聊一下Euraka的注册原理
- 计算机操作系统-2-处理器管理
- ubuntu上打开md文件_Ubuntu 使用教程.md
- 第一行代码android网课,使用Mongodb实现打卡签到系统的实例代码
- 力扣 299 猜数字游戏(java)
- 小程序中身份证号码认证简单的判断方法
- 苏炫杰全国计算机等级考试,高中主题班会教案模板
- 【人工智能】八皇后问题-启发式求解
- Android Studio自定义组合控件
- 北大国际医院:基于互联网医疗的移动诊疗方案分析与设计
- linux堆内存管理
- BroadcastReceiver 广播