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

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

Frage

Im Einführung Ich habe mich gerade verä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 nur größer wurde. Wieso den?

War es hilfreich?

Lösung

Ich habe es versucht und das gleiche Ergebnis erzielt.

Es ist, weil der Gradient von .abs Es ist schwieriger, dass ein einfacher Optimierer dem Minima folgt, im Gegensatz zu quadratischer Differenz, bei dem sich der Gradienten langsam nähert, der Gradient der absoluten Differenz hat eine feste Größe, die sich abrupt umkehrt, was dazu neigt, den Optimierer um den Mindestpunkt zu schwingen. Grundlegende Gradientenabfälle sind 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 z. B. Änderungslinie zu reduzieren

optimizer = tf.train.GradientDescentOptimizer(0.5)

zu

optimizer = tf.train.GradientDescentOptimizer(0.05)

Machen Sie auch ein Spiel mit verschiedenen Optimierern. Einige werden in der Lage sein, mit damit fertig zu werden .abs-Besserer Verlust besser.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top