ResNet相关论文笔记
1.Deeply-Supervised Nets
网络结构如下图所示。在DSN中,每一个卷积层/全连接层后,模型都会为他们接一个旁路的全连接层,并用输出的结果和数据的真实结果做比较,计算预测结果和真实结果的误差,并将由此产生的梯度回传给前面的参数。
另外,模型中间的旁路目标函数需要降权(提升各模型层的合作能力,弱化独立能力。因为如果不降权,每一层和目标函数近距离相连,模型层会具备独立完成任务的能力),即每个目标函数在计算时加上一个权重。越靠近真正的目标函数,权重越大。
中间的目标函数设置有一个阈值(模型容忍中间目标函数存在一些小偏差),只有目标函数的损失超过了这个阈值,梯度才会被传导,如果没有超过,那么这一层模型正常。
2 Residual Networks Behave Like Ensembles of Relatively Shallow Networks
上图左边是一个残差网络结构,一个残差网络可以定义为:
其中是一个模块,它中间可能经过了卷积、batch normalization、ReLU。
右边是把左边网络展开后的结构,即多个block的运算。从这个角度来看,残差网络显式连接路径有个。它的数学表示为:
随着block不断堆叠,模型的加法特性会展现得非常明显,更多特征信息将直接传导到模型的末尾处。这个特性和传统的线性模型结构完全不同。
实际上这个结构和DSN模型思想非常相近,不过是形式不同。通过这样的设计,每一层网络都有了和最终目标函数近距离接触的机会,便于梯度传递。
3 FractalNet
提出了一种新的分形网络结构,它的提出就是为了证明Residual对于极深网络并不是必须的,它通过一种分形的结构,达到了类似于教师-学生机制、深度监督的效果,同样取得了非常好的效果。
模型机制:分形
先看左图,描述的是网络的单个模块(block)的结构。注意,这里的不是CNN中常用到的全连接层, 而是指分形次数为的模块。模块的表达式如下:
,
其中,是聚合(join)操作,本文使用均值,而并非常见的concatenation或 addition。这样做的目的实际是由于每个聚合层的输入个数可能不同,求均值可能起到类似于归一化的效果。
中间图就是一个典型的的block。把这些block堆叠起来,加上池化层和预测层,就是完整的分类网络,也就是右图。右图的例子深度是
训练机制:Drop Path
说到Drop out,可能都不陌生,一般用来使得神经元随机失活,来减少模型的过拟合。那么这个Drop Path又是个啥?其实Drop Path和Drop out很类似,只不过它不是让神经元随机失活,而是让路径随机失活。也就是说在多个不同深度的层进行联合时,模型会以一个比例随机的让某些路径的输入关闭,但最少保证有一条path能够连接输入和输出。那么这么做究竟有什么好处呢。
1. 减少过拟合
2. 强化每条路径的输出
3. 不同路径的联合,在Drop Path的机制下,起到了一种简单的教师—学生的学习方式。
第三点很重要。如果某一条路径学到了对最终分类起到非常重要的特征时,假如在某一次迭代中,该路径被关闭掉了,那么通过loss 的反向传播中,可能就会指导和该路径进行联合的另一条路径也学到这种重要的特征。那么通过模型内部的这种不断的教师—学生的学习方式,不仅可以提高整个模型的效果,并且当提取出其中的任意一条路径出来单独使用时,也能够达到非常好的效果。作者在后面也证明了,对于plain Network,在深度达到40层以上时会出现退化的问题,但是在FractalNet中完全不会,从整个模型中提出其中最深的路径来单独使用时可以达到和整个FractalNet接近的效果。
作者一共使用了两种Drop Path方式:
Local:在每一个聚合层以固定几率舍弃每个输入,但保证至少保留一个输入。
Global:在整个网络中随机只保留一条完整的路径进行学习。
4 DenseNet
见此分类下论文笔记。