为什么TensorFlow如果我最小化绝对平均误差而不是平均平方误差,则无法拟合简单的线性模型?

datascience.stackexchange https://datascience.stackexchange.com/questions/15190

介绍 我刚刚改变了

loss = tf.reduce_mean(tf.square(y - y_data))

loss = tf.reduce_mean(tf.abs(y - y_data)) 

并且模型无法学习损失随着时间而变得更大。为什么?

有帮助吗?

解决方案

我尝试了一下,并得到了同样的结果。

这是因为 .abs 对于简单的优化者来说,很难跟随最小值,与平方差慢慢接近零不同,绝对差的梯度具有固定幅度的固定幅度,突然逆转,这往往会使优化者绕最小点振荡。基本梯度下降对梯度的大小和学习率非常敏感,这本质上只是阶梯尺寸的梯度的乘数。

最简单的解决方案是降低学习率,例如变更线

optimizer = tf.train.GradientDescentOptimizer(0.5)

optimizer = tf.train.GradientDescentOptimizer(0.05)

另外,与不同的优化器一起玩。有些人可以应付 .abs- 基于损失更好。

许可以下: CC-BY-SA归因
scroll top