本文是接着上一篇
目录
残差网络
1 堆叠多层卷积
理论上 ,深层的网络效果不会比浅层网络差, 因为深层网络的前几层理论可以学习到一个 输入等于输出的映射 ,然后后几层 等于浅层网络 , 则效果至少相同。层数越深,性能反而越差。 反向传播路径太长, 训练难度 增加。
右侧的实验结果表明实际上
深层的网络效果反而更差
,且训练集的效果也很差,
说明不是过拟合。
2 残差网络结构:用来解决深层网络训练难度过大的问题
加入残差之后,我们只需要将第二次卷积的结果和原始的输入两者加起来,然后带入一个激活函数,这样的话,我们的残差网络结构就可以实现了。
◼ 残差网络的实现
- 若卷积后的结果与输入X的shape不同, 则不能直接相加;
- 当步长不为1,图片大小发生变化 (padding不随步长改变的情况);
- 当通道数与输入通道不同,图片通道数发生变化;
- 使用一个1x1的卷积核来改变X的shape形状,使得能与卷积后的结果shape相匹配;
◼ 残差模型实验结果
- 在训练集上Loss持续下降,准确率持续上升,说明模型有一定的学习能力;
- 在测试集上的效果较差,且波动明显,可能是lr过大,或者模型泛化能力差;
- 由于当前卷积只有三层,只是残差操作的一个演示,所以效果并不理想,实际上在浅层网络上一般也不直接使用残差网络;
在设计网络进行实验的过程中,如果发现网络比较深,那么可以考虑加入残差网络试试效果会不会好一点。
- 模型在训练集上持续训练损失最终降到接近0,准确率也达到了100%,说明模型的容量是足够的;
- 在测试集上,Loss在第50轮附近持续上升,而此时训练集的Loss还在持续下降,说明发生了过拟合现象;
- 最终在此参数下ResNet-18在测试集上能达到的平均准确率为86.85%;
◼ 残差模型与同等深度卷积的对比
- 卷积为红色与绿色曲线,残差为黄色和蓝色曲线
- 可以看到在深层模型下,无论是Loss还是准确率,普通卷积的曲线(红色)比残差的曲
线(黄色)在训练后期的波动更大,说明残差网络的加入确实可以帮助模型更好的训练