ResNet 系列 残差连接 2021-03-05

残差连接是什么

虽然普遍认为神经网络模型越深,拟合能力越好,但是由于梯度消失/爆炸等问题,在深度到达了一定程度后, 模型的表现会不升反降。
2015年的ResNet是针对模型退化现象提出来的,通过residual connection 残差连接让上百层的模型得以收敛,从而也在分类任务中达到了更高的精度,在2016年的改进版中更是达到了上千层。
其实残差结构非常简单:

左边为普通结构,右边为残差结构, 来自动手学深度学习

所谓残差连接指的就是将浅层的输出和深层的输出求和作为下一阶段的输入,这样做的结果就是本来这一层权重需要学习是一个对 xf(x)的映射。那使用残差链接以后,权重需要学习的映射变成了 从x -> f(x)-x,这样在反向传播的过程中,小损失的梯度更容易抵达浅层的神经元。其实这个和循环神经网络LSTM中控制门的原理也是一样的。

其实残差连接可以看成一种特殊的跳跃连接,15年还有一篇Highway高速公路神经网络使用了类似的结构,但是在旁路中设置了可训练参数,效果没有ResNet好,似乎就验证了保持旁路畅通无阻的重要性。

实现起来也非常简单:

    # Pytorch 官方实现
    # https://github.com/pytorch/vision/blob/master/torchvision/models/resnet.py
    identity = x

    out = self.conv1(x)
    out = self.bn1(out)
    out = self.relu(out)

    out = self.conv2(out)
    out = self.bn2(out)
    out = self.relu(out)

    out = self.conv3(out)
    out = self.bn3(out)

    if self.downsample is not None:
        identity = self.downsample(x)

    out += identity  # 与输入求和
    out = self.relu(out)
resnet v1, 虚线位置通道数加倍,特征图减半
ResNetV2改动了BN和激活位置
ResNetV2对不同的短接方式进行了实验

wide Resnet 增加了通道数,使用了dropout技术

而ResNet的整体模型结构借鉴了VGG的模块式搭建,比较重要的区别是使用了Batch Normalization 批量正则化。

残差连接为什么有用

作者原文中提出的假设是当梯度接近零时,比起让参数直接拟合一个恒等映射,将残差函数逼近到0更容易,那么短接的这一路可不可以再给他加些花样(参数)呢? 那其实就是更广泛意义上的跳跃连接, 对此的研究其实由来已久, 被大家用来解决梯度消失,爆炸的问题,有学者起了一个形象的名字高速公路网络, 因为这样的结构使得特定信息可以无损地通过"高速公路"直达目的地。但是Highway 网络的表现并不如ResNet, 似乎说明了保持高速公路的畅通无阻(恒等映射)更加有用。

把残差网络展开, 相当与集成ensemble了多个神经网络, 从另一个角度解释了为什么残差网络有效

关于残差网络高效的原因有另外一篇论文Residual Networks Behave Like Ensembles of Relatively Shallow Networks提出了一种补充观点: 残差网络可以看成多个神经网络地集成, 其实到一定深度的层数是不必要的,因为恒等映射它们并没有做出什么贡献。

从这个实验结果可以看到删除VGG中的任意一层,模型表现下降明显,而残差网络却基本不变。

这个现象似乎说明,其实残差网络其实也不能说是解决了模型深度的问题,他只是因为隐含了集成神经网络的结构,所以即使在某些神经元失效时,仍然可以保证模型的整体效果

残差网络

2015 Deep Residual Learning for Image Recognition
推出了50,101,152层的版本。
2016 Identity Mappings in Deep Residual Networks
推出了1000层的版本。
2017 Aggregated Residual Transformations for Deep Neural Networks
感觉加深已经到尽头了, 开始在对模块进行加宽。

ResNeXt

ResNeXt有101和152,结合ResNet堆叠思想和inception的split、transform、aggregate思想,引入分组卷积。

ResNeXt保留了VGG和ResNet用重复模块构建模型的策略,同一个block共享一组相同的超参数,每当特征图被下采样到1/2时,block的宽度将会乘2.


输入被分成D个维度加权求和,

同时借鉴了Inception系列 split-transform-merge 分离变换再融合的思想,在精度提高的同时,计算量却没有增加。其实ResNet可以看成分成两路的神经网络,其中一路是恒等映射。


ResNet 对比 ResNeXt, 将模块分成了不同的路径

增加 cardinality(势, 表示集合的大小) 可以提高模型的表现。

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

推荐阅读更多精彩内容