导航:首页 > 网络问题 > 残差网络如何评价

残差网络如何评价

发布时间:2023-02-17 15:33:19

㈠ 残差网络ResNet笔记

作者根据输入将层表示为学习 残差函数 。实验表明,残差网络更容易优化,并且能够通过增加相当的深度来提高准确率。
核心是解决了增加深度带来的副作用(退化问题),这样能够通过单纯地增加网络深度,来提高网络性能。

网络的深度为什么重要?

因为CNN能够提取low/mid/high-level的特征,网络的层数越多,意味着能够提取到不同level的特征越丰富。并且,越深的网络提取的特征越抽象,越具有语义信息。

为什么不能简单地增加网络层数?

怎么解决退化问题?

深度残差网络。如果深层网络的后面那些层是恒等映射,那么模型就退化为一个浅层网络。那现在要解决的就是学习恒等映射函数了。 但是直接让一些层去拟合一个潜在的恒等映射函数H(x) = x,比较困难,这可能就是深层网络难以训练的原因。但是,如果把网络设计为H(x) = F(x) + x,如下图。我们可以转换为学习一个残差函数F(x) = H(x) - x. 只要F(x)=0,就构成了一个恒等映射H(x) = x. 而且,拟合残差肯定更加容易。

其他的参考解释

这种残差学习结构可以通过前向神经网络+shortcut连接实现,如结构图所示。而且shortcut连接相当于简单执行了同等映射,不会产生额外的参数,也不会增加计算复杂度。 而且,整个网络可以依旧通过端到端的反向传播训练。

ImageNet上的实验证明了作者提出的加深的残差网络能够比简单叠加层生产的深度网络更容易优化,而且,因为深度的增加,结果得到了明显提升。另外在CIFAR-10数据集上相似的结果以及一系列大赛的第一名结果表明ResNet是一个通用的方法。

F(x)与x相加就是就是逐元素相加,但是如果两者维度不同,需要给x执行一个线性映射来匹配维度:

用来学习残差的网络层数应当大于1,否则退化为线性。文章实验了layers = 2或3,更多的层也是可行的。
用卷积层进行残差学习: 以上的公式表示为了简化,都是基于全连接层的,实际上当然可以用于卷积层。加法随之变为对应channel间的两个feature map逐元素相加。

key point:

key point:

㈡ 一个残差网络的简介【MATLAB】

对于许多应用来说,使用由一个简单的层序列组成的网络就已足够。但是,某些应用要求网络具有更复杂的层次图结构,其中的层可接收来自多个层的输入,也可以输出到多个层。这些类型的网络通常称为有向无环图 (DAG) 网络。残差网络就是一种 DAG 网络,其中的残差(或快捷)连接会绕过主网络层。残差连接让参数梯度可以更轻松地从输出层传播到较浅的网络层,从而能够训练更深的网络。增加网络深度可在执行更困难的任务时获得更高的准确度。

主分支 - 顺序连接的卷积层、批量归一化层和 ReLU 层。

残差连接 - 绕过主分支的卷积单元。残差连接和卷积单元的输出按元素相加。当激活区域的大小变化时,残差连接也必须包含 1×1 卷积层。残差连接让参数梯度可以更轻松地从输出层流到较浅的网络层,从而能够训练更深的网络。

首先创建网络的主分支。主分支包含五部分。

初始部分 - 包含图像输入层和带激活函数的初始卷积层。

三个卷积层阶段 - 分别具有不同的特征大小(32×32、16×16 和 8×8)。每个阶段包含 N 个卷积单元。在示例的这一部分中,N = 2。每个卷积单元包含两个带激活函数的 3×3 卷积层。netWidth 参数是网络宽度,定义为网络第一卷积层阶段中的过滤器数目。第二阶段和第三阶段中的前几个卷积单元会将空间维度下采样二分之一。为了使整个网络中每个卷积层所需的计算量大致相同,每次执行空间下采样时,都将过滤器的数量增加一倍。

最后部分 - 包含全局平均池化层、全连接层、softmax 层和分类层。

使用 convolutionalUnit(numF,stride,tag) 创建一个卷积单元。numF 是每一层中卷积过滤器的数量,stride 是该单元第一个卷积层的步幅,tag 是添加在层名称前面的字符数组。convolutionalUnit 函数在示例末尾定义。

