深度学习笔记----拓扑结构动态变化网络(Dropout,Drop Connect, Stochastic Depth, BranchyNet,Blockdrop,SkipNet)
目录
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)相关推荐
- 深度学习笔记5:正则化与dropout
出处:数据科学家养成记 深度学习笔记5:正则化与dropout 在笔记 4 中,笔者详细阐述了机器学习中利用正则化防止过拟合的基本方法,对 L1 和 L2 范数进行了通俗的解释.为了防止深度神经网络出 ...
- 生成对抗网络入门详解及TensorFlow源码实现--深度学习笔记
生成对抗网络入门详解及TensorFlow源码实现–深度学习笔记 一.生成对抗网络(GANs) 生成对抗网络是一种生成模型(Generative Model),其背后最基本的思想就是从训练库里获取很多 ...
- 深度学习笔记(12) Batch归一化网络
深度学习笔记(12) Batch归一化网络 1. Batch归一化 2. 激活值归一化 3. 特殊情况不归一化 4. mini-batch上的Batch归一化 1. Batch归一化 Batch归一化 ...
- HALCON 21.11:深度学习笔记---网络和训练过程(4)
HALCON 21.11:深度学习笔记---网络和训练过程(4) HALCON 21.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的.整 ...
- HALCON 20.11:深度学习笔记(4)--- 网络和训练过程
HALCON 20.11:深度学习笔记(4)--- 网络和训练过程 HALCON 20.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的. ...
- 2020-4-22 深度学习笔记20 - 深度生成模型 5 (有向生成网络--sigmoid信念网络/可微生成器网络/变分自编码器VAE/生产对抗网络GAN/生成矩匹配网络)
第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...
- 深度学习笔记(28) 残差网络
深度学习笔记(28) 残差网络 1. 残差块 2. 深度网络的训练错误 3. ResNets的作用 4. ResNets的细节 5. ResNets的结构 1. 残差块 非常深的神经网络是很难训练的, ...
- 深度学习笔记(46) 深度卷积网络学习
深度学习笔记(46) 深度卷积网络学习 1. 学习内容 2. 第一层 3. 第二层 4. 第三层 5. 第四层 6. 第五层 1. 学习内容 深度卷积网络到底在学什么? 来看一个例子,假如训练了一个卷 ...
- 深度学习笔记(43) Siamese网络
深度学习笔记(43) Siamese网络 1. Siamese网络 2. 建立人脸识别系统 3. 训练网络 1. Siamese网络 深度学习笔记(42) 人脸识别 提到的函数ddd的作用: 输入两张 ...
- 深度学习笔记(30) Inception网络
深度学习笔记(30) Inception网络 1. Inception模块 2. 瓶颈层 3. Inception网络 4. Inception网络的细节 1. Inception模块 构建卷积层时 ...
最新文章
- 信息化基础建设 开发框架
- 17种元器件PCB封装图鉴,美翻了
- garch模型python步骤_GARCH模型的建模步骤?
- java 继承调用_【JAVA学习】继承中函数调用机制
- android里R.layout.的问题
- tableciewCell 样式
- 组队训练3回放 ——hnqw1214
- mysql 初始化_MySQL安装与初始化
- lopatkin俄大神Windows精简版系统 安装教程 简单版
- 数字化让企业精益管理梦成真,技术成核心驱动
- 导致无线网卡连接不上wifi的几种原因|为什么无线网卡连不上wifi?
- [渝粤教育] 天水师范学院 高等数学(一) 参考 资料
- Python 基础|while 循环语句
- 服务器IIS架设网站无法增加log文件
- 小程序 _ 学习笔记
- cat3速度 rj45_常用RJ45网线的规格及型号总结
- SVG进阶-SMIL动画
- photoshop 自学网站
- 如何把数字转换成汉字
- 【渝粤教育】 广东开放大学21秋期末考试法律职业伦理10214k2