吴恩达神经网络和深度学习-学习笔记-35-残差网络(Residual Network)

非常非常深的网络是很难训练的,因为存在梯度消失和梯度爆炸的问题。
ResNet用到了跳远连接,使得它可以从某一网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层。这让ResNet可以训练很深很深的网络。

残差块(residual block)

ResNet是由残差块构建的
在这里插入图片描述
以一个简单的神经网络为例,正常一层一层地计算前向传播的路径称为主路径(main path)。表现为上图中的蓝色路径,计算式为PPT上的印刷体

在残差网络有一点变化,我们直接将a[l]向后拷贝到神经网络的深层,称为捷径(short cut)或跳远连接(skip connection),表现为上图中的紫色路径。
a[l]的信息直接到达神经网络的深层,不再沿着主路径传递。表现在计算式上就是划掉最后一个式子,用手写的那个式子代替。
在手写的式子中,加上的a[l]产生了一个残差块。

对于直接到某一层的跳远连接:
在这里插入图片描述
实际上是在进行ReLU非线性激活之前加上的,而对应层的每一个节点都执行了线性函数和ReLU非线性激活,所以a[l]插入的时机是在线性激活之后,ReLU激活之前

残差网络(Residual Network)与普通网络(plain net)的对比

在这里插入图片描述
将一个普通的神经网络(plain network)加上跳远连接(在这里是每两层一个捷径,这两层构成一个残差块),然后将各个残差块连在一起(这里是5个残差块连在一起),构成一个残差网络。

如果我们使用标准优化算法训练一个普通网络(没有额外的残差的捷径),凭经验你会发现随着网络深度的加深,训练错误先会减少,然后增多。
而理论上,随着网络深度的加深,应该训练的越来越好才对。

但是对于没有残差的普通网络来说,深度越深意味着用优化算法越难训练(实际上,随着网络深度的加深,训练错误会越来越多)。

而有了残差网络(Residual Network),即使网络再深,训练的错误也会kind of keep on going down(就算是达到100层也不例外)。

对x的激活或中间的激活,能够达到网络的更深层,这种方法确实有助于解决梯度消失和爆炸的问题,让我们在加深网络的深度的同时保证良好的性能。

残差网络为什么有用?

一个网络深度越深,它在训练集上训练网络的效率就会有所减弱(这也是有时候我们不希望加深网络的原因)。

但在用到ResNet的时候并不完全如此。
在这里插入图片描述

但是有“ResNet的效率并不逊色于更简单的神经网络,因为学习恒等函数对它来说很简单” 和 “给大型神经网络增加两层,不论是把残差块添加到神经网络的中间还是末端位置,都不会影响网络的表现”

残差网络起作用的主要原因就是:
这些残差块学习恒等函数非常容易,你能确定网络性能不会收到影响,很多时候甚至可以提高效率(或者说至少不会降低网络效率)。

关于残差网络,另一个值得探讨的细节是:
在这里插入图片描述
假设z[l+2]和a[l]有相同的维度,所以ResNet使用了很多same padding的卷积,来使得z[l+2]和a[l]维度相同。

但若z[l+2]和a[l]维度不同,则需要引如Ws来进行维度变换
在这里插入图片描述

残差网络用于图像的实例

在这里插入图片描述
对于plain net,输入为图片,最后加上Softmax。

在plain net加上跳远连接,就形成了ResNet。
ResNet中有很多3×3卷积,而且大多数都是same padding,and that’s why you’re adding your equal dimension feature vectors(因为都是same padding的卷积,所以维度得以保留,使得z[l+2]和a[l]维度相同),所以这些都是卷积层而不是全连接层。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值