残差网络(ResNet)

残差网络(ResNet),在ILSVRC 2015年取得冠军,该框架能够大大缩减简化模型训练时间,使得在可接受范围内,模型训练的更深。

在深度学习领域中,网络越深意味着拟合越强,出现过拟合问题是正常的,训练误差越来越大却是不正常的。但是,网络逐渐加深会对网络的反向传播能力提出挑战,在反向传播中每一层的梯度都是在上一层的基础上计算的,层数多会导致梯度在多层传播时越来越小,直到梯度消失,于是表现的结果就是随着层数变多,训练的误差会越来越大

残差网络通过一个叫残差连接的技术解决了这个问题。所谓的残差连接就是在标准的前馈卷积网络上加一个跳跃,从而绕过一些层的连接方式

假设,经过两个神经元之后输出的 H ( x ) H(x) 如下所示:

f(x)=relu(xw+b)
H(x)=relu(f(x)w+b)

H ( X ) H(X) x x 之间定义一个函数关系,如果这两层神经网络构成的是 H ( X ) = 2 x H(X)=2x 的关系,则残差网络的定义如下:

H(x)=relu(f(x)w+b)+x

原理

如上图所示,,ResNet中,输入层与Addition之间存在着两个连接,左侧的连接是输入层通过若干神经层之后连接到Addition,右侧的连接是输入层直接传给Addition,在反向传播的过程中误差传到Input时会得到两个误差的相加和,一个是左侧一堆网络的误差,一个是右侧直接的原始误差。左侧的误差会随着层数变深而梯度越来越小,右侧则是由Addition直接连到Input,所以还会保留着Addition的梯度。这样Input得到的相加和后的梯度就没有那么小了,可以保证接着将误差往下传。

这种方式看似解决了梯度越传越小的问题,但是残差连接在正向同样也发挥了作用。由于正向的作用,导致网络结构已经不再是深层了,而是一个并行的模型,即残差连接的作用是将网络串行改成了并行。这也可以理解为什么Inception v4结合了残差网络的原理后,却没有使用残差连接,反而做出了与Inception-ResNet v2等同的效果。

参考:
深度学习之tensorflow
https://www.cnblogs.com/xiaoboge/p/10539884.html

发布了12 篇原创文章 · 获赞 1 · 访问量 467

猜你喜欢

转载自blog.csdn.net/weixin_45562000/article/details/105058619