残差网络为什么有用?Why ResNets work?

来源:Coursera吴恩达深度学习课程

残差网络(ResNets)的残差块(Residual block)这篇文章中介绍了什么是残差块,对ResNet已经有了一个大致的了解,那么为什么ResNets能有如此好的表现?这篇文章将解释其中的原因,至少可以说明,如何构建更深层次的ResNets网络的同时还不降低它们在训练集上的效率。

通常来讲,网络在训练集上表现好,才能在Hold-Out交叉验证集或dev集和测试集上有好的表现,所以至少在训练集上训练好ResNets是第一步。下面看一个例子。

有一个大型神经网络,其输入为X,假设在整个网络中使用ReLU激活函数,所以激活值都大于等于0。下面展开a^[l+2]的表达式,注意如果使用L2正则化或权重衰减,会压缩W^[l+2]的值,这里W是关键项(key term),如果假设b^[l+2]=0,等式如下:

结果表明,残差块学习这个恒等式函数并不难,跳跃连接(skip connection)使我们很容易得出a^[l+2]=a^[l]。这意味着,即使给神经网络增加了这两层,它的效率也并不逊色于更简单的神经网络,因为学习恒等函数(identity function)对它来说很简单。所以给大型的神经网络增加两层,不论是把残差块添加到神经网络的中间还是末端位置,都不会影响网络的表现。想象一下,如果这些隐藏层单元学到一些有用信息,那么它可能比学习恒等函数表现得更好。

Andrew认为残差网络起作用的主要原因就是这些残差块学习恒等函数非常容易,能确定网络性能不会受到影响,很多时候甚至可以提高效率,或者说至少不会降低网络的效率,因此创建类似残差网络可以提升网络性能。

另一个值得探讨的细节是,假设z^[l+2]和a^[l]具有相同纬度,所以ResNets使用了许多same卷积(same convolutions)。(如上图红色标记)如果输入和输出有不同纬度,例如输入是128,输出是256,需要进行padding,使用0填充。

最后看看ResNets的图片识别,图片来源何凯明等人的论文。

第一行是一个普通网络,给它输入一张图片,它有多个卷积层,最后输出了一个Softmax。

第二行,添加跳跃连接(skip connection),普通网络转化为ResNets。注意几个细节,这个网络有很多层3×3卷积,而且它们大多都是same卷积,这就是添加等维特征向量(equal dimension feature vectors)的原因。所以这些都是卷积层,而不是全连接层,因为它们是same卷积。当然也会有池化层或类池化层。普通网络和ResNets网络常用的结构是:卷积层-卷积层-卷积层-池化层-卷积层-卷积层-卷积层-池化层……依此重复。直到最后,有一个通过softmax进行预测的全连接层。以上就是ResNets的内容。

说明:记录学习笔记,如果错误欢迎指正!转载请联系我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值