为所有层指定唯一名称。卷积单元中的层的名称以 'SjUk' 开头,其中 j 是阶段索引,k 是该阶段内卷积单元的索引。例如,'S2U1' 表示第 2 阶段第 1 单元。

㈢ 残差网络

残差网络(Resial Network简称ResNet)是在2015年继Alexnet Googlenet VGG三个经典的CNN网络之后提出的,并在ImageNet比赛classification任务上拔得头筹,ResNet因其简单又实用的优点,现已在检测,分割,识别等领域被广泛的应用。
ResNet可以说是过去几年中计算机视觉和深度学习领域最具开创性的工作,有效的解决了随着网络的加深,出现了训练集准确率下降的问题,如下图所示:

做过深度学习的同学应该都知道,随着网络层数的增加而导致训练效果变差的一个原因是梯度弥散和梯度爆炸问题(vanishing/exploding gradients),这个问题抑制了浅层网络参数的收敛。但是这个问题已经通过一些参数初始化的技术较好的解决了,有兴趣的同学可以看参考文献中的以下几篇文章:[2][3][4][5][6]。
但是即便如此,在网络深度较高的时候(例如图中的56层网络)任然会出现效果变差的问题,我们在先前的Alexnet Googlenet VGG三个模型中可以看出,网络的深度在图片的识别中有着至关重要的作用,深度越深能自动学习到的不同层次的特征可能就越多,那到底是什么原因导致了效果变差呢?

Fig. 3
左侧19层的VGG模型的计算量是 19.6 billion FLOPs 中间是34层的普通卷积网络计算量是3.6 billion FLOPs。
右边是34层的ResNet计算量是3.6billion FLOPs,图中实线的箭头是没有维度变化的直接映射,虚线是有维度变化的映射。通过对比可以看出VGG虽然层数不多但是计算量还是很大的,后面我们可以通过实验数据看到34层的ResNet的表现会比19层的更好。

从图中可以看出在效果上,34层的残差网络比VGG和GoogleNet都要好,A,B,C三种方案中C方案效果最好,但是B,C方案在计算量上比A方案要大很多,而效果提升的又很少,所以论文作者建议还是使用A方案较为实用。
下面我们介绍层数在50及以上的残差网络的结构: Deeper Bottleneck Architectures。这种结构是作者为了降低训练时间所设计的,结构对比如下图所示:

ResNet通过残差学习解决了深度网络的退化问题,让我们可以训练出更深的网络,这称得上是深度网络的一个历史大突破吧。也许不久会有更好的方式来训练更深的网络,让我们一起期待吧!
目前,您可以在 人工智能建模平台 Mo 找到基于tensorflow 的34层的残差网络(ResNet)实现样例,数据集是CIFAR-10 (CIFAR的十分类数据集),这个样例在测试集上的精度为90%,验证集上的精度为98%。主程序在ResNet_Operator.py中,网络的Block结构在ResNet_Block.py中,训练完的模型保存在results文件夹中。
项目源码地址: http://momodel.cn/explore/5d1b0a031afd944132a0797d?type=app
参考文献:
[1] _K. He, X. Zhang, S. Ren, and J. Sun. Deep resial learning for image recognition. arXiv preprint arXiv:1512.03385,2015.
[2] Y. LeCun, L. Bottou, G. B. Orr, and K.-R.M¨uller. Efficient backprop.In Neural Networks: Tricks of the Trade, pages 9–50. Springer, 1998.
[3] X. Glorot and Y. Bengio. Understanding the difficulty of training deep feedforward neural networks. In AISTATS, 2010.
[4] A. M. Saxe, J. L. McClelland, and S. Ganguli. Exact solutions to the nonlinear dynamics of learning in deep linear neural networks.arXiv:1312.6120, 2013.
[5] K. He, X. Zhang, S. Ren, and J. Sun. Delving deep into rectifiers:Surpassing human-level performance on imagenet classification. In ICCV, 2015.
[6] S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by recing internal covariate shift. In ICML, 2015.

Mo (网址: momodel.cn )是一个支持 Python 的 人工智能在线建模平台 ,能帮助你快速开发、训练并部署模型。

Mo 人工智能俱乐部 是由网站的研发与产品设计团队发起、致力于降低人工智能开发与使用门槛的俱乐部。团队具备大数据处理分析、可视化与数据建模经验,已承担多领域智能项目,具备从底层到前端的全线设计开发能力。主要研究方向为大数据管理分析与人工智能技术,并以此来促进数据驱动的科学研究。

