【知识星球】有没有网络模型是动态变化的,每次用的时候都不一样?
欢迎大家来到《知识星球》专栏,这里是网络结构1000变小专题,今天给大家介绍一类网络结构,它是动态变化的,每一次使用的时候都不一样。
作者&编辑 | 言有三
1 训练时变化的网络结构
首先我们看第一种,即训练的时候拓扑结构发生动态变化的,最熟悉的是什么?Dropout和DropConnect对吧!
大家都知道的我们肯定是不会讲了,下面给大家讲一个非常优秀的研究。
有三AI知识星球-网络结构1000变
Stochastic Depth
多个独立研究表明实际上ResNet的有效深度没有想象中那么深,152层的网络有效深度也就是40多层左右,怎么去研究这个问题呢?
作者/编辑 言有三
stochastic depth对此做出了研究,它做的事情很简单,就是在训练的时候把残差网络的单元随机删减掉一些,测试时不变,所以网络训练的时候是一个比测试时更浅层的网络。
实验证明这不仅减小了训练时间,还提升了测试精度,实验结果如下:
从这两个图可以看出,加上随机删减后测试集的精度在CIFAR10和CIFAR100上都有所提升了。与基础ResNet结构相比,测试集的精度大于训练集,证明网络过拟合大大下降。下面SVHN的结果更加印证了这一点,稳稳地压倒普通ResNet网络。
另一方面再看右上图,1201层的网络的性能也很不错,不仅仅没有过拟合,而且相对于152层的ResNet性能还能够继续提升,这就相当不易了。
上面展示了实验结果,那为什么有效呢?作者给出了一点解释。即这样的网络梯度更大更有效,如下图第一个卷积层的对比:
随机删减网络的梯度始终比普通ResNet更大,而且学习率下降后更加明显。
[1] Huang G, Sun Y, Liu Z, et al. Deep networks with stochastic depth[C]//European conference on computer vision. Springer, Cham, 2016: 646-661.
Stochstic depth网络本质上可以看作是多个网络的集成,与Dropout等技术一样在训练时结构发生变化,能提高模型的表达能力。
2 测试时变化的网络结构
上面说了训练时发生变化的网络,那有没有测试时也发生动态变化的网络呢?
有三AI知识星球-网络结构1000变
BranchyNet
通常来说模型训练完之后结构就是固定的,测试时图片沿着固定的通路进行计算。然而测试样本本身有不同的难度,简单的样本只需要少量的计算量就可以完成任务,困难的样本则需要更多的计算量。BranchyNet就可以根据不同难度的图片,使用不同的计算通路,从而使计算更加高效。
作者/编辑 言有三
如上图所示,它在正常网络通道上包含了多个旁路分支,这样的思想是基于观察到随着网络的加深,表征能力越来越强,大部分简单的图片可以在较浅层时学习到足以识别的特征,如上图中的Exit 1通道。一些更难的样本需要进一步的学习,如上图中的Exit 2通道,而只有极少数样本需要整个网络,如Exit3通道。这样的思想可以实现精度和计算量的平衡,对于大部分样本,可以用更小的计算量完成任务。
那么如何判断是否可以提前结束呢?在提出该网络的论文中,作者采用分类信息熵,一旦该通道的分类信息熵低于某一个阈值,说明已经以很高的置信度获得了分类的结果,直到最终的通道。
在训练的时候,每一个通道都会对损失有贡献,越靠近浅层的网络权重越大。多通道的损失不仅增强了梯度信息,也在一定程度上实现了正则化。
将BranchyNet的设计思想用于LeNet,AlexNet,ResNet结构后,在维持性能的前提下,加速效果明显。
对于拥有N个分支的网络,需要的就是N-1个阈值,因为最后一个分支不需要阈值。
LeNet系列网络可以让超过90%的样本在第一个分支提前终止,AlexNet提前终止样本比例也超过一半,ResNet提前终止样本比例超过了40%。
[1] Teerapittayanon S, McDanel B, Kung H T. Branchynet: Fast inference via early exiting from deep neural networks[C]//2016 23rd International Conference on Pattern Recognition (ICPR). IEEE, 2016: 2464-2469.
更多相关内容请大家移步有三AI知识星球。
3 关于有三AI知识星球