目录

1,训练时拓扑结构变化的网络

1.1 Dropout与 Drop Connect

1.2 Stochastic Depth(随机深度)

2,测试时拓扑结构变化的网络

2.1 BranchyNet

2.2 Blockdrop

2.3 SkipNet


1,训练时拓扑结构变化的网络

有些网络在训练的时候会随机丢弃一些网络节点,节点之间的连接或者网络模块来增强网络的泛化能力。常用的在训练的时候使用的方法有以下两种。

1.1 Dropout与 Drop Connect

1)Dropout

dropout在全连接层使用。在训练阶段,对于每个节点,以p概率将其输出值保留,以1-p概率将其输出值乘以0。在测试阶段,输出结果要乘以p。原因是:保持训练阶段和测试阶段的期望值相同。训练阶段,对于每个节点,dropout之前的输出是x, 经历dropout之后的期望值是p*x+(1-p)*0=px,因此在测试阶段需要将结果乘以p,从而输出的期望值是px。测试阶段乘以p会增加计算量,所以改进的版本是训练阶段将输出值再除以p。这样测试阶段不需要任何增加的计算  

Dropout作用:通过阻止特征检测器的共同作用来提高神经网络的性能可以看出,网络在提取训练集特征时,舍弃掉了一部分特征来提高网络的泛化能力。

2)Drop Connect

Dropout是将输出随机置0,而DropConnect是将权重随机置0。 文章说之所以这么干是因为原来的Dropout进行的不够充分,随机采样不够合理。
  训练的时候,训练过程与Dropout基本相同。测试的时候,我们同样需要一种近似的方法。但其实发现效果并不比Dropout优秀太多,反而计算量要大很多,因此到目前DropConnect并没有得到广泛的应用。下图是两种方法的区别。

1.2 Stochastic Depth(随机深度)

2016年,也就是ResNet被提出的下一年,清华的黄高(也是DenseNet的提出者)在EECV会议上提出了Stochastic Depth(随机深度网络)。这个网络主要是针对ResNet训练时做了一些优化,即随机丢掉一些层,优化了速度和性能(有点类似于Dropout的效果)

ResNet这个里程碑式的创新对AI领域带来了深远的影响。然而,作者发现ResNet网络中不是所有的层都是必要的,因此结合经典的Dropout思想提出在训练过程中随机丢弃丢掉一些层来优化ResNet的训练过程。

首先来看一下原始的ResNet结构,其中f 代表的是残差部分,i d代表的是恒等映射,把这两部分求和经过激活然后然后输出。这个过程可以用下面的式子来表示:

如下图所示:

Stochastic Depth(随机深度网络)就是在训练时加入了一个随机变量b ,其中b的概率分布是满足一个伯努利分布的,然后将f乘以b,对残差部分做了随机丢弃。如果b = 1,这个结构即是原始的ResNet结构,而当b = 0 时,残差支路没有被激活,整个结构退化为一个恒等函数。这个过程可以用下面的等式来表示:

b满足一个伯努利分布(01分布),它的取值只有0和1两种,其中取0的概率为1 − p,取1的概率是p。上面的p又被称为生存概率,这个p 即代表了b = 1 的可能性,因此p的设置相当重要。

Stochastic Depth(随机深度网络)在训练的时候是一个比测试时候更浅的网络(在训练的时候随机删减一些残差模块,在测试的时候使用所有的单元)。实验证明,这不仅减少了训练的时间,而且随机删减后,测试精度在数据集CIFAR10上有所提升。与基础的ResNet结构相比,其拟合程度大大降低,当网络到达1000层以上,性能依旧不错,不仅没有过拟合。相对于ResNet152还有提升。

2,测试时拓扑结构变化的网络

通常网络在训练后网络就是固定的,测试的时候沿着固定的通路进行计算。然而测试本身有不同的难度,简单的样本只需要少量的计算量就可以完成任务,困难的任务则需要更多的计算量。因此研究者设计了一些网络结构,它可以根据不同的难度使用不同的计算支路。这就是在测试的时候拓扑结果变化的网络。

2.1 BranchyNet

这是一个推理时动态变化的网络结构,如下图所示,它在正常网络通道上包含了多个旁路分支,这样的思想是基于观察到随着网络的加深,表征能力越来越强,大部分简单的图片可以在较浅层时学习到足以识别的特征,如图中的Exit 1通道。一些更难的样本需要进一步的学习,如上图中的Exit 2通道,而只有极少数样本需要整个网络,如Exit3通道。这样的思想可以实现精度和计算量的平衡,对于大部分样本,可以用更小的计算量完成任务。
链接:https://www.zhihu.com/question/337470480/answer/766380855

那么如何判断是否可以提前结束呢?在提出该网络的论文中,作者采用分类信息熵,一旦该通道的分类信息熵低于某一个阈值,说明已经以很高的置信度获得了分类的结果,直到最终的通道。

在训练的时候,每一个通道都会对损失有贡献,越靠近浅层的网络权重越大。多通道的损失不仅增强了梯度信息,也在一定程度上实现了正则化。

将BranchyNet的设计思想用于LeNet,AlexNet,ResNet结构后,在维持性能的前提下,加速效果明显。

2.2 Blockdrop

Stochastic Depth(随机深度网络)在训练的时候是一个比测试时候更浅的网络(在训练的时候随机删减一些残差模块,在测试的时候使用所有的单元)。Blockdrop则是从学习到对不同的样本可以丢弃的残差块。两者的根本区别是Stochastic Depth训练的时候变化测试的时候不变化,Blockdrop是训练的时候不变化,测试的时候发生变化,后者节省更多的计算量。