㈣ 残差网络(ResNet)

残差操作这一思想起源于论文《Deep Resial Learning for Image Recognition》。如果存在某个K层的网络f是当前最优的网络,那么可以构造一个更深的网络,其最后几层仅是该网络f第K层输出的恒等映射(IdentityMapping),就可以取得与f一致的结果;也许K还不是所谓“最佳层数”,那么更深的网络就可以取得更好的结果。 总而言之,与浅层网络相比,更深的网络的表现不应该更差。但是如下图所示,56层的神经网络表现明显要比20层的差。 证明更深的网络在训练过程中的难度更大,因此作者提出了残差网络的思想。+

ResNet 的作者将这些问题归结成了一个单一的假设:直接映射是难以学习的。而且他们提出了一种修正方法: 不再学习从 x 到 H(x) 的基本映射关系,而是学习这两者之间的差异,也就是“残差(resial)”。然后,为了计算 H(x),我们只需要将这个残差加到输入上即可。假设残差为 F(x)=H(x)-x,那么现在我们的网络不会直接学习 H(x) 了,而是学习 F(x)+x。

这就带来了你可能已经见过的着名 ResNet(残差网络)模块:

ResNet 的每一个“模块(block)”都由一系列层和一个“捷径(shortcut)”连接组成,这个“捷径”将该模块的输入和输出连接到了一起。然后在元素层面上执行“加法(add)”运算,如果输入和输出的大小不同,那就可以使用零填充或投射(通过 1×1 卷积)来得到匹配的大小。

回到我们的思想实验,这能大大简化我们对恒等层的构建。直觉上就能知道,比起从头开始学习一个恒等变换,学会使 F(x) 为 0 并使输出仍为 x 要容易得多。一般来说,ResNet 会给层一个“参考”点 x,以 x 为基础开始学习。

在此之前,深度神经网络常常会有梯度消失问题的困扰,因为 ResNet 的梯度信号可以直接通过捷径连接回到更早的层,而且它们的表现依然良好。

ResNet本质上就干了一件事:降低数据中信息的冗余度具体说来,就是对非冗余信息采用了线性激活(通过skip connection获得无冗余的identity部分),然后对冗余信息采用了非线性激活(通过ReLU对identity之外的其余部分进行信息提取/过滤,提取出的有用信息即是残差)。
其中,提取identity这一步,就是ResNet思想的核心。 对ResNet本质的一些思考

一方面是残差网络更好的拟合分类函数以获得更高的分类精度,另一方面是残差网络如何解决网络在层数加深时优化训练上的难题。

首先从万能近似定理(Universal Approximation Theorem)入手。这个定理表明,一个前馈神经网络(feedforward neural network)如果具有线性输出层,同时至少存在一层具有任何一种“挤压”性质的激活函数(例如logistic sigmoid激活函数)的隐藏层,那么只要给予这个网络足够数量的隐藏单元,它就可以以任意的精度来近似任何从一个有限维空间到另一个有限维空间的波莱尔可测函数(Borel Measurable Function)。
万能近似定理意味着我们在构建网络来学习什么函数的时候,我们知道一定存在一个多层感知机(Multilayer Perceptron Model,MLP)能够表示这个函数。然而,我们不能保证训练算法能够学得这个函数。因为即使多层感知机能够表示该函数,学习也可能会失败,可能的原因有两种。

第二种过拟合情况不在我们的讨论范围之内,因此我们聚焦在前一种情况,为何残差网络相比简单的多层网络能更好的拟合分类函数,即找到期望函数的参数值。
对于普通的不带短连接的神经网络来说,存在这样一个命题。

事实上对于高维函数,这一特点依然适用。因此,当函数的输入维度非常高时,这一做法就变的非常有意义。尽管在高维空间这一特点很难被可视化,但是这个理论给了一个很合理的启发,就是原则上,带短连接的网络的拟合高维函数的能力比普通连接的网络更强。这部分我们讨论了残差网络有能力拟合更高维的函数,但是在实际的训练过程中仍然可能存在各种各样的问题使得学习到最优的参数非常困难,因此下一小节讨论残差在训练过程中的优越性。

这个部分我们讨论为什么残差能够缓解深层网络的训练问题,以及探讨可能的短连接方式和我们最终选择的残差的理由。正如本章第三部分讨论的一样,整个残差卷积神经网络是由以上的残差卷积子模块堆积而成。如上一小节所定义的,假设第 层的残差卷积字子模块的映射为

