【问题标题】:Tensorflow optimizers: loss sum vs meanTensorflow 优化器:损失总和与均值
【发布时间】:2017-09-01 05:28:17
【问题描述】:

我想知道 Tensorflow 优化器(尤其是 AdamOptimizer)在将损失函数定义为总和或小批量的平均值/平均值时是否有偏好?

总的来说,我的假设是首选使用平均值,因为损失不取决于小批量的大小。因此,更容易找到适用于任何批量大小的学习率。

但是,Tensorflow 定义了例如l2_loss 内部为:

output = sum(t ** 2) / 2

这是否意味着优化器已经在内部考虑了批量大小,即他们期望损失与批量大小成线性关系?另外,从优化的角度来看,取一半 L2 范数的动机是什么?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    这里 l2_loss 实际上是一个正则化损失函数。我们将其添加到我们的主要损失函数中,以防止参数过度拟合。我们通常将 l2 损失除以 2,以便在取梯度时更容易。

    在任何优化器中,我们都会根据批量大小计算平均损失。

    【讨论】:

    • 我明白了,除以 2 只是为了在梯度中减少一次乘法。所以要明确:对于非正则化用例,最好使用tf.reduce_mean(tf.square(output - target))
    • 这取决于你的损失函数。在这里,您正在实现的损失函数称为线性平方和,是的,取平均值总是好的。在前面的例子中 l2 损失我们使用除以二只是为了在获取梯度时更容易。
    猜你喜欢
    • 2018-05-16
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2017-05-11
    • 2018-06-25
    • 2017-12-16
    相关资源
    最近更新 更多