matlab中dropoutLayer,[转]对 CNN 中 dropout layer 的理解

本文介绍了dropout层在防止CNN过拟合中的作用,通过在训练时随机丢弃一部分神经元,增加网络泛化能力。在测试时,不使用dropout并调整输出以保持与训练时的相似效果。MATLAB中实现dropoutLayer的方式也在文中进行了讨论。
摘要由CSDN通过智能技术生成

原文网址:http://blog.csdn.net/u012702874/article/details/45030991

dropout layer的目的是为了防止CNN 过拟合。那么为什么可以有效的防止过拟合呢?

首先,想象我们现在只训练一个特定的网络,当迭代次数增多的时候,可能出现网络对训练集拟合的很好(在训练集上loss很小),但是对验证集的拟合程度很差的情况。所以,我们有了这样的想法:可不可以让每次跌代随机的去更新网络参数(weights),引入这样的随机性就可以增加网络generalize

的能力。所以就有了dropout 。

在训练的时候,我们只需要按一定的概率(retaining probability)p 来对weight layer

的参数进行随机采样,将这个子网络作为此次更新的目标网络。可以想象,如果整个网络有n个参数,那么我们可用的子网络个数为 2^n 。

并且,当n很大时,每次迭代更新 使用的子网络基本上不会重复,从而避免了某一个网络被过分的拟合到训练集上。

那么测试的时候怎么办呢?

一种最naive的方法是,我们把 2^n 个子网络都用来做测试,然后以某种 voting

机制将所有结果结合一下(比如说平均一下下),然后得到最终的结果。但是,由于n实在是太大了,这种方法实际中完全不可行!

所以有人提出,那我做一个大致的估计不就得了,我从2^n个网络中随机选取 m 个网络做测试,最后在用某种voting

机制得到最终的预测结果。这种想法当然可行,当m很大时但又远小于2^n时,能够很好的逼近原2^n个网络结合起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值