在梯度下降中使用均方误差

数据挖掘 机器学习 线性回归 优化 梯度下降
2021-10-14 14:43:41

我最近一直在从头开始编写线性回归算法,以了解它背后的数学是如何工作的(事先有点黑匣子),所以我开始区分成本函数。在没有意识到的情况下,我使用平方误差作为成本函数 - MSE,但没有除以数据集长度。使用均方误差比仅对误差的平方求和有什么好处(最小值或其他方法的更快方法)?

2个回答

不,完全一样。优化一个函数和同一个函数除以一个常数是等价的,无论是在解析意义上还是数值意义上。您将获得完全相同的最佳参数。

由于梯度是根据损失计算的,所以它是不同的。tf.reduce_sum根据批量大小,在使用或其他汇总方法时应降低学习率。两者都可以产生成功的训练,但是有一个问题。

批次大小有时可能会有所不同,因为最后一批较小,或者您可能只是为了好玩而改变批次大小(前提是您已经建立了具有这种可能性的图表)。在这种情况下reduce_sum将导致波动的损失值,而不是仅仅减少。你想避免这种情况。

TLDR:避免reduce_sumreduce_mean用于线性回归,尽管学习率更高。

仅供参考四参数线性回归:

y=b0+b1x1+b2x2+b3x3

  • 100 的批量大小和 0.01 的 GradientDescent 学习率在 100 个 epoch 中产生 16.93 的 MSE

  • 100 的批量大小和 0.0001 的 GradientDescent 学习率在 100 个 epoch 中产生 1693.31 的 SSE

这是完全相同的,并且也产生相同的参数(偏差和权重),随机种子锁定。