首页 > 编程知识 正文

深度残差神经网络代码,残差神经网络的优点

时间:2023-05-06 15:55:49 阅读:248923 作者:3630

大家好,继续理论学习,今天学习了何凯明大神的又一力作,残差神经网络。

我们知道,网络层数越深,其表达能力越强,但之前人们并不敢把网络设计的太深,因为会有梯度衰减等各种问题让网络的性能大幅度下滑,用一些正则化,RELU等激活函数也不能完全避免。但有了残差网络,人们可以把网络的层数设计的很深,比如几百层。其基本思想如下:

在传统的平网络(Plain Network)中,一层的网络的数据来源只能是前一层网络,数据一层一层向下流。对于卷积神经网络来说,每一层在通过卷积核后都会产生一种类似有损压缩的效果,可想而知在有损压缩到一定程度以后,分不清楚原本清晰可辨的两张照片并不是什么意外的事情。这种行为叫有损压缩其实并不合适,实际在工程上我们称之为降采样(Downsampling)——就是在向量通过网络的过程中经过一些滤波器(filters)的处理,产生的效果就是让输入向量在通过降采样处理后具有更小的尺寸,在卷积网络中常见的就是卷积层和池化层,这两者都可以充当降采样的功能属性。主要目的是为了避免过拟合,以及有一定的减少运算量的副作用。在深度残差网络中,结构出现了比较明显的变化。

简单说就是前面层的较为“清晰”一些的向量数据会和后面被进一步“有损压缩”过的数据共同作为后面的数据输入。而对比之前没有加过这个“短路”设计的平网络来说,缺少这部分数据的参考,本身是一种信息缺失丢失的现象本质。本来一个由2层网络组成的映射关系我们可以称之为F(x)的这样一个期望函数来拟合,而现在我们期望用H(x)=F(x)+x来拟合,这本身就引入了更为丰富的参考信息或者说更为丰富的维度(特征值)。这样网络就可以学到更为丰富的内容。

这样一来,我们就可以得到一种全新的残差结构单元,如下图所示。可以看到,残差单元的输出由多个卷积层级联的输出和输入元素间相加(保证卷积层输出和输入元素维度相同),再经过ReLU激活后得到。将这种结构级联起来,就得到了残差网络。

可以知道残差网络有如下特点:

1. 网络较瘦,控制了参数数量

2. 存在明显层级,特征图个数逐层递进,保证输出特征表达能力

3. 使用了较少的池化层,大量使用降采样,提高传播效率

4. 没有使用Dropout,利用BN和全局平均池化进行正则化,加快了训练速度

#以上总结参考了风雨兼程的知乎回答。

如下图中计算可以得到,在前向传播中,残差输出表达式是某一层的输入xl和F(x)的累加,而普通神经网络的表达式是一个累乘表达式。

因此在反向传播中,可以看到残差网络的梯度是累加而传统网络的梯度是累乘,也就是累乘造成了不可避免地梯度消失,因此残差网络可以说避免了梯度消失的根源。

残差网络解决了极深网络的梯度问题,让极深网络成为了可能,现在正在大量应用于目标检测等领域。

学习了,我们下期见!

内存泄露导致Android中setVisibility()失效怎么解决tiktok0播放怎么办-tiktok播放量低怎么办Python和Excel完美结合的常用操作方法是什么

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。