resnet原始结果无法复现?大神何恺明的经典之作受到了网友质疑,不过何恺明本人现身解答之后,让真理越辩越明。
大神何恺明受到了质疑。
今天,reddit上一位用户对何恺明的resnet提出质疑,他认为:
何恺明2015年的原始残差网络的结果没有被复现,甚至何恺明本人也没有。
网友称,他没有发现任何一篇论文复现了原始resnet网络的结果,或与原始残差网络论文的结果进行比较,并且所有的论文报告的数字都比原始论文的更差。
论文中报告的top1错误率的结果如下:
resnet-50 @ 20.74
resnet - 101 @ 19.87
resnet - 152 @ 19.38
何恺明等人在2015年提出resnet之后,resnet很快成为计算机视觉最流行的架构之一,这篇论文已经被引用了超过20000次。
不过,网友称,densenet(https://arxiv.org/abs/1608.06993,3000+引用)和wideresnets(https://arxiv.org/abs/1605.07146,~1000引用)都没有使用这个结果。甚至在何恺明最近的一篇论文中,也没有使用这个结果。
按理说,何恺明这篇论文应该是这个领域被引用最多的论文之一,原始resnet的结果真的没有被复现出来吗?在继续讨论之前,让我们先来回顾一下resnet的思想,以及它之所以强大的原因。
重新审视resnet:计算机视觉最流行的架构之一
2015年,resnet大大吸引了人们的眼球。实际上,早在ilsvrc2012分类竞赛中,alexnet取得胜利,深度残差网络(deepresidualnetwork)就成为过去几年中计算机视觉和深度学习领域最具突破性的工作。resnet使得训练深达数百甚至数千层的网络成为可能,而且性能仍然优异。
由于其表征能力强,resnet在图像分类任务之外的许多计算机视觉应用上也取得了巨大的性能提升,例如对象检测和人脸识别。
自2015年以来,许多研究对resnet架构进行了调整和改进。其中最著名的一些resnet变体包括:
何恺明等人提出的resnext
康奈尔大学、清华大学和facebook联合提出的densenet
谷歌mobilenet
孙剑团队shufflenet
颜水成团队的双通道网络dpn
最近南开大学、牛津大学等提出的 res2net
……
那么resnet 的核心思想是什么呢?
根据泛逼近定理(universalapproximationtheorem),如果给定足够的容量,一个单层的前馈网络就足以表示任何函数。但是,这个层可能是非常大的,而且网络容易过拟合数据。因此,研究界有一个共同的趋势,就是网络架构需要更深。
从alexnet的提出以来,state-of-theart的cnn架构都是越来越深。虽然alexnet只有5层卷积层,但后来的vgg网络和googlenet分别有19层和22层。
但是,如果只是简单地将层堆叠在一起,增加网络的深度并不会起太大作用。这是由于难搞的梯度消失(vanishinggradient)问题,深层的网络很难训练。因为梯度反向传播到前一层,重复相乘可能使梯度无穷小。结果就是,随着网络的层数更深,其性能趋于饱和,甚至开始迅速下降。
网络深度增加导致性能下降
在resnet之前,已经出现好几种处理梯度消失问题的方法,例如,2015年c.szegedy等人提出的googlenet在中间层增加一个辅助损失(auxiliaryloss)作为额外的监督,但遗憾的是,没有一个方法能够真正解决这个问题。
resnet的核心思想是引入一个“恒等捷径连接”(identityshortcutconnection),直接跳过一层或多层,如下图所示:
一个残差块
何恺明等人于2015年发表的论文《用于图像识别的深度残差学习》(deepresiduallearningforimagerecognition)中,认为堆叠的层不应该降低网络的性能,因为我们可以简单地在当前网络上堆叠identity映射(层不处理任何事情),并且所得到的架构性能不变。这表明,较深的模型所产生的训练误差不应比较浅的模型的误差更高。作者假设让堆叠的层拟合一个残差映射(residualmapping)要比让它们直接拟合所需的底层映射更容易。上面的残差块(residualblock)显然仍让它做到这点。
resnet 的架构
那么这次质疑“不能复现”的结果是什么呢?讨论点集中在原始论文中的表3和表4:
表3:imagenet验证集上10-crop测试的错误率
表4:imagenet验证集上sigle-model的错误率结果
由于其结果优异,resnet迅速成为各种计算机视觉任务最流行的架构之一。
新智元昨天发表的文章《对 resnet 本质的一些思考》,对resnet做了较深入的探讨。作者表示:
不得不赞叹kaiminghe的天才,resnet这东西,描述起来固然简单,但是对它的理解每深一层,就会愈发发现它的精妙及优雅,从数学上解释起来非常简洁,非常令人信服,而且直切传统痛点。
resnet本质上就干了一件事:降低数据中信息的冗余度。
具体说来,就是对非冗余信息采用了线性激活(通过skipconnection获得无冗余的identity部分),然后对冗余信息采用了非线性激活(通过relu对identity之外的其余部分进行信息提取/过滤,提取出的有用信息即是残差)。
其中,提取 identity 这一步,就是 resnet 思想的核心。
何恺明回应resnet结果不能复现
再回到文章开头的讨论:原始resnet的结果真的无法复现吗?
针对网友的质疑,不少人在帖子下回复,可以总结为两个方面:
imagenet有多种测试策略,后来的论文在复现imagenet时采用的是当时流行的策略,而非resnet原始论文的策略;
后来的论文在训练时采用了一些与原始论文不同的优化技巧,使得结果甚至比原始resnet 论文的结果更好
何恺明本人也第一时间作出回复:
imagenet上有几种测试策略:(i)single-scale,single-crop测试;(ii)single-scale,multi-crop或fully-convolutional测试;(iii)multi-scale,multi-crop或fully-convolutional测试;(iv)多个模型集成。
在这些设置下,这篇论文的resnet-50模型的top-1错误率为:(i)24.7%(1-crop,如我的githubrepo所展示),(ii)22.85%(10-crop,论文中的表3),(iii)20.74%(full-conv,multi-scale,论文中的table4)。论文中使用的(ii)和(iii)的描述见第3.4节。
当时是2015年,(ii)和(iii)是最流行的评估设置。策略(ii)是alexnet的默认值(10-crop),(ii)和(iii)是overfeat、vgg和googlenet中常用的设置。single-crop测试在当时并不常用。
2015/2016年后,single-crop测试开始流行。这在一定程度上是因为社区已经变成一个对网络精度的差异很感兴趣的环境(因此single-crop足以提供这些差异)。
resnet是近年来被复现得最多的架构之一。在我的githubrepo中发布的resnet-50模型是第一次训练的resnet-50,尽管如此,它仍然十分强大,并且在今天的许多计算机视觉任务中仍然是预训练的骨干。我认为,resnet的可复现性经受住了时间的考验。
reddit用户ajmooch指出:
你忘记了测试时数据增强(test-timeaugmentation,tta)。表4中的数字来自于不同scales的multi-crop的平均预测(以计算时间为代价优化精度),而其他论文中的数字是single-crop的。
表3列出了10-crop测试的数据。表4的数字更好,所以它肯定不是singlecrop的数字。我的猜测是n-crop,可能还包括其他增强,比如翻转图像。
这个帖子读起来有点像指责,我不喜欢。resnet因为在imagenet测试集上表现出色而著名,而imagenet测试集隐藏在服务器上,他们没有办法在那里处理这些数字。resnet是我能想到的被复现最多的架构之一。它显然是合理的。在开始批评别人之前,我们应该先了解我们在批评什么。
谷歌大脑工程师hardmaru也回复道:
在何恺明加入fair之前,fairtorch-7团队独立复现了resnet:https://github.com/facebook/fb.resnet.torch
经过训练的resnet18、34、50、101、152和200模型,可供下载。我们包括了使用自定义数据集,对图像进行分类并获得模型的top5预测,以及使用预训练的模型提取图像特征的说明。
他们的结果如下表:
经过训练的模型比原始resnet模型获得了更好的错误率。
但是,考虑到:
这个实现与resnet论文在以下几个方面有所不同:
规模扩大(scaleaugmentation):我们使用了goolenet中的的规模和长宽比,而不是resnet论文中的scaleaugmentation。我们发现这样的验证错误更好。
颜色增强(coloraugmentation):除了在resnet论文中使用的alexnet风格的颜色增强外,我们还使用了andrewhoward提出的的亮度失真(photometricdistortions)。
权重衰减(weightdecay):我们将权重衰减应用于所有权重和偏差,而不仅仅是卷积层的权重。
stridedconvolution:当使用瓶颈架构时,我们在3x3卷积中使用stride2,而不是在第一个1x1卷积。
何恺明的github有caffe模型训练的原始版本和更新版本的resnet,而且报告的也不同:
(https://github.com/kaiminghe/deep-residual-networks/blob/master/readme.md)
也许他的github报告中的方法与论文不一致,但为了可重复性而不使用相同的方法也有点奇怪。
也许arxiv或repo应该使用一致的数字进行更新,或者更好的是,使用多次独立运行的平均值。
但是随着sota的改进和该领域的发展,其他人花费资源来产生旧的结果的动机就更少了。人们宁愿使用他们的资源来复现当前的sota或尝试其他新想法。
许多人引用它是因为它的概念本身,而不是为了报告排行榜分数。
Σ ADC中有关噪声的十大问题
分析锂电池电解液技术的发展趋势
如何在NVIDIA Jetson平台创建多摄像头管道
高质量单身男女的七夕小确幸,就是TCL这块巨幕智屏
赭曲霉毒素快速检测仪的参数
ResNet原始结果无法复现?大神何恺明受到了质疑
未来的智能电视都可以通过语音进行控制
GB38031电池安全标准里面5分钟的热失控预警和逃生时间
“5G新赛道” 全球5G物联网南山推介会在上海举行
中国电信加速推进产业转型升级,助力长三角数字经济新业态模式发展
选择用佳能手机照片打印机pv-123印美,生活更加炫彩夺丽
荣耀畅玩8C评测 好不好用
运放CLC1001的运用
工业智能网关BL110应用之十三: 如何配置软件连接
一加9相机详情曝光:有三颗后置摄像头
谷歌和AMD帮助台积电测试和验证3D堆栈封装技术,有望成为首批客户
RFID技术下的应急仓储管理系统解决方案
蔚来发布2020年未经审计的业绩财报
数字货币领导权有多重要
GTX650和GTX650ti有什么区别及两者区别大吗