我指的是keras documentation来构建一个网络,该网络以嵌入和其他一些重要功能的形式接受多个输入。但是,如果我们已经定义了主要损失,那么我不理解辅助损失的确切影响。



如文档中所述,我假设它有助于在嵌入/之前定义的任何其他层上进行平滑训练。我的问题是,如何确定辅助损失的权重。



如果有人能解释有关如何确定损失权重以及辅助损失权重的较高/较低值对模型训练和预测有何影响,我将不胜感激。

最佳答案

这是一个非常有趣的问题。辅助分类器的想法并不像人们想象的那么普遍。例如在Inception体系结构中。在此答案中,我将尝试向您提供一些直觉,以了解为何此调整实际上可以帮助培训:

  • 它有助于使梯度向下传递到较低的层:可能会认为,为辅助分类器定义的损失从概念上讲类似于主要损失-因为这两者都可以衡量模型的良好程度。因此,我们可以假设梯度w.r.t.对于这两个方面的损失,应使用较低的层级。即使我们采用了像批量归一化-因此,每一个额外的帮助都可以改善您的训练效果。
  • 它使底层功能更加准确:在培训网络时-有关模型的底层功能的优良程度以及如何更改它们的信息必须贯穿网络的所有其他层。这不仅可能使梯度消失,而且由于在神经网络计算过程中执行的操作可能确实很复杂的事实,这也可能使有关低层特征的信息不相关。这一点特别重要,尤其是在训练的早期阶段-当您的大多数功能都比较随机(由于随机启动)-并且权重的施加方向-在语义上可能很奇怪。辅助输出可能会解决此问题,因为在此设置中-使较低级别的功能在培训的最早阶段就变得有意义。
  • 这可能被认为是智能正则化:您正在对模型施加有意义的约束,这可能会防止过度拟合,尤其是在小型数据集上。

  • 从我上面写的内容可以推断出如何设置辅助损失权重的一些提示:
  • 在训练的开始时,最好将它更大
  • 它应该有助于通过网络传递信息,但也不应打扰培训过程。因此,经验法则是辅助输出越深-损失权重越大-是不合理的。
  • 如果您的数据集不大或训练时间不长-您可以尝试使用某种超参数优化来实际调整它。
  • 您应该记住,最主要的损失是最重要的-尽管辅助输出可能会有所帮助-其减重应该比主要的减重要小。
  • 关于neural-network - 深度网络在多输入多输出模型中辅助输出的意义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43216513/

    10-12 19:31