论文地址:Deep Residual Learning for Image Recognition
ResNet中提出了一种残差网络(Redisual Network)能够使网络层次加深之后还能够有效训练
假设F(x)为之前两个卷积操作得到的输出,现在我们使用一个捷径,把x直接加到F(x)上进行训练,也就是时候我们得到的输出为H(x)=F(x)+x,这么做的作用引用知乎的一段
F是求和前网络映射,H是从输入到求和后的网络映射。
比如把5映射到5.1,
那么引入残差前是F'(5)=5.1,
引入残差后是H(5)=5.1, H(5)=F(5)+5, F(5)=0.1。
这里的F'和F都表示网络参数映射,引入残差后的映射对输出的变化更敏感。比如原来是从5.1到5.2,映射F'的输出增加了1/51=2%,而对于残差结构从5.1到5.2,映射F是从0.1到0.2,增加了100%。明显后者输出变化对权重的调整作用更大,所以效果更好。
残差的思想都是去掉相同的主体部分,从而突出微小的变化,看到残差网络我第一反应就是差分放大器...
作者:theone链接:https://www.zhihu.com/question/53224378/answer/159102095来源:知乎
然后实际上这种shortcut分为两种,一种是实线(也就是输入输出的通道数相同),一种是虚线(输入输出的通道数不同),实线直接使用H(x)=F(x)+x进行训练就行,虚线需要使用W(卷积操作)调整通道数,也就是用H(x)=F(x)+Wx作为输出,如下图
本文还提出一种减少卷积参数的方法,如下图左图是两个普通的卷积层,右图为提出的减少参数的卷积层
如下图右图所示,输入为256通道的,然后先使用1*1的卷积进行降维为64通道,随后再进行一次3*3的卷积,再使用1*1的卷积升维成256通道的
使用这种方式的卷积参数为1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632
而直接使用一个256通道的3*3的卷积的参数为3x3x256x256=589824