可以在这里找到Google Inception模型的拓扑:Google Inception Netowrk
我注意到此模型中有3个softmax层(#154,#152,#145),其中2个是该模型的某种早期逃生。
据我所知,softmax层用于最终输出,那么为什么会有那么多?其他2层的目的是什么?
可以在这里找到Google Inception模型的拓扑:Google Inception Netowrk
我注意到此模型中有3个softmax层(#154,#152,#145),其中2个是该模型的某种早期逃生。
据我所知,softmax层用于最终输出,那么为什么会有那么多?其他2层的目的是什么?
Answers:
简短的答案:深度架构,特别是GoogLeNet(22层)在训练过程中存在梯度消失的危险(反向传播算法)。GoogLeNet的工程师也通过在中间层中添加分类器来解决此问题,从而最终损失是中间损失和最终损失的组合。这就是为什么您看到总共三个损耗层的原因,这不同于通常的单个层作为网络的最后一层。
更长的答案:在经典的机器学习中,特征工程和分类通常是有区别的。神经网络以解决“端到端”问题的能力而闻名,即它们结合了学习数据表示和训练分类器的各个阶段。因此,您可以认为具有标准体系结构(例如AlexNet)的神经网络由“表示学习”阶段(从上到下的各层)和“分类”阶段组成,该阶段按预期包括损失函数。
当创建更深的网络时,会出现一个被称为“消失梯度”的问题。实际上,它并不是神经网络特有的。而不是任何基于梯度的学习方法。它不是那么琐碎的事,因此值得对其进行适当的解释。请参阅此处以获得良好参考。凭直觉,您可以考虑随着网络越深入网络,承载信息的梯度就越少,这当然是一个主要问题,因为我们仅使用“ back-prop”就可以根据梯度来调整网络的参数(权重) ”算法。
GoogLeNet的开发人员如何处理此问题?他们认识到一个事实,不仅是最终层的要素还具有所有歧视性信息:中间要素还能够区分不同的标签;并且最重要的是,它们的值更“可靠”,因为它们是从较早的层中提取的,其中梯度携带了更多的信息。基于这种直觉,他们在两个中间层中添加了“辅助分类器”。这就是您在问题中引用的网络中间“早期逃生”损失层的原因。
然后,总损耗是这三个损耗层的组合。我引用原始文章:
这些分类器采用较小的卷积网络的形式,位于Inception(4a)和(4d)模块的输出之上。在训练过程中,他们的损失会以折扣权重添加到网络的总损失中(辅助分类器的损失加权为0.3)。在推断时间,这些辅助网络将被丢弃。
视觉上: