【算法类】【算法介绍】deepCNNs之基于深度利用的模型:Highway,ResNet,Inception-V3/V4,Inception-ResNet,ResNext,densenet

1、Highway Networks

1.1 为什么要引入Highway Networks?

我们知道,在深度神经网络中,网络层数是至关重要的,更深的网络层可以达到更好的效果。但是当网络加深时,容易出现学习困难的现象,常见的就是梯度消失/梯度爆炸。

1.2 什么是梯度消失/梯度爆炸?

在更新参数的时候,前面的层正常更新,后面的层不进行更新了。
举个例子:
在这里插入图片描述
假设我们有一个深度神经网络,其中隐藏层为4个。我们可以写出每一个节点的公式:
C=sigmoid(W_4*H_3 +b_4)

H_3=sigmoid(W_3*H_2 +b_3)

H_2=sigmoid(W_2*H_1 +b_2)

H_1=sigmoid(W_1*x +b_1)

若是对w1求导,可以得到:
在这里插入图片描述
我们知道,f(x) = sigmoid(x),f’(x) = sigmoid(x)(1 - sigmoid(x))。sigmoid(x)会将函数映射到0-1之间的一个数字,所以上述公式得到的结果会是几个0-1之间的数相乘,会导致在更新参数w1时参数几乎不会更新,会产生梯度消失的现象。
那什么是梯度爆炸呢,其实同理,就是导数结果是一个大于1的数,经过很多层的相乘,会得到一个非常大的一个更新结果,叫做梯度爆炸

1.3 解决办法:highway networks

Highway Netowrks是允许信息高速无阻碍的通过各层,它是从Long Short Term Memory(LSTM) recurrent networks中的gate机制受到启发,可以让信息无阻碍的通过许多层,达到训练深层神经网络的效果,使深层神经网络不在仅仅具有浅层神经网络的效果。

普通神经网络的激活流程是:
在这里插入图片描述
对于Highway Networks,增加了两个非线性转换层,T(transform gate) 和 C(carry gate),T表示输入信息被转换的部分,C表示的是原始信息x保留的部分 ,其中 T=sigmoid(wx + b)
在这里插入图片描述
为了计算方便,这里定义了 C = 1 - T
在这里插入图片描述
需要注意的是x, y, H, T的维度必须一致,几个公式相比,公式3要比公式1灵活的多,可以考虑一下特殊的情况,T= 0的时候,y = x,原始信息全部保留,T = 1的时候,Y = H,原始信息全部转换,不在保留原始信息,仅仅相当于一个普通的神经网络。

在这里插入图片描述
在这里插入图片描述

2、ResNet

2.1为什么要引入ResNet?

其实和highway Network一样,随着网络层数的加深,模型的误差会随着深度的增加而增加,这种情况并非过拟合,过拟合是训练集效果好,测试集效果差。但是神经网络随着深度的增加,训练集误差率逐渐增大,测试集误差率也逐渐增大,导致误差增大。所以提出了ResNet。

2.2 ResNet模型架构

在这里插入图片描述
具体模型如上图所示。
ResNet提出了两种mapping:一种叫identity mapping,指的就是上图中”弯弯的曲线”,另一种residual mapping,指的就是除了”弯弯的曲线“那部分,所以最后的输出是 y=F(x)+x 。
identity mapping顾名思义就是指本身,即x,而residual mapping指的是“差”,也就是y−x,所以残差指的就是F(x)部分。

那么为什么这种方式可以减少误差呢?

理论上,对于“随着网络加深,准确率下降”的问题,Resnet提供了两种选择方式,也就是identity mapping和residual mapping,如果网络已经到达最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。

个人理解

其实ResNet和highway Network在形式上有一些类似的地方,都是通过加入一些信息是的最终的损失函数看起来不是那么“深”(由于加入了identity mapping的缘故),借用干货 | 深度详解ResNet及其六大变体的话说就是Resnet 是highway Network的一种特例。但是本人对这块还是理解的有些模糊,准备再看一些博客进行深入的理解。

3、Inception V3/V4

V3相较于V2除了在一些参数方面的调整,最重要的是加入了“分解”,比如,将7 * 7的卷积分解为一层1 * 7 的卷积和7 * 1的卷积,这么做的好处是可以加快模型的训练,同时可以增加网络的深度。

V4主要是在模型的结构上做了一些调整,使模型看起来更加的简洁
在这里插入图片描述

4、Inception-ResNet

顾名思义,是Inception网络和ResNet网络结合使用的一种网络结构,先看下Inception-ResNet的残差部分:
在这里插入图片描述
此图为整体架构图

在这里插入图片描述

5、ResNext

下面来介绍ResNext,ResNet可以说是Inecption和VGG结合的升级版本,VGG是单纯的增加了网络的层数,而Inecption在增加层数的同时,增加了split-transform-merge的思想。但是Inecption和ResNet都有一个问题,就是可泛化性,这两个模型都对参数设置较为死板,同样的模型参数如果换到其他的数据集则表现出不好的效果,需要再次调参

而ResNext的模型泛化性就比较好,可扩展性比较强,可以认为是在增加准确率的同时基本不改变或降低模型的复杂度。

下面是ResNet和RexText的对比图
在这里插入图片描述

6、denseNet

densenet也是一种深层神经网络,以下是架构图:
在这里插入图片描述
可以看到,densenet有如下特点,即对于每一层,都与前几层输出有关。其相对于之前深度模型有如下优点:
(1) 相比ResNet拥有更少的参数数量.

(2) 旁路加强了特征的重用.

(3) 网络更易于训练,并具有一定的正则效果.

(4) 缓解了gradient vanishing和model degradation的问题.

参考

基于pytorch实现HighWay Networks之Train Deep Networks
ResNet解析
ResNeXt算法详解
DenseNet详解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章