前言:
这篇是在前面CNN博文的基础上扩展出来写的,前面也说了这一篇需要单独拿出来。
正则化就是为了防止模型过拟合。在机器学习的篇幅分类里也有一片是讲正则化的,那一篇是专门只讲解了L2正则化,而且也写出了在线性回归,逻辑回归,神经网络的代价函数的表达式。

一:L2正则化
这里再次简要提一下,最常见的正则化方式就是L2正则化,在代价哈数后面加上正则项式子,作为对参数的“惩罚”。

求导也很简单,这里不再赘述之前所讲了。这里主要想讲一下一个新的防止过拟合的方法。

二:Dropout
这个思想来自遗传学,好吧,当我看到这个的时候我突然觉得,这就是常人和大神的区别,同样是学过同样的东西,但是大神就是能从中得到一些灵感并且运用到另一个领域。也许自然界真的还有很多很多我们可以学习的,也许是熟能生巧,当我们对一个事物钻研的越多,越能分析出其中的内涵,越能得到很多新的灵感和感悟,触类旁通。

回到正题,这个想法来自于无性繁殖和有性繁殖,无性繁殖就是将父辈的基因全部继承,有性繁殖就是孩子的基因一部分来自父亲一部分来自母亲,这样不断地重新组合最后无重大的基因是很混乱的。

也就是说按道理来讲,无性繁殖能把父类的基因全部继承,优良的基因也能全部继承,但是自然界为什么选择了有性繁殖作为主要的繁殖方式呢?

原因可能是,无性繁殖正是由于全部继承了父辈的基因,基因变化不大,越稳定,越完美,个体结构越稳定于某个环境。当环境变化的时候,可能就会受到巨大冲击。
而有性繁殖虽然不能大部分继承全部的优良基因,也就是没有全部拟合,降低了个体的完美继承,但是却提高了整体族群的适应能力,在不断变化的基因组合中不断发展,基因突变,群体更加稳定。也许就是男女性别的由来吧。

类比于全连接的神经网络,我们每一层每一个节点的输入都来自于上一层节点的输出,参数过于多的话,容易过拟合,但是却也能完美匹配数据集。这就好比是无性繁殖,毫无丢弃地全盘接受来自上层的输入(基因)。
也是dropout的思想就是,在每一轮迭代中,在每一层的节点中,按照某一个概率随机丢弃或者关闭掉一些节点,随机失活掉。

请注意这段话,在每一次迭代中,也就是每一轮迭代,失活的对象都是不一样的,随机选择的,怎么选择呢?按照概率来选择,按照多大的概率呢?我们观察网络,某一层如果参数过多,可以稍微设置一个大的概率失活,小一点的层,设置小一点的失活概率,也可以简单一点,全部节点是全部一样的失活概率。

在训练阶段,为了保证前后传递的能量不损失,在L层执行概率P存活策略后,传递到下一个节点的时候,输入值应该除以P,这样能大致保留原始的能量,这样做的最大好处就是保证传递过程中仿佛没有失活一样,输出给出大致相当的能量给下一层。然后在测试阶段就可以完全不用做任何变化,保留所有的节点,也不用做任何多余特殊运算,直接按照正常的前向传播进行运算。

比如:训练阶段,有点点变化,在L层随机选择失活掉一些节点,存活率是P。
Z(L+1) = W(L)*X(L) / P,(这一步骤也叫做反向失活)

在测试阶段,不需要多余考虑按照没有dropout时候的网络进行正常的前向传播运算。

听说这个是很厉害的一个防止过拟合的方法,在网上也看到了有dropout的和没dropout的实验对比,这里我就不做对比了,我再后面用DeeplearningTool的时候做个实验吧,总之使用dropout后,训练误差会上升一点,但是泛化误差就会下降一些。这是好消息啊,对于一个模型来说。

而且dropout有优点就是,每次都是得到一个更瘦一点的网络,对于训练来说也能节省运算时间。模型变得简单一些,就会越能降低过拟合的可能,这个之前也讲过。

三:其他方法
除了如上所述方法,还可以增加数据量来防止过拟合,因为数据量太少的话,很容易让模型学到片面的数据特征,增加数据量就是增加数据特征的多样性,降低拟合。至于数据怎么来呢?比如图片数据,我们可以对原有的图像进行翻转,放大缩小,截取等自己造出图片。
此外呢,观察cost代价的下降曲线图,看到cost不再下降的时候,基本已经处于匹配饱和状态了,此时可以赶紧停止训练了,这个叫做early stop。

