什么是 PSPNet 论文中提到的辅助损失

机器算法验证 深度学习 卷积神经网络
2022-03-22 16:05:41

PSPNet(金字塔场景解析网络)论文链接中提到的辅助损失是什么?

我在下面引用论文的一部分

我们的深度监督 ResNet101 [13] 模型的示例如图 4 所示。除了使用 softmax 损失来训练最终分类器的主分支外,在第四阶段之后应用了另一个分类器,即 res4b22 残差块。与将反向辅助损失阻止到几个浅层的中继反向传播 [32] 不同,我们让两个损失函数通过所有先前的层。辅助损失有助于优化学习过程,而主分支损失承担大部分责任。我们增加权重来平衡辅助损失。

我的问题是这种辅助损失是如何工作的,以及它对训练过程有何帮助。它在网络中的工作是什么?

2个回答

辅助损失(又名辅助塔)的想法来自GoogLeNet 论文核心直觉可以这样解释:

假设您正在通过堆叠许多相同的模块来构建网络。随着网络变得更深,由于梯度消失问题(这是在 BatchNorm 时代之前),您将面临训练速度减慢的问题。为了促进每个模块层的学习,您可以将一些小型网络连接到该模块的输出。该网络通常有几个卷积层,然后是 FC,然后是最终的分类预测。这个辅助网络的任务是预测与最终网络预测相同的标签,但使用模块的输出。我们将这个辅助网络的损失添加到整个网络的最终损失中,权重小于 1。例如,在 GoogLeNet 中,您可以看到右侧以橙色节点结尾的两个塔状辅助网络:

在此处输入图像描述

现在,如果模块学习缓慢,那么它会产生很大的损失并导致该模块中的梯度流也帮助梯度进一步下游。这种技术显然有助于训练非常深的网络。即使在使用批量规范时,这也有助于在权重随机初始化的早期周期中加速训练。许多 NAS 架构在搜索过程中使用这种技术进行初始评估,因为在评估 1000 个架构时运行 epoch 的预算非常有限,因此早期加速可以提高性能。由于辅助网络已从最终模型中删除,因此不被视为“作弊”。

我不完全确定 PSPNet 中辅助损失的使用,但一般来说,这种辅助损失用于多层网络。

这种辅助损失有助于减少早期层的梯度消失问题,稳定训练并用作正则化。它仅用于训练而不用于推理。

GoogLeNet 也使用了辅助损失:https ://arxiv.org/abs/1409.4842