【问题标题】:Significance of auxiliary output in Multi-input and multi-output model using deep network使用深度网络的多输入多输出模型中辅助输出的意义
【发布时间】:2017-08-30 04:50:24
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: neural-network deep-learning keras lstm


    【解决方案1】:

    这是一个非常有趣的问题。 辅助分类器的想法并不像人们想象的那么罕见。它用于例如在Inception 架构中。在这个答案中,我将尝试为您提供一些直觉,说明为什么此调整实际上可能有助于训练:

    1. 帮助梯度向下传递到较低层:人们可能认为为辅助分类器定义的损失在概念上类似于主要损失 - 因为他们都衡量了我们的模型有多好。因此,我们可以假设梯度 w.r.t.对于这两种损失,到较低层应该是相似的。 梯度消失现象仍然是一种情况——即使我们有像例如批量标准化 - 因此每一项额外的帮助都可能会提高您的训练性能。

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

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

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

    1. 最好在开始训练时变大
    2. 它应该有助于通过您的网络传递信息,但它也不应该干扰训练过程。因此,辅助输出越深——损失权重越大的经验法则——恕我直言是合理的。
    3. 如果您的数据集不是很大或训练时间不是很长 - 您可以尝试使用某种超参数优化来实际调整它。
    4. 您应该记住,您的主要损失是最重要的 - 尽管 aux 输出可能会有所帮助 - 他们的重量损失应该相对小于主要损失重量。

    【讨论】:

    • 我有一个有点多余的功能,很难知道我应该将它用作辅助输出还是将其用作模型的输入。例如,给定一张人脸图像,并且您想预测性别。您还有年龄信息,您应该将年龄信息作为输入还是将其用作辅助输出?
    猜你喜欢
    • 2022-01-23
    • 2011-01-11
    • 2017-03-16
    • 1970-01-01
    • 2013-01-08
    • 2021-06-24
    • 1970-01-01
    • 2020-02-27
    • 2011-02-09
    相关资源
    最近更新 更多