2017-04-04 55 views
2

我指的是keras documentation来构建一个网络,它以嵌入和一些其他重要特征的形式获取多个输入。但是,如果我们已经定义了主要损失,我不明白辅助损失的确切影响。使用深度网络的多输入和多输出模型中的辅助输出的意义

在这里,我们插入辅助损失,允许LSTM和嵌入层被平稳地训练,即使模型中的主损失要高得多。

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

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

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

回答

1

这是一个非常有趣的问题。 辅助分类器的想法并不罕见,正如人们所想的那样。它用于例如在Inception架构。在这个答案我会努力为您提供关于为什么这个调整实际上可能在训练中帮助一些直觉:

  1. 帮助梯度向下传递到较低层:人们可能会想到一个损失定义对于辅助分类器在概念上与主要损失相似 - 因为它们都衡量我们的模型是多么的好。由于这个原因,我们可以假设渐变w.r.t.对于这些损失应该与下层类似。 A 消失渐变现象仍然是一种情况 - 尽管我们有像例如批量标准化 - 所以每个额外的帮助可能会提高您的培训绩效。

  2. 它使一个低级别的功能,更准确:,而我们正在训练我们的网络 - 如何好是model`s信息的低级别功能,以及如何改变它们必须throught的所有其他层你的网络。这可能不仅使梯度消失 - 而且由于在神经网络计算过程中执行的操作可能会非常复杂 - 这也可能会使有关您的较低级别功能的信息不相关。这在培训的早期阶段非常重要 - 当你的大部分特征非常随机时(由于随机开始) - 以及推重的方向 - 可能在语义上是离奇的。 辅助输出可能会解决此问题,因为在此设置中 - 您的较低级别功能是从最早的培训部分开始有有意义的

  3. 这可能被认为是一种智能正规化:您正在对您的模型施加有意义的约束,这可能会防止过度拟合,特别是在小数据集上。

从我上面一书中写道可以推断出关于如何设置若干辅助减肥一些提示:

  1. 这是件好事,它更大开始的训练
  2. 它应该有助于通过您的网络传递信息,但它也不应该干扰培训过程。所以其中更深入的辅助输出的经验法则 - 更大的损失重量是 - 是非常合理的。
  3. 如果你的数据集不够大或者训练时间不是很长 - 你可能会尝试使用某种超参数优化来调整它。
  4. 你应该记住,你的主要损失是最重要的 - 即使产量可能会有所帮助 - 他们的体重减轻应该比主要损失体重要小。