NIPS 改名了!改成了neurips了。。。

深度神经网络在过参数化和使用大量噪声和正则化(如权重衰减和 dropout)进行训练时往往性能很好。dropout 广泛用于全连接层的正则化,但它对卷积层的效果没那么好。原因可能在于卷积层中的激活单元是空间关联的,使用 dropout 后信息仍然能够通过卷积网络传输到下一层。相比于dropout一个一个扔掉神经元,自然而然我们就要成块成块扔。因此就产生了这种叫dropblock的方法来对卷积网络进行正则化约束,它会丢弃特征图相邻区域中的单元。此外,在训练过程中逐渐增加丢弃单元的数量会带来更高的准确率,使模型对超参数选择具备更强的鲁棒性。

如下图更加形象生动:

图(a)中图片狗的区域是包含语义信息的,(b)中dropout扔神经元基本是这样随机扔,这就导致了很多狗这个实例的相关性信息被保存下来了,如(c), dropblock的思想是随机找一些点,然后自定义一个区域(block)把这里的信息一股脑全扔了。这样语义信息就不会冗余,从一定程度上使学习到的特征更加鲁棒。

如何操作:

block_size: 控制block的区域大小

: 控制丢掉多少神经元,注意这里的神经元不是真正丢了,而是某一次不用它的概率。

参数设置:

Blocksize设置为1的时候和dropout类似,但是只在图中绿色区域丢

设置:

Keep_prob 为保存信息的比率

feat_size 为整个feature map的大小

feat_size-block_size+1 为绿色区域的大小,我把它命名为语义信息区域吧。。

我的想法:

读了这篇文章,我倒是有些想法,我们的目标不是去除图像像素之间的冗余特征吗,那么我们根据这样一句话:

the m best features are not the best m features....在卷积层与全连接层的中间加一个去冗余层。

扔特征的目标是不是就是找出含有个特征的特征子集S?其实相对于也是丢弃一部分特征

那我们这样:

1:与标签的最大相关性:

(2)

C为类别,S 为特征子集,为第i个特征。

变量间的最小冗余度:

(3)

其中I函数为给定两个随机变量x和y,他们的概率密度函数(对应于连续变量)为p(x),p(y),p(x,y)p(x),p(y),p(x,y),则互信息为 :

那么我们整个神经网络优化公式为:

传统损失 - 公式(2)+公式(3)

当然上面思想主要来自于mrmr算法,正好可以结合卷积来做一下。一点初步的idea,有空实现下,在来分享。

NeurIPS2018: DropBlock: A regularization method for convolutional networks的更多相关文章

  1. (原)DropBlock A regularization method for convolutional networks

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/9985027.html 论文网址: https://arxiv.org/abs/1810.12890 ...

  2. (转)ResNet, AlexNet, VGG, Inception: Understanding various architectures of Convolutional Networks

    ResNet, AlexNet, VGG, Inception: Understanding various architectures of Convolutional Networks by KO ...

  3. Fully Convolutional Networks for Semantic Segmentation 译文

    Fully Convolutional Networks for Semantic Segmentation 译文 Abstract   Convolutional networks are powe ...

  4. 论文翻译——Character-level Convolutional Networks for Text Classification

    论文地址 Abstract Open-text semantic parsers are designed to interpret any statement in natural language ...

  5. 论文阅读(Xiang Bai——【CVPR2016】Multi-Oriented Text Detection with Fully Convolutional Networks)

    Xiang Bai--[CVPR2016]Multi-Oriented Text Detection with Fully Convolutional Networks 目录 作者和相关链接 方法概括 ...

  6. VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION 这篇论文

    由Andrew Zisserman 教授主导的 VGG 的 ILSVRC 的大赛中的卷积神经网络取得了很好的成绩,这篇文章详细说明了网络相关事宜. 文章主要干了点什么事呢?它就是在在用卷积神经网络下, ...

  7. Fully Convolutional Networks for semantic Segmentation(深度学习经典论文翻译)

    摘要 卷积网络在特征分层领域是非常强大的视觉模型.我们证明了经过端到端.像素到像素训练的卷积网络超过语义分割中最先进的技术.我们的核心观点是建立"全卷积"网络,输入任意尺寸,经过有 ...

  8. Very Deep Convolutional Networks for Large-Scale Image Recognition

    Very Deep Convolutional Networks for Large-Scale Image Recognition 转载请注明:http://blog.csdn.net/stdcou ...

  9. 论文学习:Fully Convolutional Networks for Semantic Segmentation

    发表于2015年这篇<Fully Convolutional Networks for Semantic Segmentation>在图像语义分割领域举足轻重. 1 CNN 与 FCN 通 ...

随机推荐

  1. C3:建造者模式 Builder

    将一个复杂对象的创建与表示分离,使得同样的构建过程可以创建不同的表示. 应用场景: A.创建这个对象通常需要较多的参数,才能完整的表示该对象.B.类的各个组成部分的具体实现类或算法经常面临变化,但将他 ...

  2. SQL语句练习手册--第一篇

    表架构 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师 ...

  3. Linux——学习环境搭建

    终于决定将学习环境彻底转到Linux上来,下面记录一下转移学习环境的各种软件和环境的安装和配置. 1.centos自带python2.6,之前的博文已经说到已成功更新到python3.3,下面首先安装 ...

  4. passwd(总结)

    1.当前用户是root root用户修改密码 ,直接 passwd[不要输入当前用户密码] 如果修改其他用户密码,需要 passwd 用户名 如: passwd sc 短短的密码,如123也能通过,因 ...

  5. 51单片机 | 使用D/A转换器实现三角波发生器

    ———————————————————————————————————————————— D/A转换器 CS=0.ILE=1时,WR1信号有效时将数据总线上的信号写入8位输入锁存器 XFER=0时,W ...

  6. Flex 自定义打印控件编写

    打印历来是web应用一个比较棘手的问题,幸好flex web应用是运行在flash player上的,flash player可以访问打印机,所以flex 应用可以实现比较强大的打印功能.Flex 自 ...

  7. linux本地文件上传之RZ/SZ和sftp

    将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令. 1.软件安装 (1)编译安装 root 账号登陆后, ...

  8. window 效率神器:Wox

    官方网站 http://www.getwox.com/ 下载后以管理员身份运行,右下角可以看到Wox的图标.点击setting可以进入主界面 如果看不懂可以将语言设置为中文 默认快捷键是Alt + s ...

  9. java之JDK动态代理

    © 版权声明:本文为博主原创文章,转载请注明出处 JDK动态代理: JDK动态代理就是在程序运行期间,根据java的反射机制自动的帮我们生成相应的代理类 优势: - 1. 业务类只需要关注业务逻辑本身 ...

  10. GetTickCount()函数的陷阱!

    开发中经经常使用GetTickCount()函数来进行间隔时间的推断.如推断某一段代码运行花了多少时间等,使用比較方便. 可是仅仅针对寻常的一些測试.近期开发一个服务程序时,也在代码中用GetTick ...