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

Nil*_*ari 7 neural-network deep-learning lstm keras

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

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

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

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

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

Mar*_*jko 6

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

  1. 有助于使梯度向下传递到较低的层次:人们可能会认为,为辅助分类器定义的损失在概念上与主要损失相似,因为两者都可以衡量我们的模型的质量。因此,我们可以假定,对于这两个损失,应降低到较低层的梯度。一个消失梯度现象仍时-即使我们有像如批标准化技术-所以每一个额外的帮助可能会提高你的训练表现。

  2. 它使低级功能更加准确:在我们训练网络时-有关模型的低级功能的良好程度以及如何更改它们的信息必须遍及网络的所有其他层。这不仅可能使梯度消失,而且由于在神经网络计算过程中执行的操作可能确实很复杂的事实,这也可能使有关低层特征的信息不相关。这一点特别重要,特别是在训练的早期阶段-当您的大部分功能都比较随机(由于随机启动)-并且权重的施加方向在语义上可能很奇怪。辅助输出可能会克服此问题,因为在此设置中-使您的较低级功能从培训的最早阶段就有意义

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

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

  1. 在训练开始时将其增大是一件好事。
  2. 它应有助于通过网络传递信息,但也不应打扰培训过程。因此经验法则是更深的辅助输出-更大的损失权重 -是不合理的。
  3. 如果您的数据集不够大或训练时间不长-您可以尝试使用某种超参数优化对其进行实际调整。
  4. 您应该记住,最主要的减肥方法是最重要的-尽管辅助输出可能会有所帮助-其减肥效果应比主要减肥方法要小。