1700538600
1700538601
1700538602
1700538603
图9.21 ImageNet竞赛历年冠军采用的模型和对应的效果
1700538604
1700538605
知识点
1700538606
1700538607
线性代数,深度学习
1700538608
1700538609
问题 ResNet的提出背景和核心理论是什么?
1700538610
1700538611
难度:★★★☆☆
1700538612
1700538613
分析与解答
1700538614
1700538615
ResNet的提出背景是解决或缓解深层的神经网络训练中的梯度消失问题。假设有一个L层的深度神经网络,如果我们在上面加入一层,直观来讲得到的L+1层深度神经网络的效果应该至少不会比L层的差。因为我们简单地设最后一层为前一层的拷贝(用一个恒等映射即可实现),并且其他层维持原来的参数即可。然而在进行反向传播时,我们很难找到这种形式的解。实际上,通过实验发现,层数更深的神经网络反而会具有更大的训练误差。在CIFAR-10数据集上的一个结果如图9.22所示,56层的网络反而比20层的网络训练误差更大,这很大程度上归结于深度神经网络的梯度消失问题[21]。
1700538616
1700538617
1700538618
1700538619
1700538620
图9.22 20层网络和56层网络在CIFAR-10数据集上的训练误差和测试误差
1700538621
1700538622
为了解释梯度消失问题是如何产生的。回顾第3节推导出的误差传播公式
1700538623
1700538624
1700538625
1700538626
1700538627
(9.43)
1700538628
1700538629
将式(9.31)再展开一层,可以得到
1700538630
1700538631
1700538632
1700538633
1700538634
(9.44)
1700538635
1700538636
1700538637
1700538638
1700538639
1700538640
1700538641
1700538642
可以看到误差传播可以写成参数、以及导数、连乘的形式。当误差由第L层(记为)传播到除输入以外的第一个隐含层(记为)的时候,会涉及非常多的参数和导数的连乘,这时误差很容易产生消失或者膨胀,影响对该层参数的正确学习。因此深度神经网络的拟合和泛化能力较差,有时甚至不如浅层的神经网络模型精度更高。
1700538643
1700538644
1700538645
1700538646
ResNet通过调整网络结构来解决上述问题。首先考虑两层神经网络的简单叠加(见图9.23(a)),这时输入x经过两个网络层的变换得到H(x),激活函数采用ReLU。反向传播时,梯度将涉及两层参数的交叉相乘,可能会在离输入近的网络层中产生梯度消失的现象。ResNet把网络结构调整为,既然离输入近的神经网络层较难训练,那么我们可以将它短接到更靠近输出的层,如图9.23(b)所示。输入x经过两个神经网络的变换得到F(x),同时也短接到两层之后,最后这个包含两层的神经网络模块输出H(x)=F(x)+x。这样一来,F(x)被设计为只需要拟合输入x与目标输出的残差,残差网络的名称也因此而来。如果某一层的输出已经较好的拟合了期望结果,那么多加入一层不会使得模型变得更差,因为该层的输出将直接被短接到两层之后,相当于直接学习了一个恒等映射,而跳过的两层只需要拟合上层输出和目标之间的残差即可。
1700538647
1700538648
1700538649
[
上一页 ]
[ :1.7005386e+09 ]
[
下一页 ]