上一次修改时间:2018-08-17 01:56:53

深度残差网络ResNet

  1. 深度残差网络

    image.png

    Alex、VGG、GoogleNet网络层数对比图

    image.png

    注:AlexNet、VGG、GoogleNet网络一个效果比一个好,且网络层数一个比一个深,但深度网络并不是越深越好,下图为CIFAR-10图片识别库下,网络结构相似,但网络层数不同的网络的测试结果

    image.png

    image.png

    CIFAR-10和CIFAR-100是两小型的图片识别训练库,CIFAR-10有10个分类,CIFAR-100有100个分类;

    www.cs.toronto.edu/~kriz/cifar.html

    image.png

    注:上图中,左边为传统的卷积神经网络,右边的带有捷径的卷积神积网络;传统神经网络中,输出的结果为输入的数据经过神经网络后的结果,而带捷径的卷积神经网络中,输出结果为输入结果经过卷积神经网络之后的结果F(x),再加上不经过卷积神经网的原始数据x

    image.png

    image.png

    image.png

    image.png

    注:1)VGG网络的结构说明:1-为了保持经过卷积层后图片的大小,在经过卷积层后,会往小图片的外围补上多圈的0;2-为了保持数据的复杂度,每经过一个池化层输出数据变小后,会对应的增加卷积和的数量;3-会让数据经过多个采样大小及卷积和一样的卷积层

    2)上图中三个模型中,颜色相同的区域处理的图像大小相同,方框中conv后面的数字为卷积和的大小

    3)带捷径的卷积神经网络(上图中最右边的网络)中,输入x可以传入到网络中的任何一层

    4)传统的卷积神经网络里,判断图片分类的决策层使用的都是经过多层神经网络后产生的高层特征,而带捷径的神经网络使用的是低层、中层、高层混合后的特征

    5)上图中,虚线表示卷积和增加

    6)VGG网络训练需要19.6亿次浮点运算,而在图中,中间和右边的残差网络都只需要3.6亿次浮点运算,因此相对来说,VGG网络比残差网络要复杂

    几种不同层数的残差网络的对比图

    image.png

    注:image.png中,3*3,64表示一层卷积神经网络,两个3*3,64的神经网络组成了一个块,这样的块总共有2个;计算网络层数时,输入层和池化层不算入层数,18-layer里,每个块都是2层,总共有16层,加上最上面的一个卷积层和最下面的一个输出层,总共18层

    传统的卷积神经网络和残差网络的误差对比图

    image.png

    注:传统的神经网络里,网络的层数增加后,误差反而变大了,而残差网络,随机网络层数的增加,误差会减小

    下图为CIFAR-10数据的测试结果对比图:

    image.png

    注:残差网络层数达到1202层(1202层的网络没有用dropout等防止过拟合的方法)后,测试误差反而比110层的要高(110层和1202层的训练误差差不多),这可能是过拟合造成的,CIFAR-10数据集的训练图片只有50000张,随着网络层数的加深,需要训练的参数也随着增加,要训练的参数过多,且训练数据相对较少时,就会产生过拟合

  2. 批量正则化

    image.png

    image.png

    注:SGD是随机梯度下降;BN的思想是,如下图,在神经网络的训练中,需要训练的参数随着训练的进行,会向着两端偏移(下图中的sigmoid函数中,会向着0和1的方向偏移),这样学习的梯度就会减小,导致整个网络的收敛速度变慢,使用BN后,通过正则化的方法,会将训练参数的分布从比较偏的分布拉回标准的分布,即将参数的值从函数两端学习梯度较小的区域拉回到学习梯度较大的区域,从而加快神经网络的收敛速度

    image.png

    image.png

    image.png

    注:上图公式中W为权值矩阵,U为上一层输出,b为偏置值

    image.png

    image.png

    注:scale和shift是用来控制学习梯度偏离线性区域,当学习梯度处于线性区域时,不能描绘出较复杂的边界,因此处理不了较为复杂的问题

    image.png

    image.png

    注:BN是加在激活函数之前的,即先加BN后,再经过激活函数

    image.png

    image.png

    image.png

  3. 残差网络的补充说明

    下图为残差网络中加入dropout,或者对可以通过捷径传到任意层的数据x乘以某个常数的结果(还有其它条件),从结果上看,误差最低的还是恒等映射,即x直接传到任意层,不经过任何变换

    image.png

    image.png

    注:改变残差网络中,BN、块以及激函数的位置,也能影响到误差,如上图中,b示例的误差就比a示例的要小

    下图为残差网络中,各种结构下的误差对比图:

    image.png