Warum kann TensorFlow kein einfaches lineares Modell anpassen, wenn ich den absoluten mittleren Fehler anstelle des mittleren quadratischen Fehlers minimiere?

10

In der Einführung habe ich mich gerade geändert

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

zu

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

und das Modell kann nicht lernen, dass der Verlust mit der Zeit immer größer wurde. Warum?

Brans Ds
quelle

Antworten:

17

Ich habe es versucht und das gleiche Ergebnis erzielt.

Weil der Gradient von .absfür einen einfachen Optimierer schwieriger ist, den Minima zu folgen, hat der Gradient der absoluten Differenz im Gegensatz zur quadratischen Differenz, bei der der Gradient langsam gegen Null geht, eine feste Größe, die sich abrupt umkehrt, was dazu führt, dass der Optimierer um den herum schwingt Mindestpunkt. Der grundlegende Gradientenabstieg ist sehr empfindlich gegenüber der Größe des Gradienten und der Lernrate, die im Wesentlichen nur ein Multiplikator des Gradienten für Schrittgrößen ist.

Die einfachste Lösung besteht darin, die Lernrate zu reduzieren, z. B. die Linie zu ändern

optimizer = tf.train.GradientDescentOptimizer(0.5)

zu

optimizer = tf.train.GradientDescentOptimizer(0.05)

Spielen Sie auch mit verschiedenen Optimierern. Einige werden in der Lage sein, .absVerluste auf der Grundlage besser zu bewältigen .

Neil Slater
quelle