㈤ ResNet网络

ResNet (Resial Neural Network,残差网络)由微软研究院何凯明等人提出的,通过在深度神经网络中加入残差单元(Resial Unit)使得训练深度比以前更加高效。ResNet在2015年的ILSVRC比赛中夺得冠军,ResNet的结构可以极快的加速超深神经网络的训练,模型准确率也有非常大的提升。

在ResNet之前,瑞士教授Schimidhuber提出了Highway Network,其原理与ResNet非常相似。通常认为神经网络的深度对其性能非常重要,但是网络越深训练越困难,Highway Network的目标就是解决极深的神经网络难以训练的问题。

Highway Network相当于修改了每一层激活函数,此前激活函数只是对输入做一次非线性变换y=H(x, Wh), 而Highway Network则允许保留一部分比例的原始输入x,即y=H(x, Wh)* T(x , Wt)+x*C(x, Wc),其中T为变换系数,C为保留系数,论文中令C=1-T。这样前面一层的信息,有一定比例可以不经过矩阵乘法和非线性变换,直接传输到下一层,仿佛一条信息高速公路,因此得名Highway Network。

结果显示,B比A略好,这是因为A中的零填充确实没有残差学习。而C比B稍好,这是由于投影快捷连接引入了额外参数。但A、B、C之间的细微差异表明投影连接对于解决退化问题不是至关重要的,而不/少使用投影连接可以减少内存/时间复杂性和模型大小。而且无参数恒等快捷连接对于瓶颈架构(3层残差学习单元)尤为重要,因为瓶颈架构中层具有较小的输入输出,快捷连接是连接到两个高维端,此时恒等快捷连接无需参数,而使用投影的话则会显示时间和模型复杂度加倍。因此,恒等快捷连接可以为瓶颈设计得到更有效的模型。

最后,作者尝试了更深的1000层以上的神经网络,发现神经网络仍然能够较好的学习,但是其测试误差比100多层的残差网络要差,而训练误差则与100多层的残差网络相似,作者认为这可能是由于过拟合导致的,可通过加大正则化来解决这一问题。

在ResNet V1中,作者研究通过加入残差单元使得训练深度达到上百层的神经网络成为可能,解决了梯度消失/爆炸的问题。而在ResNet V2中作者进一步证明了恒等映射(Identity mapping)的重要性。同时作者还提出了一种新的残差单元(采用了预激活)使得训练变得更简单,同时还提高了模型的泛化能力。

在ResNet V2中,作者提出了不止在残差单元内部,而是在整个神经网络中都创建了‘直接’的计算传播路径。在ResNet V1中,残差学习单元的

上式同样表明了在一个mini-batch中不可能出现梯度消失的现象,因为上式求导的第二部分对于一个mini-batch来说,不可能所有样本其导数都为-1,因此,可能会出现权重很小的情况,但是不会出现梯度消失的情况。

通过研究这些不同的快捷连接,作者发现大部分快捷连接方式无法很好地收敛,其中很大部分是由于使用这些快捷连接后或多或少会出现梯度消失或者梯度爆炸的现象,最后结果显示恒等映射效果最好。

虽然恒等映射在这些方法中表写结果最好,仍需引起注意的是1×1的卷积捷径连接引入了更多的参数,本应该比恒等捷径连接具有更加强大的表达能力。事实上,shortcut-only gating 和1×1的卷积涵盖了恒等捷径连接的解空间(即,他们能够以恒等捷径连接的形式进行优化)。然而,它们的训练误差比恒等捷径连接的训练误差要高得多,这表明了这些模型退化问题的原因是优化问题,而不是表达能力的问题。

在上图b中,采用先加后BN再激活的方法,此时f(x)就包含了BN和ReLU。这样的结果比原始a要差。这主要是因为BN层改变了流经快捷连接的信号,阻碍了信息的传递。

在c中,ReLU在相加之前,此时f(x)=x,为恒等映射。此时残差单元中的F(x)输出经由ReLU后变为非负,然而一个“残差”函数的输出应该是(−∞,+∞) 的。造成的结果就是,前向传递的信号是单调递增的。这会影响表达能力,结果也变得更差了。

结果显示,只使用ReLU预激活(d)的结果与原始ResNet结果很接近,这个与ReLU层不与BN层连接使用,因此无法获得BN所带来的好处。而当BN和ReLU都使用在预激活上时(e),结果得到了可观的提升。