深度学习《CNN架构续篇 - 正则化》相关推荐

  1. 深度学习之自编码器(4)变分自编码器

    深度学习之自编码器(4)变分自编码器 1. VAE原理  基本的自编码器本质上是学习输入 x\boldsymbol xx和隐藏变量 z\boldsymbol zz之间映射关系,它是一个 判别模型(Di ...

  2. 深度学习之自编码器(5)VAE图片生成实战

    深度学习之自编码器(5)VAE图片生成实战 1. VAE模型 2. Reparameterization技巧 3. 网络训练 4. 图片生成 VAE图片生成实战完整代码  本节我们基于VAE模型实战F ...

  3. 深度学习之自编码器AutoEncoder

    深度学习之自编码器AutoEncoder 原文:http://blog.csdn.net/marsjhao/article/details/73480859 一.什么是自编码器(Autoencoder ...

  4. 深度学习之自编码器(3)自编码器变种

    深度学习之自编码器(3)自编码器变种 1. Denoising Auto-Encoder 2. Dropout Auto-Encoder 3. Adversarial Auto-Encoder  一般 ...

  5. 深度学习之自编码器(2)Fashion MNIST图片重建实战

    深度学习之自编码器(2)Fashion MNIST图片重建实战 1. Fashion MNIST数据集 2. 编码器 3. 解码器 4. 自编码器 5. 网络训练 6. 图片重建 完整代码  自编码器 ...

  6. 深度学习之自编码器(1)自编码器原理

    深度学习之自编码器(1)自编码器原理 自编码器原理  前面我们介绍了在给出样本及其标签的情况下,神经网络如何学习的算法,这类算法需要学习的是在给定样本 x\boldsymbol xx下的条件概率 P( ...

  7. 【深度学习】 自编码器(AutoEncoder)

    目录 RDAE稳健深度自编码 自编码器(Auto-Encoder) DAE 深度自编码器 RDAE稳健深度自编码 自编码器(Auto-Encoder) AE算法的原理 Auto-Encoder,中文称 ...

  8. 深入理解深度学习——Transformer:编码器(Encoder)部分

    分类目录:<深入理解深度学习>总目录 相关文章: ·注意力机制(AttentionMechanism):基础知识 ·注意力机制(AttentionMechanism):注意力汇聚与Nada ...

  9. 深度学习之自编码器实现——实现图像去噪

    大家好,我是带我去滑雪! 自编码器是一种无监督学习的神经网络,是一种数据压缩算法,主要用于数据降维和特征提取.它的基本思想是将输入数据经过一个编码器映射到隐藏层,再通过一个解码器映射到输出层,使得输出 ...

  10. 深度学习:自编码器、深度信念网络和深度玻尔兹曼机

    最近自己会把自己个人博客中的文章陆陆续续的复制到CSDN上来,欢迎大家关注我的 个人博客,以及我的github. 本文主要讲解有关自编码器.深度信念网络和深度玻尔兹曼机的相关知识. 一.自编码器 1. ...

最新文章

  1. 深入理解ceph-disk prepare 源码逻辑
  2. 未来今日研究所:2019技术趋势报告
  3. php mysql 时间差_PHP中计算时间差的方法
  4. DB_NAME、DB_UNIQUE_NAME、SERVICE_NAME和INSTANCE_NAME等的区别
  5. log nginx 客户端请求大小_nginx log记录请求响应时间
  6. echart同一个dom下多次动态渲染值,防止值、事件重复互相影响
  7. 6月14 空控制器和空操作及命名空间
  8. php 模板 自己,php自己写了一个模板
  9. android studio 导入c,3.3、Android Studio 添加 C 和 C++ 项目
  10. oracle mrp mps mds 的table关联,ORACLE中的计划-Forecast/MDS/MPS/MRP(转)
  11. 一键把Android手机投屏到电脑上,非常简单
  12. HCI超融合供应商全球六强对比
  13. 中国近代史导图(二)
  14. 虚拟机访问本地mysql_本地访问虚拟机oracle数据库的尝试
  15. 年薪 10 万的程序员,如何积累人生的第一个 100 万?
  16. rk3288编译android,RK3288 源码编译Android 7.1.2 自动编译
  17. AIRCHECK G2 v5 新版本-AirMapper APP发布
  18. android 一键连接wifi,还在一键连WiFi?快试试更智能的WLAN+
  19. Topmobi接口协议
  20. Solr拼写检查示例

热门文章

  1. SQL表名,应该用复数还是单数
  2. 利用dbms_metadata.get_ddl查看DDL语句
  3. 把庞大的 npm script 拆到单独文件中
  4. Javascript里的sleep()方法
  5. 通用大数据架构为什么不适合处理物联网数据?
  6. 2019年7月全国程序员工资统计
  7. idea的总部_Studio Didea新总部办公室,意大利 / Studio Didea
  8. 如何安装使用MinDoc搭建个人在线wiki文档
  9. 【nginx】【小记】泛解析大量域名的情况下 将不带www的域名,301到与之对应的www前缀的域名
  10. 【JS】最简单的域名防红方法,QQ/微信打开网站提示浏览器打开