Google Inception模型:为什么会有多个softmax?

机器算法验证 深度学习 卷积神经网络
2022-02-09 14:03:12

Google Inception 模型的拓扑可以在这里找到:Google Inception Netowrk

我注意到这个模型中有 3 个 softmax 层(#154,#152,#145),其中 2 个是这个模型的某种早期逃逸。

据我所知,softmax层是用于最终输出的,为什么会有这么多呢?其他2层的目的是什么?

2个回答

简短回答:深度架构,特别是 GoogLeNet(22 层)在训练(反向传播算法)期间存在梯度消失问题的危险。GoogLeNet 的工程师也通过在中间层添加分类器来解决这个问题,使得最终损失是中间损失和最终损失的组合。这就是为什么你会看到总共三个损失层,不像通常的单层作为网络的最后一层。

更长的答案:在经典机器学习中,特征工程和分类之间通常存在区别。神经网络以其“端到端”解决问题的能力而闻名,即它们结合了学习数据表示和训练分类器的阶段。因此,您可以将具有标准架构(例如,AlexNet)的神经网络视为由“表示学习”阶段(从前到最后的层)和“分类”阶段组成,正如预期的那样,包括一个损失函数。

在创建更深的网络时,会出现一个被称为“梯度消失”的问题。它实际上并不特定于神经网络。而不是任何基于梯度的学习方法。它不是那么微不足道,因此值得为自己做一个适当的解释;请参阅此处以获得很好的参考。直观地说,随着我们深入网络,您可以考虑梯度携带的信息越来越少,这当然是一个主要问题,因为我们仅根据梯度调整网络的参数(权重),使用“反向支持” “ 算法。

GoogLeNet 的开发者是如何处理这个问题的?他们认识到,不仅最终层的特征携带了所有的区分信息:中间特征也能够区分不同的标签;而且,最重要的是,它们的值更“可靠”,因为它们是从梯度携带更多信息的早期层中提取的。基于这种直觉,他们在两个中间层中添加了“辅助分类器”。这就是您在问题中提到的网络中间“早期逃逸”损失层的原因。

总损失是这三个损失层的组合。我引用原始文章:

这些分类器采用较小的卷积网络形式,置于 Inception (4a) 和 (4d) 模块的输出之上。在训练期间,它们的损失以折扣权重添加到网络的总损失中(辅助分类器的损失权重为 0.3)。在推理时,这些辅助网络被丢弃。

视觉上:

在此处输入图像描述

除了@galoosh33 的回答:在我看来,辅助分类器使用与最终输出分类器相同的标签。资料来源: https ://pdfs.semanticscholar.org/0b99/d677883883584d9a328f6f2d54738363997a.pdf 中的幻灯片 34

以前,我想知道这些辅助分类器是否使用了其他类型的标签(例如,只是狗而不是西伯利亚哈士奇)。