预激活的影响有两个方面:第一,由于f(x)也是恒等映射,相比于V1优化变得更加简单;第二,在预激活中使用BN能提高模型的正则化。

对于f(x)为恒等映射的好处:一方面若使用f= ReLU,如果信号是负的时候会造成一定的影响,无法传递有用的负信号,而当残差单元很多时,这个影响将会变得尤为突出;另一方面当f是一个恒等映射时,信号在两个单元间能够很直接的传递。

在ResNet V1中作者提出了残差学习单元,并从理论和实验上证明使用直连的shortcuts有助于解决深度达到上百层的神经网络的训练问题。而在ResNet V2中作者证明了在shortcuts中使用直接映射(即H(x) = h(x) + F(x)中h(x) = x)得到的效果最好。在ResNext中作者将bottleneck拆分成多个分支,提出了神经网络中的第三个维度(另外两个维度分别为depth,神经网络层数深度,width,宽度,channel数),命名为 Cardinality ,并在多个数据集中证明了将bottleneck拆分能够降低训练错误率和提高准确率。

ResNext的灵感来源于VGG/ResNet和Inception:(1)在VGG、ResNet中,作者使用了相同结构的卷积层进行了堆叠,构建了层数很深但是结构简单的神经网络;(2)而在Inception中,提出了一种叫做 split-transform-merge 的策略,将输入(采用1x1 卷积核)分裂为几个低维 embedding,再经过一系列特定卷积层的变换,最后连接在一起。

而在ResNet中,作者将原ResNet bottleneck中的一条path拆分为多个分支(multi branch),以此分支数量提出神经网络中的第三个重要维度——Cardinality。这一想法结合了VGG中的相同结构堆叠和Inception中的split-transform-merge策略,即如上图所示,每个bottleneck 拆分为多个分支进行堆叠,这些分支的结构相同(这里借鉴了VGG的思想),而具体到分支的结构时又采用了Inception的split-transform-merge策略。与Inception不同的是Inception的每个分支结构都是需要认为的设计,而在ResNext中每个分支结构都相同。最终每个bottleneck的输出就变成了:

这些所有的bottlenecks结构都遵循两个原则:

作者提出了 三种效果相同的ResNext的表示方法,如下图所示:

其中a,b 结构相似,只是在merge这一步的地方不同,而c则借鉴了AlexNet中分组卷积的思想,将输入和输出都分为多个组。

作者首先评估权衡了cardinality和width的关系。

接着,作者又评估了使用增加cardinality和depth/width来增加模型复杂度后的效果:

最后,作者还研究了shortcuts对于ResNext的重要性,在ResNet-50中,不使用shortcuts准确率下降了7%,而在ResNext-50中准确率也下降了4%,说明shortcuts对于残差网络来说确实是非常重要的。

简言之,增加cardinality比增加depth和width效果要好,同时,shortcuts对于模型的准确率也是至关重要的。

参考:
Deep Resial Learning for Image Recognition.
Aggregated Resial Transformations for Deep Neural Networks.
Identity Mappings in Deep Resial Networks.
ResNet论文翻译——中文版
Identity Mappings in Deep Resial Networks(译)
TensorFlow实现经典卷积网络. 黄文坚,唐源

㈥ 深度残差网络是卷积网络的一种吗

深度残差网络Resnet实际上就是卷积神经网络的一种,只不过其结构比较特殊,对于非常深的网络优化的比较好

阅读全文

与残差网络如何评价相关的资料

热点内容
网络共享中心没有网卡 浏览:493
电脑无法检测到网络代理 浏览:1350
笔记本电脑一天会用多少流量 浏览:476
苹果电脑整机转移新机 浏览:1349
突然无法连接工作网络 浏览:962
联通网络怎么设置才好 浏览:1191
小区网络电脑怎么连接路由器 浏览:933
p1108打印机网络共享 浏览:1187
怎么调节台式电脑护眼 浏览:603
深圳天虹苹果电脑 浏览:841
网络总是异常断开 浏览:584
中级配置台式电脑 浏览:895
中国网络安全的战士 浏览:605
同志网站在哪里 浏览:1380
版观看完整完结免费手机在线 浏览:1432
怎样切换默认数据网络设置 浏览:1080
肯德基无线网无法访问网络 浏览:1254
光纤猫怎么连接不上网络 浏览:1377
神武3手游网络连接 浏览:938
局网打印机网络共享 浏览:975