经典分类CNN模型系列其九:Resnet v2

介绍

Resnet模型可谓是CNN分类模型中效果最效、应用最广泛、在业界最为成功的深度学习模型之一。
它出道以来有许多的变形。像最初论文中提出的Resnet v1,后来由Torch framework实现中改良过的Resnet v1.5,以及今天在这篇博文里将要详细描述的Resnet v2。

Resnet v1

对于Resnet v1,大家应该不陌生。区区也曾在此系列的一篇博文中有详细讲述过它(可见经典分类CNN模型系列其四:Resnet)。
当然在处理不同类型数据集(如CIFAR10或Imagenet)时,它一般会有两种不同的类型表示。如下图所示,分别为用于处理CIFAR10与Imagenet的Resnet v1中所用的Residual模块。

不同的Resnet_v1_残差模块

可以看同它们的主要差别在于处理Imagenet这种较复杂case时,为了计算量减省考虑,而引入了1x1 conv的bottleneck模块。

Resnet v1.5

Data scientist在实用Torch来实现Resnet v1时,发现若在下采样时将原来在1x1 conv上作的工作挪到中间的3x3 conv上来进行(即使3x3 conv的步长为2),可以比原来的Resnet v1实现
得到更快、更好、更稳定的结果。当下的所谓Resnet v1实现本质上都已经是这里说的最先在Torch上实现过的Resnet v1.5。

但是因为它将下采样的工作向后推迟到了中间的3x3,因此每次训练iteration,它需要花去更多的时间,算下来整个training需要的时间其实它比原来的Resnet v1实现还要多上12%,另外其在
进行后期推理工作时也会使得整个throughput下降约6%。但为此而换来的准确率的稳定提升还是值得的。

Resnet v2

Resnet v2是Resnet v1原来那帮Microsoft的作者们进一步研究、理论分析Residual模块及它在整体网络上的结构,并对它进行大量实现论证后得到的成果。
只看其残差模块与Resnet v1中所使用的差别还是挺简单的,可见于下图。

Resnet_v2与Resnet_v1所使用的残差模块的区别及它们的不同训练表现

简言之,在Resnet v2中它将BN/ReLu这些activation操作挪到了Conv(真正的weights filter操作)之前。

如果你只是想明白Resnet v2与Resnet v1之间的区别,以便于决定去自己使用,那么看到此就已足够了,不必再向下看,多余的时间大可以去踢踢球,听听歌,读些金庸。。
(致敬94岁后含笑而逝的文化巨人,作为80后的一员,我曾读过他的每一本小说,精神曾在他塑造的武侠世界中很是享受过。)。

如果你想明白为何要这样做,并想学习下别人是如何针对具体问题是如何理论上分析,并不断设计改进的模型进行实验的,那么可以接着向下读。

Identity mapping函数的最优选择

Identity mapping理论上的优势

首先先上来一串与残差模块相关的一串公式吧。

下面公式1,2表示了典型的残差模块概念。yl为l层elementwise sum后的输出,xl为此层的输入,F(xl, Wt)为残差处理模块(就是1x1 conv -> 3x3 conv ->1x1 conv的这坨东东)。
然后xl+1表示的是第l+1层的输入,它是通过对l层的输出进行f函数变换后得到的(在Resnet v1中f为ReLu)。h为Identity mapping,在Resnet v1中直接将h(xl) = xl这样处理了。

残差计算公式1与2

如果f也是identity mapping,像h一样直接将输出等于输入,那么可得到下式3。进行递归考虑整个模型又可得到公式4。

残差计算公式3与4

基于上面公式4与backward propagation,我们可以得到此时的gradient计算公式5。

残差计算公式5

至此公式总算可以告一段落了。总结下吧。

从上面公式4与5中可以看出,在此模型下(直接将h作为identity mapping),信息可以从任一Unit向前或向后直接、透明地传输给下一Unit。

Idnetity mapping竞争对手的不堪

作者为了表明Identity mapping在Residual模块中的最优,举了许多其它的h映射函数来进行理论与实现分析,结果它们纷纷败北,无一幸免。这五个阵亡者可见于下表。

几种不同的shortcut_connections变形

下表为Identity mapping秒掉这些竞争对手的战绩。

Identity_mapping与其它Short_connections方式的结果比较

Activation函数的输用

在原来的Resnet v1中每个残差模块的elementwise sum后就会有一个ReLu activation。显然不能满足像上面分析过的那样将f作为identity mapping(直接 y = x)的需求。
为了将Elementwise sum后的ReLu去掉,作者又开始动起了脑筋。他们试着将ReLu/BN这些Activation函数的位置不断变动(考虑到让残差能够表示其功能本身需要的(-∞, +∞),同时也
努力考虑pre-activation/after-activation可能对前后Residual模块的影响),如下为几经折腾后的几种变形与所得到的实验结果。

Residual模块中Activation函数在不同位置的使用

终于他们异常欣喜地发现在将BN + ReLu放到Conv之前后,模型训练的速度加块了、精度提高了、也更容易回避overfitting的问题了。(大功告成!)

下面为Pre-activation residual unit的构造过程。

Pre-activation_Residual_unit构造过程

实验结果

不论是CIFAR10,还是Imagenet上,拥有较多层的,使用了Pre-activation residual unit的resnet v2都取得了比resnet v1(或resnet v1.5)更好的结果。

CIFAR10上的分类结果

下面可看出在Imagenet上Resnet v2即使与当时刚刚提出没多久的Inception v3相比结果也有不小优势。

Imagenet上分类的结果

参考文献

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

推荐阅读更多精彩内容