Ответы:
Я попробовал это и получил тот же результат.
Именно потому, что .abs
простому оптимизатору сложнее проследить до минимума градиент, в отличие от квадрата разности, когда градиент медленно приближается к нулю, градиент абсолютной разности имеет фиксированную величину, которая резко меняется на противоположную, что приводит к колебаниям оптимизатора вокруг минимальная точка. Базовый градиентный спуск очень чувствителен к величине градиента и скорости обучения, которая, по сути, является просто множителем градиента для размеров шагов.
Самое простое решение - снизить скорость обучения, например, изменить строку
optimizer = tf.train.GradientDescentOptimizer(0.5)
в
optimizer = tf.train.GradientDescentOptimizer(0.05)
Также поиграйте с разными оптимизаторами. Некоторые смогут .abs
лучше справиться с потерей.