首页 文章

基于深度网络的多输入多输出模型辅助输出的意义

提问于
浏览
6

我正在引用keras documentation构建一个网络,它以嵌入和其他一些重要特性的形式接受多个输入 . 但是如果我们已经定义了主要损失,我不明白辅助损失的确切影响 .

这里我们插入辅助损耗,即使模型中的主要损耗会更高,也可以平滑地训练LSTM和嵌入层 .

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

我们编译模型并为辅助损失分配0.2的权重 . 要为每个不同的输出指定不同的loss_weights或loss,可以使用列表或字典 .

如果有人能够解释如何确定损失权重以及辅助损失权重的更高/更低值如何影响模型训练和预测,我将非常感激 .

1 回答

  • 4

    这是一个非常有趣的问题 . 辅助分类器的想法并不像人们想象的那么罕见 . 它用于例如在Inception架构中 . 在这个答案中,我会尝试为您提供一些关于为什么这个调整可能真正有助于培训的直觉:

    • It helps gradient to pass down to lower layers: 可能会认为为辅助分类器定义的损失在概念上与主要损失类似 - 因为它们都衡量我们的模型有多好 . 由于这个原因,我们可以假设梯度为w.r.t.对于这两种损失,下层应该类似 . 消失的梯度现象仍然存在 - 即使我们有像批量标准化 - 因此每增加一个帮助都可以提高您的培训效果 .

    • It makes a low-level features more accurate: 在我们培训我们的网络时 - 有关模型的低级功能有多好以及如何更改它们的信息必须遍及网络的所有其他层 . 这可能不仅使梯度消失 - 而且由于在神经网络计算期间执行的操作可能真的很复杂 - 这也可能使得关于您的较低级别特征的信息无关紧要 . 这一点非常重要,特别是在训练的早期阶段 - 当你的大多数特征相当随机(由于随机开始) - 以及你的重量被推动的方向 - 可能在语义上是奇怪的 . 辅助输出可能会克服此问题,因为在此设置中 - 从训练的最早阶段开始,您的低级功能将变得有意义 .

    • This might be considered as an intelligent regularization: 您正在对模型进行有意义的约束,这可能会阻止过度拟合,尤其是在小型数据集上 .

    从我上面写的内容可以推断出一些关于如何设置辅助损失权重的提示:

    • beginning 训练中获得它是很好的 .

    • 它应该有助于通过您的网络传递信息,但也不应该干扰培训过程 . 所以 the deeper aux output is - the bigger loss weight is 的经验法则是不合理的 .

    • 如果您的数据集不是很大或者培训时间不长 - 您可以尝试使用某种超参数优化来实际调整它 .

    • 你应该记住,你的主要损失是最重要的 - 即使辅助输出可能有帮助 - 它们的体重减轻应该相对小于主要的体重减轻 .

相关问题