AI之路-记残差网络ResNet学习

前阵子学习残差网络ResNet,这里整理一下我对论文的几点理解,备忘。

1、论文解决了什么问题?

传统方法期望通过增加网络宽度、增加更多层,更多参数来简单粗暴的直接学习(逼近)目标函数。自从神经网络在很多领域,尤其是图像识别领域取得一定成效后,研究人员像着了魔一样爱上了这种技术,它虽不那么容易从数学理论上阐释其强大表达能力但又确实在实践中取得了令人兴奋的结果。然而,当研究人员带着兴奋去试图不断加深网络以获得更好的结果时却事与愿违,他们发现随着网络的加深会导致训练过程无法收敛,效果甚至也越来越差,这个结果或许并不令人惊奇,因为此时并没有人证实网络加深就一定会取得好的结果,只不过这种慵懒的网络堆叠尝试的失败还是让人们意识到,当前的网络结构还有明显不足亟需被更新和推进。《论文》顺应了需要,完成了这个更新!

2、论文如何解决这个问题?

通过改变学习目标,将传统网络学习中直接学习(逼近)目标函数的方式改为学习每一层网络的残差。这一微妙变化具有重大意义。神经网络是层次结构,输入经过每层之后输出各不相同,理想情况下,每层的输出都在向目标输出逼近,每层的输出都是前一层的输出(作为本层的输入)作一个变换的结果,为了清晰的“看清”层与层之间产生的微妙差异,是不是有可能从结构上将(每一层的)输出显式表示为上一层的输出加上一个变化量。这大概就是原论文中的H(x)=F(x)+x的意义。H(x)代表输出(期望逼近的最终的目标函数),将这个输出从结构上看作是两部分的叠加:一部分直接是上一层的输出(实际会作一些简单的变换,先这么简单理解),另一部分是本层产生的变化量。这样层与层之间就很清晰,不仅能明确看到这么一个变化量带来的差别,而且显式的设定了当前层的网络参数学习的目标:要学习的就是这么个变化量(即残差,第一部分的x作为一个整体直接带到下边去不用参与学习训练),而不是像之前那样每层的参数都要去全量的直接拟合输出。也正如此,ResNet网络中的层也叫残差层,这些层的参数只负责学习残差。

这么做为什么能解决问题?记住我们的原始问题是:希望网络层数加深仍能很好的训练,即不让模型变坏。我们想象一下,按照这种残差的层次模型结构,在当前的结构上如果添加一个残差层时模型变坏了意味着什么?意味着这个残差层将本已经很好的结果(即上一层的输出结果)带偏了,即残差项偏离了0很多(正的较多或负的较多),这种情况可能存在吗?试想一下,用一个输入x去拟合他自身的结果一定会让尝试拟合它的残差项参数趋近于0,即不会偏离很多。基于此,大体可以得知,如果前面层的优化结果已经很好,那么后续添加的残差项参数会比较小,带来的优化效果或许不会很明显,但注意这个优化至少不会让模型变差,可是如果当前面层的优化效果还不够好时,通过多堆叠一些残差层就有可能让模型变得更好,事实也确实如此!

自然界事物千差万别,种类繁多,使得机器学习解决自然界物体识别问题(模式的发掘与学习)极其复杂,按神经网络的学习思路,所有模型的构建,本质上就是一个有结构、有层次的大量的超参数权值的学习机,没有一种模型可以在性能和精度上通吃一切,任何一个真正的机器学习问题都没有最优解只有更优解,设计什么样的网络,能尽可能减少参数,加快训练速度,提高训练精度需要不断探索,大自然更深一层的模式学习奥秘仍然等着揭示。

3) 待续


附几篇总结博客:

https://blog.csdn.net/lanran2/article/details/79057994

https://blog.csdn.net/mao_feng/article/details/52734438

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值