Blockdrop的思想是学习一种策略网络,对于输入图像,它会学习每一个模块是应该保留还是丢弃。假设有4个残差模块。策略网络学习到的是使用第一个和第三个残差结构,在测试的时候就会值使用1和3,而将2和4丢弃。

2.3 SkipNet

SkipNet主要是以此假设出发,通过在传统CNN的每个layer(或module)上设置判断其是否需要执行的Gate module来决定是否需要真的执行此层计算,若判断为否则直接将activation feature maps传入到下一层,越过当下层的运算不做。无益这样做可以有效地节省传统CNN模型在部署时进行推理工作所需的时间。

就这样一旦训练好,SkipNet在做图片推理时可根据输入的feature maps不同灵活地决定是否执行某一网络中的层。下图可反映SkipNet这一根本特点。

深度学习笔记----拓扑结构动态变化网络(Dropout,Drop Connect, Stochastic Depth, BranchyNet,Blockdrop,SkipNet)相关推荐

  1. 深度学习笔记5:正则化与dropout

    出处:数据科学家养成记 深度学习笔记5:正则化与dropout 在笔记 4 中,笔者详细阐述了机器学习中利用正则化防止过拟合的基本方法,对 L1 和 L2 范数进行了通俗的解释.为了防止深度神经网络出 ...

  2. 生成对抗网络入门详解及TensorFlow源码实现--深度学习笔记

    生成对抗网络入门详解及TensorFlow源码实现–深度学习笔记 一.生成对抗网络(GANs) 生成对抗网络是一种生成模型(Generative Model),其背后最基本的思想就是从训练库里获取很多 ...

  3. 深度学习笔记(12) Batch归一化网络

    深度学习笔记(12) Batch归一化网络 1. Batch归一化 2. 激活值归一化 3. 特殊情况不归一化 4. mini-batch上的Batch归一化 1. Batch归一化 Batch归一化 ...

  4. HALCON 21.11:深度学习笔记---网络和训练过程(4)

    HALCON 21.11:深度学习笔记---网络和训练过程(4) HALCON 21.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的.整 ...

  5. HALCON 20.11:深度学习笔记(4)--- 网络和训练过程

    HALCON 20.11:深度学习笔记(4)--- 网络和训练过程 HALCON 20.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的. ...

  6. 2020-4-22 深度学习笔记20 - 深度生成模型 5 (有向生成网络--sigmoid信念网络/可微生成器网络/变分自编码器VAE/生产对抗网络GAN/生成矩匹配网络)

    第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...

  7. 深度学习笔记(28) 残差网络

    深度学习笔记(28) 残差网络 1. 残差块 2. 深度网络的训练错误 3. ResNets的作用 4. ResNets的细节 5. ResNets的结构 1. 残差块 非常深的神经网络是很难训练的, ...

  8. 深度学习笔记(46) 深度卷积网络学习

    深度学习笔记(46) 深度卷积网络学习 1. 学习内容 2. 第一层 3. 第二层 4. 第三层 5. 第四层 6. 第五层 1. 学习内容 深度卷积网络到底在学什么? 来看一个例子,假如训练了一个卷 ...

  9. 深度学习笔记(43) Siamese网络

    深度学习笔记(43) Siamese网络 1. Siamese网络 2. 建立人脸识别系统 3. 训练网络 1. Siamese网络 深度学习笔记(42) 人脸识别 提到的函数ddd的作用: 输入两张 ...

  10. 深度学习笔记(30) Inception网络

    深度学习笔记(30) Inception网络 1. Inception模块 2. 瓶颈层 3. Inception网络 4. Inception网络的细节 1. Inception模块 构建卷积层时 ...

最新文章

  1. delphi调用c#写的webservice中文出现乱码的问题
  2. 春节档社交与音视频大战背后,底层技术近况如何?
  3. 深入【Get】与【Post】区别
  4. 我回答的一个粉丝关于模拟SAP事务的问题
  5. 为什么linux远程一进入sudo su就卡住_Linux 实战(上)
  6. springboot 扫描jar包中bean_详解Spring Boot的Component Scan原理
  7. unity怎么设置游戏页面_王者荣耀李小龙粤语语音包怎么得?李小龙粤语语音包获取与设置方法介绍[多图] - 游戏攻略...
  8. VBS 代码合集(慎用,好玩)
  9. EPLAN P8 2.x 安装后打不开,提示“没有可用加密狗”解决办法
  10. python生成手写文字图片_使用PHP辅助 快速制作一套自己的手写字体实践
  11. 马化腾每天刷 Leetcode?代码你打算写到几岁?看看这些业务大佬程序人生【云图智联】
  12. Win10小娜搜索空白什么都不显示怎么办,开始菜单,搜索空白
  13. 三次指数平滑法(Holt-Winters)
  14. 羽毛球社团php,羽毛球兴趣小组计划
  15. MATLAB自带PCA函数的参数含义及使用方法
  16. SQL xin手错误鉴赏以及成长小结
  17. 2020java面试总结
  18. 推荐一款结构化数据处理开源库,极大提高开发效率
  19. Verilog 四层电梯设计
  20. java zip 创建目录_Java实现Zip压缩目录中的所有文件

热门文章

  1. myscript 思路整理
  2. 决策树、随机森林及代码实战
  3. 计算机相乘求和的函数,Excel五大求和操作,除了sum函数你知道有几个?-excel乘法函数...
  4. Vue3 router 默认加载 views 文件夹下全部vue文件
  5. 查找数组最大值五种方式
  6. 阿里云服务器使用FTP传输文件
  7. Marr-Hildreth边缘检测器C++实现
  8. 飞鱼星行为管理路由器【限制视频】方法(网页+客户端)
  9. ubuntu CA安装 证书申请
  10. PID 详解 (附伪代码