一些TensorFlow示例计算成本函数,如下所示:
cost = tf.reduce_sum((pred-y)**2 / (2*n_samples))
因此,商是样本数,乘以2 。
额外因子为2的原因是,当成本函数对于反向传播进行区分时,它将取消因子1/2并保存操作?
如果是这样,是否仍然建议这样做,它是否实际上提供了显着的性能改进?
答案 0 :(得分:2)
在数学中方便,因为一个人不需要一直携带0.5。但是在代码中,它并没有产生很大的不同,因为这种变化会使渐变(以及相应地,可训练变量的更新)变大或变小两倍。由于更新乘以学习速率,因此可以通过超参数的微小变化来解除该因子2。我说次要,因为在模型选择期间尝试以对数比例学习率是常见的:0.1
,0.01
,0.001
, ....
因此,无论在损失函数中使用何种特定公式,其影响都可以忽略不计,并且不会导致任何训练加速。选择正确的学习率更为重要。