【问题标题】:In deep learning, can I change the weight of loss dynamically?在深度学习中,我可以动态改变损失的权重吗?
【发布时间】:2018-07-25 20:31:58
【问题描述】:

征集深度学习专家。

嘿,我最近正在使用 python 中的 tensorflow 来训练图像以进行色调映射。为了获得更好的结果,我专注于使用 Justin Johnson 的 this paper 引入的感知损失。

在我的实现中,我使用了所有 3 个损失部分:从 vgg16 中提取的特征损失;来自传输图像和地面真实图像的 L2 像素级损失;和总变异损失。我将它们总结为反向传播的损失。

从函数 y^=argminλcloss_content(y,yc)+λsloss_style(y,ys)+λTVloss_TV(y)

在论文中,我们可以看到损失有 3 个权重 λ 来平衡它们。在整个训练过程中,三个 λ 的值可能是固定的。

我的问题是,如果我在每个时期(或几个时期)动态更改 λ 以调整这些损失的重要性,是否有意义? 例如,感知损失在前几个时期急剧收敛,但像素级 l2 损失收敛相当慢。所以也许内容损失的权重 λs 应该更高,比如说 0.9,但其他的更低。随着时间的推移,像素级损失对于平滑图像和最小化伪影将变得越来越重要。所以把它调高一点可能会更好。就像根据不同的时期改变学习率一样。

指导我的博士后直接反对我的想法。他认为这是在动态改变训练模型,可能会导致训练的不一致。

所以,利弊,我需要一些想法......

谢谢!

【问题讨论】:

    标签: deep-learning


    【解决方案1】:

    如果不了解您正在使用的数据的更多信息,很难回答这个问题,但简而言之,动态损失不应该真的有那么大的影响,并且可能会产生完全相反的效果。 如果您使用的是 Keras,您可以简单地运行类似于以下的超参数调整器,以查看是否有任何效果(相应地更改损失): https://towardsdatascience.com/hyperparameter-optimization-with-keras-b82e6364ca53

    我只在较小的模型上做过这个(太费时间了),但本质上,最好保持不变,也避免激怒你的主管:D

    如果您运行的是不同的 ML 或 DL 库,则每个库都有优化器,只需用 Google 搜索即可。最好在一夜之间在集群上运行它们,但它们通常会为您提供足够好的优化模型版本。

    希望能有所帮助,祝你好运!

    【讨论】:

      猜你喜欢
      • 2020-11-09
      • 2018-12-27
      • 2018-12-15
      • 2018-06-21
      • 2017-01-08
      • 2019-01-12
      • 2021-02-28
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多