深度神经网络训练问题与解决方法

释放双眼,带上耳机,听听看~!
探讨深度神经网络训练中梯度消失和梯度爆炸等问题,介绍残差学习框架的解决方法。

论文的背景与贡献

问题与背景

深度神经网络训练问题与解决方法
摘要前三句开门见山,第一,深的神经网络很难训练;第二,提出一个残差学习框架ResNet;然后进一步解释,通过将神经网络的层拟合成一个基于输入的残差函数,而非像传统一样直接通过学习一个无参考函数(unreferenced function)。

由上我们很想知道:

1️⃣ 神经网络是不是越深越好?

2️⃣ 为什么更深的神经网络更难去训练?

3️⃣ 残差学习框架为什么能够解决深网络训练的问题?

神经网络是不是越深越好?

前提是:神经网络的深度有什么用?

深度神经网络训练问题与解决方法
首先,更深可以更好地拟合特征,其次就是将大任务拆分成小任务,每一层做的事情更容易。对于深度卷积网络,在一定程度上越深,提取出来的特征越多,表达抽象的能力越强。

Vanishing/exploding gradients problem

臭名昭著的“vanishing or exploding gradients”

深度神经网络训练问题与解决方法
这张图简单展示了,网络的加深确实会带来性能的增强。但是看实验也知道7层和8层之间就没有多大区别了。问题可能就是梯度消失或者爆炸。

yi=σ(zi)=σ(wixi+bi)∂C∂b1=∂C∂y4σ′(z4)w4σ′(z3)w3σ′(z2)w2σ′(z1)y_i=sigma (z_i)=sigma (w_ix_i+b_i) newline frac{partial C}{partial b_1}= frac{partial C}{partial y_4}sigma ‘(z_4)w_4sigma ‘(z_3)w_3sigma ‘(z_2)w_2sigma ‘(z_1)

梯度问题的核心在于损失函数计算的误差,通过求导的链式法则反向传播,举个例子,首先确定一个激活函数,然后从C出发依次往前求导,从最后的解析式可以看出,关键在于初始化网络权值以及损失函数的导数值大小。如果这两个东西乘积的绝对值比1小,网络越深整个梯度会以指数形式衰减直至梯度消失,反之则会指数爆炸。当然,解决这个问题的思路,就是选一个好的激活函数或者是改变权值。

🚩事实上,从AlexNet开始,神经网络中就使用ReLU函数替换了Sigmoid,同时BN(Batch Normalization)层的加入,也基本解决了梯度消失/爆炸问题。(待会要讲的残差模块,其实也就是用了ReLU作为激活函数)

Degradation problem<层数越多越难以优化>

深度神经网络训练问题与解决方法
本文解决的问题主要是退化问题,degradation problem,也就是随着网络更深,精度过饱和之后会迅速退化。举个例子,就是过拟合中训练误差很小但是测试误差很大退化则是训练误差变大并且测试误差也很大

深度神经网络训练问题与解决方法
这张图就是个典型例子。按照道理来讲,56层网络的前20层的结构完全是从这里的20-layers参数copy过来的,后续加入恒等映射层,在这种情况下,我们不要求更好但至少要同等效果。但实际上出现了退化

就是我们甚至不要求,去优化深网络,能够保持这个恒等映射发挥恒等的作用从而避免深层网络的效果不升反降的退化现象发生,这就是我们的目标。

主要贡献

深度神经网络训练问题与解决方法

ResNet方法框架

残差思想

深度神经网络训练问题与解决方法

首先,拟合函数或残差函数都是由SGD算法得到的,平坦网络中F(x)需要将多个非线性层拟合成为期望得到的H(x),事实证明这件事情做不到。在ResNet网络中,拟合函数是残差函数即F(x)=H(X)-x,至于x直接由输入端建立Shortcut Connection传递到输出端,汇合成所需要的H(x)。

残差块

深度神经网络训练问题与解决方法
借鉴刚才的残差思想,以2层为例子,通过2层非线性网络拟合残差函数F(x),再通过外围的x identity,这是一个没有添加任何额外参数的恒等映射,也就是shortcut。

这里的relu就是非线性激活函数,+号表示elment-wise addition是逐元素相乘,要求参与运算的两个对象尺寸相同

深度神经网络训练问题与解决方法

残差学习只是一个框架,应用可以很灵活。论文这个图,右边是一种有bottleneck结构,分别有3类卷积层,用于先降维再升维,能够降低计算复杂度,下方文字也显示是用在50、101层以及152层上面,比较深的网络中。另一种没有瓶颈结构的,是“basic block”。

网络架构

深度神经网络训练问题与解决方法

深度神经网络训练问题与解决方法

实验部分

在ImageNet上平坦网络与ResNet对比

深度神经网络训练问题与解决方法

深度神经网络训练问题与解决方法
对于Plain Net,深层网络误差大于浅层网络;而对于ResNet,深层网络误差小于浅层网络。除此之外,很明显看出残差连接的有效性能。

在CIFAR-10上平坦网络与ResNet对比

深度神经网络训练问题与解决方法
该工作在CIFAR-10数据集上统计了平坦网络和残差网络的3×3卷积输出的标准差,从图中可以看出残差网络的输出标准差会小于平坦网络。(刚开始我们目的是为了做一个恒等映射,现在发现残差连接反而可以进一步训练优化神网络模型)

比较不同配置的ResNet

深度神经网络训练问题与解决方法

分类任务的实验

深度神经网络训练问题与解决方法
Highway networks也是使用了带门函数的shortcut但是是需要参数的(与ResNet不同),当门函数的shortcut关闭后可以相当于没有了残差函数。

在CIFAR-10上做分类任务时,比较精彩的点有:

1、Highway networks的层数从19升到32,错误率反而上升

2、ResNet110是该实验最好的模型网络

3、1202层有一定优化效果,但比较差

评述启发

Error face

深度神经网络训练问题与解决方法

基于2018年11月 《Visualizing the Loss Landscape of Neural Nets》

1、ResNet-20加不加Shortcut其实问题不是差很大

2、ResNet-56(no short)迅速恶化变得极其不光滑,添加了快捷连接之后这个梯度效果就很不错

hypothesis

深度神经网络训练问题与解决方法

improve

Based on 何恺明 2016/6 《Identity Mappings in Deep Residual Networks

深度神经网络训练问题与解决方法

深度神经网络训练问题与解决方法

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

FinalMLP: An Enhanced Two-Stream MLP Model for CTR Prediction

2023-12-13 16:58:14

AI教程

AutoML Tables: 实现模型优化和性能提升的利器

2023-12-13 17:12:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索