【深度学习】深度残差网络ResNet

1 残差网络ResNet

1.1要解决的问题

  在传统CNN架构中,如果我们简单堆叠CNN的层数,深层CNN在训练集上面的表现反而要比浅层CNN在训练集上面的表现差的多。这明显是不合理的,因为浅层CNN很明显只是深层CNN的一个子集。
  那也就是说,深层网络并没有能够很好地学习到训练集,它甚至连过拟合都做不到。由于深层网络梯度消失的原因,导致无法对浅层的网络权重进行有效的调整。于是,ResNet做了这样的假设:在原先比较浅的网络上,训练得到较好的模型后,再在其后面添加恒等映射层,即让输入等于输出,这样就达到即增加深度,又不会增加误差的效果。

1.2 残差网络结构

  ResNet提出了残差学习的思想,通过直接将输入信息绕道传到输出,保护信息的完整性,整个网络只需要学习输入、输出差别的那一部分,简化学习目标和难度。残差网络结构如下图所示
在这里插入图片描述
  在原先的CNN架构中,神经网络输入x,输出F(x),要拟合H(x),训练目标是F(x)=H(x)。
  而在ResNet架构中,神经网络输入x,输出变为F(x)+x,要拟合的目标变为H(x)-x,训练目标是F(x)+x=H(x)-x。这里的H(x)-x就是所谓的残差
  而根据ResNet的假设,我们需要对浅层网络做恒等变化,所以我们要训练F(x)=x,但是在ResNet架构中,从学习恒等映射这一点出发,我们要拟合的目标变成了F(x)+x=x,相当于我们的目标变成了F(x)=0,这比原来的训练目标要简单的多,因为一般每层网络中的参数初始化偏向于0,这样在相比于更新该网络层的参数来学习h(x)=x,该冗余层学习F(x)=0的更新参数能够更快收敛。
  同时,这种残差结构有使得某一层的输出可以直接跨过几层,作为后面某一层的输入,最终神经网路可以达到几十层,上百层。

1.3 捷径连接

  由于ResNet实际上还是有卷积层,有卷积层就有通道的变化以及图像大小的变化。那么隐藏层的输入x经过捷径连接连接到深层隐藏层的输出F(x)后,如果F(x)和x的通道相同,则可直接相加,那么通道不同怎么处理呢?
  如果x的维度是3x3x64,F(x)的维度是3x3x128,那么计算方式就变为H(x)=F(x)+Wx,其中W是卷积操作,用于调整x的维度。但是这样的话,我们就又需要学习多一个参数W。

1.4 总结

  使用残差网络结构h(x)=F(x)+x代替原来的没有shortcut连接的h(x)=x,这样更新冗余层的参数时需要学习F(x)=0比学习h(x)=x要容易得多。并且shortcut连接的结构保证了反向传播更新参数时,很难有梯度为0的现象发生,不会导致梯度消失。因此ResNet使得我们可以学习很深的网络,对于高级抽象特征的提取和网络性能更好,也不同担心梯度消失的问题。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值