resnet(残差网络)的F(x)究竟长什么样子?

论坛 期权论坛 期权     
匿名用户1024   2022-2-9 13:52   14751   5
想弄明白resnet的机制,看了不少网络资源,都提到“H(X)= F(X)+X。H映射计算复杂,F(X)计算相对简单,所以加深网络是OK的”。。。H(X)知道是什么,两个隐藏层节点多的话训练复杂也可以理解。但是没有那篇资料详细写过F(X)长啥样子?多少参数?为何它会比H(X)参数少?然后,resnet的shortcut为何是 输入的X,不是X/2或者其他什么东西?(有资料提到输入的X最适的话F直接等于0即可,方便)
分享到 :
0 人收藏

5 个回复

倒序浏览
2#
有关回应  16级独孤 | 2022-2-9 13:53:00
更新下
关于为什么要学习恒等映射,出发点是深层网络在训练集(即不考虑过拟合)上弱于浅层网络,这是不合理的,因为浅层网络的解空间理论上只是深层网络的一个子集,多的层做恒等映射即可。这说明优化过程出了问题,我们没有找到这个更合理的解。因此我们显式修改网络结构,加入残差通路,让网络更容易学习到恒等映射。结果发现,这种改进后,深层网络不仅能做到不差于浅层网络,还能超出不少。
resnet最初的想法是在训练集上,深层网络不应该比浅层网络差,因为只需要深层网络多的那些层做恒等映射就简化为了浅层网络。所以从学习恒等映射这点出发,考虑到网络要学习一个F(x)=x的映射比学习F(x)=0的映射更难,所以可以把网络结构设计成H(x) = F(x) + x,这样就即完成了恒等映射的学习,又降低了学习难度。这里的x是残差结构的输入,F是该层网络学习的映射,H是整个残差结构的输出。
3#
有关回应  16级独孤 | 2022-2-9 13:53:01
反对最高票答主 @theone ,反向传播是在完成一次前向传播之后进行的,每层的输出都已经在前向传播的时候算出来了,哪儿有什么“输出变化”,更何况网络的输出是输入和各种中间层决定的结果,权重变了输出才能变,不是先让输出从 5.1 变到 5.2,再根据这个调整权重。


关于为什么是
不是
  kaiming 的 paper 里面就有提到了。。戳这篇 ,大概意思是假如不是
  而是
的话梯度里会有一项
,就是从输出到当前层之间经过的 shortcut 上的所有
  相乘,假如
都大于 1 那经过多层之后就会爆炸,都小于 1 就会趋向于 0 而变得和没有 shortcut 一样了(具体自行看 paper 我只是复述了一遍)
4#
有关回应  16级独孤 | 2022-2-9 13:53:02
对于shortcut的形式, @大缺弦 的答案很对。当初没有好好看论文,看来还需要提高姿势水平。
简单来说,残差网络效果好,很大程度上依赖于残差连接回传的梯度缓解梯度消失等问题,所以只能取x,实验结果也佐证了这一点。
第一次答题,请多指教Orz。
对于resnet,可以参考Kaiming大神的两篇论文。
[1] K. He, X. Zhang, S. Ren, and J. Sun, “Deep Residual Learning for Image Recognition,” http://Arxiv.Org, vol. 7, no. 3, pp. 171–180, 2015.
[2] K. He, X. Zhang, S. Ren, and J. Sun, “Identity Mappings in Deep Residual Networks Importance of Identity Skip Connections Usage of Activation Function Analysis of Pre-activation Structure,” no. 1, pp. 1–15, 2016.


  • kaiming大神在[1]中提出了残差结构。之前的答主有提到,resnet的提出是为了解决深层网络优化的问题,如果深层网络的后面那些层是恒等映射,那么模型就退化为一个浅层网络。残差结构的输出表示为F(x) + x,相比于用多个堆叠的非线性层直接去学习恒等映射F(x) = x,残差结构直接学习F(x) = 0使得训练更容易些。



  • 至于F(x)长什么样,这个问题不是特别理解。我觉得模型的训练,就是根据一个训练集数据(某个函数加入噪声后的采样)更好地拟合该函数。如果知道了这个函数长什么样,那就不用训练啦。另外,如果真的知道H(x)是什么样,那F(x)就是 H(x) - x 好了。


  • 至于为何shortcut的输入时X,而不是X/2或是其他形式。kaiming大神的另一篇文章[2]中探讨了这个问题,对以下6种结构的残差结构进行实验比较,shortcut是X/2的就是第二种,结果发现还是第一种效果好啊。

5#
有关回应  16级独孤 | 2022-2-9 13:53:03
我觉得戴头盔的答主回答的很在点子上。
我就简单补充一点,为什么同一映射 I(x)=x 这一项前的系数为1而不是1/2。
  • 一方面,实践发现机器学习要拟合的(target function)函数 f(x) 经常是很接近同一映射函数的。
  • 另一方面,神经网络权值的初始值往往在 0 附近。
因此,以同一映射函数为初始函数,用其他神经网络做微调,相当于赢在了起跑线上。
形象但是松散一点描述就是,经验表明要拟合的函数接近一根直线,于是就用一根直线加一些微小的折线们叠加来拟合。如果只用直线,就成了线性分类/回归,细节难把握;而只用微小的折线们,要优化的路很长,并且还容易过拟合。
有篇文章 [1] 仔细分析了残差网络背后的原理,简单的说就是大量的(exponential)不同长度的神经网络组成的组合函数(ensemble)。
为什么简单补充一点就写了这么多。。。有什么再继续交流吧。对了,要想比较好的理解,最好找个好点的教程,自己动手运行一下代码。然后你会发现,就加了几行代码就拿了IMAGENET的冠军,简直赞啊!
[1] Christian Szegedy, Sergey Ioffe, and Vincent Vanhoucke. Inception-v4, inception-resnet and the impact of residual connections on learning. arXiv preprint arXiv:1602.07261, 2016.
6#
有关回应  16级独孤 | 2022-2-9 13:53:04
F是求和前网络映射,H是从输入到求和后的网络映射。
比如把5映射到5.1,
那么引入残差前是F'(5)=5.1,
引入残差后是H(5)=5.1, H(5)=F(5)+5, F(5)=0.1。
这里的F'和F都表示网络参数映射,引入残差后的映射对输出的变化更敏感。比如原来是从5.1到5.2,映射F'的输出增加了1/51=2%,而对于残差结构从5.1到5.2,映射F是从0.1到0.2,增加了100%。明显后者输出变化对权重的调整作用更大,所以效果更好。
残差的思想都是去掉相同的主体部分,从而突出微小的变化,看到残差网络我第一反应就是差分放大器...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:136515
帖子:27303
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP