VGGNet vs ResNet:机器学习中的梯度消失问题
你能解释一下VGGNet和ResNet的区别吗?这是人工智能和机器学习领域的一个常见面试问题。虽然答案可以在网上找到,但一直还没能找到一个简明扼要的答案。我们将从什么是VGGNet开始,然后看看VGGNet遇到了什么问题,以及ResNet如何解决它。
VGGNet
VGG代表Visual Geometry Group(牛津大学的一组研究人员开发了这个架构)。VGG架构由块组成,每个块由2D卷积和最大池化层组成。VGGNet有两种形式,即VGG16和VGG19,其中的16和19分别表示它们各自的层数。VGGNet架构如下图所示:
在卷积神经网络(CNN)中,随着层数的增加,机器学习模型拟合更复杂函数的能力也随之增加。因此,层数越多越好(不要与人工神经网络相混淆,因为人工神经网络并不一定会随着隐层数的增加而提供更好的性能)。现在,我们可以来讨论一下为什么不使用VGG20、VGG50或VGG100等。
我们知道,神经网络的权重更新使用了反向传播算法。反向传播算法对每个权值做一个小的改变,使得机器学习模型的损失减小。这是怎么发生的呢?它会更新每一个权重,以使其在减少损失的方向上迈出一步。这个方向就是这个权重(相对于损失)的梯度。
利用链式法则,我们可以找到每个权重的梯度。通过神经元的梯度流如下图所示:
问题来了。当这个梯度一直向后到达初始层时,这个值不断乘以每个局部梯度。因此,梯度变得越来越小,这就使得对初始层的更新非常小,这样大大增加了训练时间。
如果局部梯度以某种方式变为1,来看看是否能够解决我们的问题。
我们来看看ResNet(Residual Network)。
ResNet
局部梯度如何才能为1,即哪个函数的导数始终为1呢? 恒等函数(Identity function)!解决消失梯度问题背后的数学如下图所示:
因此,当该梯度进行反向传播时,其值不会减小,因为局部梯度为1。
ResNet体系结构现在对于如何避免梯度消失的问题应该是很有意义的。ResNet代表残差网络,其架构如下:
这些skip connections允许梯度不受阻碍地进行传播。现在你可以理解为什么ResNet具有像ResNet50、ResNet101和ResNet152这样的版本了。