【问题标题】:Multi task learning in tensorflow with different learning rates具有不同学习率的张量流中的多任务学习
【发布时间】:2018-03-17 13:10:06
【问题描述】:

我想在 tensorflow 中实现一个多任务学习框架。我目前正在实现这样的东西(伪代码)

define_reg_cost()
define_clas_cost()

reg_optimizer.(reg_learning_rate).min(reg_cost)
clas_optimizer.(clas_learning_rate).min(clas_cost)

for num_iterations:
    reg_optimizer.run()
    clas_optimizer.run()

这对我来说似乎不是正确的方法。 我有两个损失函数,我想学习权重,以在同一个优化器中以不同的学习率最小化这两个损失。 我基本上希望梯度优化器做这样的更新:

weight_updated = 权重 - learning_rate_1 * d(loss1)/dw - learning_rate_2 * d(loss2)/dw

关于如何做到这一点的任何提示(可能使用 optimizer.apply_gradients())?

【问题讨论】:

标签: python-3.x tensorflow deep-learning


【解决方案1】:

迟到但可能对其他人有帮助: 您所展示的解决方案正是正确的解决方案。

如果您查看:this post 和: this stack overflow answer

如果您使用的是 GradientDescentOptimizer 之类的东西,这些会 是非常相似的操作。那是因为采用渐变是一种 线性运算,求和的梯度与 渐变。

但是,ADAM 做了一些特别的事情:无论您的规模如何 损失,它缩放梯度,使它们总是在 你的学习率。如果你将损失乘以 1000,它不会 影响 ADAM,因为它会被规范化。

使用两个不同的优化器有很多优势。

您还可以在梯度计算中拆分更新,然后将 lerningrate 直接应用于梯度的不同部分。 see here

【讨论】:

    猜你喜欢
    • 2018-04-11
    • 2020-09-19
    • 2012-01-31
    • 1970-01-01
    • 2019-04-20
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    相关资源
    最近更新 更多