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

数据挖掘 神经网络 深度学习 张量流
2021-09-15 04:59:49

简介中我刚刚改变了

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

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

并且模型无法学习损失随着时间的推移变得越来越大。为什么?

1个回答

我尝试了这个并得到了相同的结果。

这是因为.abs对于一个简单的优化器来说,梯度更难跟随到最小值,不像平方差,梯度缓慢接近零,绝对差的梯度有一个固定的幅度,会突然反转,这往往会使优化器围绕最低点。基本梯度下降对梯度的大小和学习率非常敏感,学习率本质上只是步长的梯度乘数。

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

optimizer = tf.train.GradientDescentOptimizer(0.5)

optimizer = tf.train.GradientDescentOptimizer(0.05)

此外,与不同的优化器一起玩。有些人将能够更好地应对.abs基于损失的损失。