CVPR2016:ResNet 从根本上解决深度网络退化问题

深度残差网络(Deep residual network, ResNet)的提出是CNN图像史上的一件里程碑事件,在2015年提出的时候便取得了五项第一,而何恺明大神也凭借这一paper斩获CVPR 2016 Best Paper Honorable Mention。

目录

  • 背景(深度网络的退化问题)
  • 残差结构
  • 残差结构起作用的原因
  • 网络结构
  • 实验结果
  • 论文地址

背景(深度网络的退化问题)

  • 对于卷积神经网络,深度是一个很重要的因素。深度卷积网络自然的整合了低中高不同层次的特征,特征的层次可以靠加深网络的层次来丰富。因此在构建卷积网络时,网络的深度越高,可抽取的特征层次就越丰富越抽象。所以一般我们会倾向于使用更深层次的网络结构,以便取得更高层次的特征。但是更深层的网络结构真的带来了更好的表现吗?我们看下面这张图:
    image
  • 可以看到,拥有56层数的网络结构表现明显差于拥有20层数的网络结构,造成这一现象的原因大概有:过拟合、梯度消失/爆炸和深度网络的退化,我们来一一剖析。

过拟合

  • 对于这一点答案是显然的,因为过拟合会让网络在训练集上表现得很好,而从上图我们可以看出,无论是在训练集还是测试集中,拥有更深层次的网络表现均比浅层次的网络差,那显然就不是过拟合导致的。

梯度消失/爆炸

  • 我们先简单回顾一下概念:梯度消失/爆炸是因为神经网络在反向传播的时候,反向连乘的梯度小于1(或大于1),导致连乘的次数多了之后(网络层数加深),传回首层的梯度过小甚至为0(过大甚至无穷大),这就是梯度消失/爆炸的概念。
  • 但我们知道,如今我们已经习惯加入BN层(Batch Normalize),他可以通过规整数据的分布基本解决梯度消失/爆炸的问题,所以这个问题也不是导致深层网络退化的原因。

深度网络的退化问题

  • 我们选择加深网络的层数,是希望深层的网络的表现能比浅层好,或者是希望它的表现至少和浅层网络持平(相当于直接复制浅层网络的特征),可实际的结果却让我们大吃一惊(深度网络退化),接下来我们深究一下导致深度网络退化的原因。
  1. MobileNet V2的论文中提到,由于非线性激活函数Relu的存在,每次输入到输出的过程都几乎是不可逆的,这也造成了许多不可逆的信息损失。我们试想一下,一个特征的一些有用的信息损失了,那他的表现还能做到持平吗?答案是显然的
    image
  2. 我们用一个直观的例子来感受一下深层网络与浅层网络持平的表现:


    image
  • 我们把右边的网络理解为左边浅层网络加深了三层(框起来的部分),假如我们希望右边的深层网络与左边的浅层网络持平,即是希望框起来的三层跟没加一样,也就是加的三层的输入等于输出。我们假设这三层的输入为x,输出为H(x),那么深层网络与浅层网络表现持平的直观理解即是:H(x)=x,这种让输出等于输入的方式,就是论文中提到的恒等映射(identity mapping)
  • 所以ResNet的初衷,就是让网络拥有这种恒等映射的能力,能够在加深网络的时候,至少能保证深层网络的表现至少和浅层网络持平

残差结构

  • 通过对深度网络退化问题的认识我们已经明白,要让之不退化,根本原因就是如何做到恒等映射。事实上,已有的神经网络很难拟合潜在的恒等映射函数H(x) = x。但如果把网络设计为H(x) = F(x) + x,即直接把恒等映射作为网络的一部分,就可以把问题转化为学习一个残差函数F(x) = H(x) - x.只要F(x)=0,就构成了一个恒等映射H(x) = x。 而且,拟合残差至少比拟合恒等映射容易得多(后面第三部分会解释)。我们看一下残差结构与正常结构对比图:
    image
  • 我们可以看到,残差结构比正常的结构多了右侧的曲线,这个曲线也叫作shortcut connection通过跳接在激活函数前,将上一层(或几层)的输出与本层输出相加,将求和的结果输入到激活函数作为本层的输出
  • 我们从数学的角度来看残差结构,假设残差结构的输入为x,则输出H(x)等于:H(x)=F(x,{W_i})+x
  • 其中F(x,{W_i})就是我们要学习的残差,我们把x移到等式的左侧,残差就等于H(x)-x,以上图为例,残差就是中间有一个Relu激活的双层权重,即:
    F=W_2\sigma(W1_x)
  • 其中\sigma是Relu激活函数,而W_1,W_2是指两个weight layer。

残差结构起作用的原因

  • 关于残差结构之所以work,我想这一点也是很多读者疑惑的地方,这里分四点和大家解释。
  1. 首先给大家一个我自己的理解:我觉得加了残差结构后就是给了输入x多一个选择在神经网络学习到这层的参数是冗余的时候它可以选择直接走这条“跳接”曲线,跳过这个冗余层,而不需要再去拟合参数使得输出H(x)等于x
  2. 因为学习残差的计算量比学习输出等于输入小。假设普通网络为A,残差网络为B,输入为2,输出为2(输入和输出一样是为了模拟冗余层需要恒等映射的情况),那么普通网络就是A(2)=2,而残差网络就是B(2)=F(2)+2=2,显然残差网络中的F(2)=0。我们知道网络中权重一般会初始化成0附近的数,那么我们就很容易理解,为什么让F(2)(经过权重矩阵)拟合0会比A(2)=2容易了。
  3. 我们知道ReLU能够将负数激活为0,而正数输入等于输出。这相当于过滤了负数的线性变化,让F(x)=0变得更加容易。
  4. 我们知道残差网络可以表示成H(x)=F(x)+x,这就说明了在求输出H(x)对输入x的倒数(梯度),也就是在反向传播的时候,H'(x)=F'(x)+1残差结构的这个常数1也能保证在求梯度的时候梯度不会消失

网络结构

  • 先上网络的结构图,左到右分别是VGG,没有残差的PlainNet,有残差的ResNet,我们从这张图也可以感受当年ResNet对VGG的统治力:


    image
  • 细心的读者会发现,在ResNet中有的跳接线是实线,有的跳接线是虚线。虚线的代表这些模块前后的维度不一致,因为去掉残差结构的Plain网络还是和VGG一样,也就是每隔n层进行下采样但深度翻倍(VGG通过池化层下采样ResNet通过卷积)。这里就有两个情况:
  • 空间上不一致时,需要给输入的X做一个线性的映射:H(x)=F(x,{W_i})+x -> H(x)=F(x,{W_i})+W_sx
  • 深度上不一致时,有两种解决方法,一种是在跳接过程中加一个1×1的卷积层进行升维,另一种则是直接补零(先做下采样)。试验后发现两种方法都可以。
  • 针对比较深的神经网络,作者也考虑到计算量,会先用1×1的卷积将输入的256维降到64维,然后通过1×1恢复。这样做的目的是减少参数量和计算量
    image

实验结果

  • 作者对比了18层的神经网络和34层的神经网络,发现残差结构确实解决了网络的退化问题:


    image
  • 作者还对比了在ImgaeNet上的测试结果,发现ResNet确实效果非常好:
    image

论文地址

https://arxiv.org/pdf/1512.03385.pdf

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容