Чому TensorFlow не може підходити до простої лінійної моделі, якщо я мінімізую абсолютну середню помилку замість середньої помилки у квадраті?


10

У Вступі я щойно змінився

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

до

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

і модель не в змозі дізнатись, з часом збитки тільки зростали. Чому?

Відповіді:


17

Я спробував це і отримав такий же результат.

Це тому, що градієнту .absпростішого оптимізатора важче дотримуватися мінімумів, на відміну від різниці у квадраті, де градієнт повільно наближається до нуля, градієнт абсолютної різниці має фіксовану величину, яка різко обертається, що, як правило, оптимізатор коливається навколо мінімальний бал. Базовий спуск градієнта дуже чутливий як до величини градієнта, так і до швидкості навчання, яка по суті є лише множником градієнта для розмірів ступенів.

Найпростішим виправленням є зниження рівня навчання, наприклад, зміна лінії

optimizer = tf.train.GradientDescentOptimizer(0.5)

до

optimizer = tf.train.GradientDescentOptimizer(0.05)

Також пограйте з різними оптимізаторами. Деякі зможуть краще впоратися з .absвтратами на основі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.