深度残差网络(ResNet)
引言
对于传统的深度学习网络应用来说,网络越深,所能学到的东西越多。当然收敛速度也就越慢,训练时间越长,然而深度到了一定程度之后就会发现越往深学习率越低的情况,甚至在一些场景下,网络层数越深反而降低了准确率,而且很容易出现梯度消失和梯度爆炸。

这种现象并不是由于过拟合导致的,过拟合是在训练集中把模型训练的太好,但是在新的数据中表现却不尽人意的情况。从上图可以看出,我们的训练准误差和测试误差在层数增加后皆变大了,这说明当网络层数变深后,深度网络变得难以训练。
如果大家还没理解的话,那我讲细一点,网络太深,模型就会变得不敏感,不同的图片类别产生了近似的对网络的刺激效果,这时候网络均方误差的减小导致最后分类的效果往往不会太好,所以解决思路就是引入这些相似刺激的“差异性因子”。
深度残差网络(ResNet)的设计就是为了克服这种由于网络深度的加深而产生的学习率变低、准确率无法有效提升的问题。
残差块
在一个网络中(假设有五层),如果前面四层已经达到一个最优的函数,那第五层就没有必要了,理想中我们可以把第五层设计为一个y=x层的恒等映射,可以让网络随着深度的增加而不退化。但是我们的非线性网络无法毕竟恒等映射网络。
但是不退化不是我们的目的,我们希望有更好性能的网络。ResNets学习的是残差函数$F(x)=H(x)-x$,这里如果$F(x)=0$,那么就是上面提到的恒等映射。
残差块(Residual block)(也可以理解为跳跃连接)的结构如下图所示:

它有两层,我们用$\sigma$表示激活函数,如下表达式,
$$F(x)=\sigma(W_1x)$$
然后通过一个shortcut和第2个relu获得输出y
$$y=\sigma(W_2\sigma(W_1x)+x_{identity})$$
这个残差块往往需要两层以上,单单一层的残差块并不能起到提升作用。
残差网络的确解决了退化的问题,在训练集和校验集上,都证明了的更深的网络错误率越小,如下图

实际中,考虑计算的成本,对残差块做了计算优化,即将两个3x3的卷积层替换为1x1 + 3x3 + 1x1, 如下图。新结构中的中间3x3的卷积层首先在一个降维1x1卷积层下减少了计算,然后在另一个1x1的卷积层下做了还原,既保持了精度又减少了计算量。

上面是两种不同的跳跃结构,主要就是使用了不同的卷积核。左边参数要比右边的多一倍。所以当网络很深时,用右边的比较好。
残差神经网络
下图是一个普通网络

下图是一个残差网络(ResNet)


由此可见,把普通网络变成ResNet的方法就是加上跳跃连接,没两层增加一个捷径,构成一个残差块。
对于跳跃结构,当输入与输出的维度一样时,不需要做其他处理,两者相加就可,但当两者维度不同时,输入要进行变换以后去匹配输出的维度,主要经过两种方式,1)用zero-padding去增加维度,2)用1x1卷积来增加维度。
普通的神经网络,随着网络深度的加深,训练错误会越来越多。但有了ResNets就不一样了,即使网络再深,训练的表现却不错,比如说训练误差减少,这种方式确实有助于解决梯度消失和梯度爆炸问题,让我们在训练更深网络的同时,又能保证良好的性能。
深度残差网络(ResNet)的更多相关文章
- 深度残差网络——ResNet学习笔记
		
深度残差网络—ResNet总结 写于:2019.03.15—大连理工大学 论文名称:Deep Residual Learning for Image Recognition 作者:微软亚洲研究院的何凯 ...
 - 使用dlib中的深度残差网络(ResNet)实现实时人脸识别
		
opencv中提供的基于haar特征级联进行人脸检测的方法效果非常不好,本文使用dlib中提供的人脸检测方法(使用HOG特征或卷积神经网方法),并使用提供的深度残差网络(ResNet)实现实时人脸识别 ...
 - CNN卷积神经网络_深度残差网络 ResNet——解决神经网络过深反而引起误差增加的根本问题,Highway NetWork 则允许保留一定比例的原始输入 x。(这种思想在inception模型也有,例如卷积是concat并行,而不是串行)这样前面一层的信息,有一定比例可以不经过矩阵乘法和非线性变换,直接传输到下一层,仿佛一条信息高速公路,因此得名Highway Network
		
