他解决了层数越多越难训练的问题。(如果一个复杂的模型训练效果不是很好的话,可以将其变成一个简单的模型,使模型不会过度复杂化)

        他提出好的网络不是通过将网络堆积在一起而成的,当网络很深的时候梯度会爆炸,解决办法是初始化权重的时候不要太大也不要太小,或者在中间添加一些BN层。

        网络越来越深导致精准度越来越差并不是因为模型变复杂导致的过拟合因为她的训练误差和测试误差都很高

        以20层网络为例,已经训练好的20层加上14层identity mapping正常情况下精准度是不应该变差的,可实际上再SGD中并不能并不能实现。因此本文的目的是想一个办法使你构造出的14层identity mapping 不会使深的网络比浅的网络更差

        他解决了层数越多越难训练的问题。(如果一个复杂的模型训练效果不是很好的话,可以将其变成一个简单的模型,使模型不会过度复杂化)

        他提出好的网络不是通过将网络堆积在一起而成的,当网络很深的时候梯度会爆炸,解决办法是初始化权重的时候不要太大也不要太小,或者在中间添加一些BN层。

        网络越来越深导致精准度越来越差并不是因为模型变复杂导致的过拟合因为她的训练误差和测试误差都很高

        以20层网络为例,已经训练好的20层加上14层identity mapping正常情况下精准度是不应该变差的,可实际上再SGD中并不能并不能实现。因此本文的目的是想一个办法使你构造出的14层identity mapping 不会使深的网络比浅的网络更差

resnet 优化 resnet效果不好_神经网络

        核心思想:x是原来训练好的参数,我们现在想要学习H(x),不用ResNet的话,模型会直接学习H(x),但ResNet会学习F(x),F(x)=H(x)-x,即ResNet学习的是学习的与真实的差距,也可以理解为ResNet在学习模型与真实值之间的差距。原始做法是不断优化H(x),而ResNet是不断优化F(x)即学习与真实之间的差距,最终输出的是F(x)+x,即根据identity mapping的思想,x不变,而差距越来越小,因此网络越深不会导致训练结果越来越差。

残差连接处理输入和输出不等的情况:

        1)在输入和输出加上额外的零,从而使两张图片分辨率相同。

        2)通过1*1的卷积层进行,它在空间维度上不做任何的事情但是能改变通道维度数,通过1*1卷积层,让输出通道是输入通道的两倍,这样就可以通过使用残差连接的输入和输出对上。因为让输出通道数变为输入通道的两倍的话,一般高和宽都会变成原来的一半,因此会用到步长为2。

        卷积层的浮点运算等于输入的高乘宽乘通道数乘输出通道数乘输出的高乘输出的宽乘全连接

 Bottleneck 瓶颈层

一般在深度较深的网络中使用(ResNet 101) 

resnet 优化 resnet效果不好_resnet_02

         左侧是正常的,右侧是使用bottleneck,先用1*1卷积层将通道数减少到64,再用与左侧相同的3*3 64个通道的卷积进行运算,最后再用1*1卷积层将通道数增回256。

这样做的目的:虽然右侧的通道数是左侧的4倍,但他俩的算法复杂度类似了。

resnet 优化 resnet效果不好_机器学习_03

 其中50-layer相较于34-layer,就是增加了bottleneck。

回顾本文做总结:

1)为什么ResNet会使模型训练很快?因为在误差反传过程中的梯度问题上,他解决了传统做法的梯度消失问题。比如

传统做法:

resnet 优化 resnet效果不好_resnet_04

        这里的g(x)代表原来的小网络,f(g(x))表示g(x)网络又经过了f()这层网络,因此αf(g(x))/αx就代表计算梯度问题。因为随着网络的加深,公式右侧累乘的公式数量会一直增多,但由于求导都是在0-1之间的数,所以会出现越乘越小的趋势,因此到后来会出现梯度消失的情况,也就会导致训练很慢训练不动的情况。

ResNet:

resnet 优化 resnet效果不好_深度学习_05

        由于ResNet是相加的关系。因此右侧公式中总会偏左侧方框内的值与传统做法相同都会随着层数的变深从而值越来越小进而梯度消失,但偏右侧的值却无论在多少层的时候都不会梯度消失,因此ResNet才不会出现梯度消失问题,也正如此,它训练的速度才会如此之快。

2)为什么图片

resnet 优化 resnet效果不好_resnet_06

中会有断崖式下降?因为有断崖式下降的地方,他都是通过学习率*0.5导致的。

3)为什么在CIFAR这种小数据集中使用ResNet不会过拟合?虽然ResNet会使参数变多,但是使用ResNet后会使模型的复杂度降低,因此不会过拟合。

4)最终的模型:

resnet 优化 resnet效果不好_resnet_07