¿Por qué TensorFlow no puede ajustarse al modelo lineal simple si estoy minimizando el error medio absoluto en lugar del error cuadrado medio?

Respuestas:

17

Intenté esto y obtuve el mismo resultado.

Es porque el gradiente de .abses más difícil para un optimizador simple de seguir a los mínimos, a diferencia de la diferencia al cuadrado donde el gradiente se aproxima lentamente a cero, el gradiente de la diferencia absoluta tiene una magnitud fija que se invierte abruptamente, lo que tiende a hacer que el optimizador oscile alrededor del punto mínimo El descenso de gradiente básico es muy sensible a la magnitud del gradiente y a la tasa de aprendizaje, que es esencialmente solo un multiplicador del gradiente para los tamaños de paso.

La solución más simple es reducir la tasa de aprendizaje, por ejemplo, cambiar la línea

optimizer = tf.train.GradientDescentOptimizer(0.5)

a

optimizer = tf.train.GradientDescentOptimizer(0.05)

Además, juega con diferentes optimizadores. Algunos podrán hacer .absfrente mejor a la pérdida basada en.

Neil Slater
fuente