from:https://blog.csdn.net/diamonjoy_zone/article/details/70904212 环境:Win8.1 TensorFlow1.0.1 软件:Anac ...
 - 深度残差网络(DRN)ResNet网络原理
		
一说起“深度学习”,自然就联想到它非常显著的特点“深.深.深”(重要的事说三遍),通过很深层次的网络实现准确率非常高的图像识别.语音识别等能力.因此,我们自然很容易就想到:深的网络一般会比浅的网络效果 ...
 - Dual Path Networks(DPN)——一种结合了ResNet和DenseNet优势的新型卷积网络结构。深度残差网络通过残差旁支通路再利用特征,但残差通道不善于探索新特征。密集连接网络通过密集连接通路探索新特征,但有高冗余度。
		
如何评价Dual Path Networks(DPN)? 论文链接:https://arxiv.org/pdf/1707.01629v1.pdf在ImagNet-1k数据集上,浅DPN超过了最好的Re ...
 - 关于深度残差网络(Deep residual network, ResNet)
		
题外话: From <白话深度学习与TensorFlow> 深度残差网络: 深度残差网络的设计就是为了克服这种由于网络深度加深而产生的学习效率变低,准确率无法有效提升的问题(也称为网络退化 ...
 - 深度学习——手动实现残差网络ResNet  辛普森一家人物识别
		
深度学习--手动实现残差网络 辛普森一家人物识别 目标 通过深度学习,训练模型识别辛普森一家人动画中的14个角色 最终实现92%-94%的识别准确率. 数据 ResNet介绍 论文地址 https:/ ...
 - 残差网络ResNet笔记
		
发现博客园也可以支持Markdown,就把我之前写的博客搬过来了- 欢迎转载,请注明出处:http://www.cnblogs.com/alanma/p/6877166.html 下面是正文: Dee ...
 - 从头学pytorch(二十):残差网络resnet
		
残差网络ResNet resnet是何凯明大神在2015年提出的.并且获得了当年的ImageNet比赛的冠军. 残差网络具有里程碑的意义,为以后的网络设计提出了一个新的思路. googlenet的思路 ...
 
随机推荐
- 调用FileSystemObject.CopyFile发生没有权限的错误
			
作者:朱金灿 来源:http://blog.csdn.net/clever101 最近编写一个JScript,在调用FileSystemObject.CopyFile发生没有权限的错误,具体如下图: ...
 - vb.net版本房收费系统改造
			
房费制开始重建的最终版本. 前几天.刚刚看完三层的视频,在视频中具体的解说了一个登录功能.天真的我,当时以为三层结构是那么的简单,所以我草草地做完总结之后,就非常快就開始机房收费系统的重构了.但是谁想 ...
 - android自定义View绘制天气温度曲线
			
原文:android自定义View绘制天气温度曲线 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012942410/article/detail ...
 - springboot 使用日志
			
spring boot 默认使用日志打印到console 添加application.properties文件在src/main/resoures文件夹下 logging.file=my.log 将日 ...
 - WPF Datagrid with some read-only rows - Stack Overflow
			
原文:WPF Datagrid with some read-only rows - Stack Overflow up vote 21 down vote accepted I had the sa ...
 - 一个RPC的demo (good)
			
从下面的例子中可以看到,Consumer(client)的代码中引用了Provider部分的class,本例中是 com.provider.EchoServiceImpl和com.provider.E ...
 - WCF调试日志
			
WCF调试,打不了断点or远程调试时,在配置文件的<configuration>结点下面加一段,就可以在对应位置查看服务器调试日志了,远程调试完毕发送亦可! <system.diag ...
 - Android 查看Apk签名方式V1和V2
			
Android 查看Apk签名方式V1和V2 java -jar apksigner.jar verify -v my.apk -- Verifies Verified using v1 scheme ...
 - sqlserver创建接受任何类型的nvl
			
if exists ( select * from sys.objects where object_id = object_id(N'dbo.nvl') and type = N'FN') begi ...
 - ztree的树形结构不能正常显示原因
			
1.ztree树形结构不能正常显示情况如下: 2.原因之一:未给其类添加 ztree 原因二:未引用ztree的css样式 <link href="~/Content/CSS/zTre ...