Por que o TensorFlow não se encaixa no modelo linear simples se estou minimizando o erro médio absoluto em vez do erro médio quadrático?

10

Na introdução , acabei de mudar

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

para

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

e o modelo é incapaz de aprender a perda se tornou maior com o tempo. Por quê?

Brans Ds
fonte

Respostas:

17

Eu tentei isso e obtive o mesmo resultado.

É porque o gradiente de .absé mais difícil para um otimizador simples seguir até os mínimos, ao contrário da diferença quadrada em que o gradiente se aproxima de zero lentamente, o gradiente da diferença absoluta tem uma magnitude fixa que reverte abruptamente, o que tende a fazer o otimizador oscilar em torno do mínimo. ponto mínimo. A descida básica do gradiente é muito sensível à magnitude do gradiente e à taxa de aprendizado, que é essencialmente apenas um multiplicador do gradiente para os tamanhos das etapas.

A solução mais simples é reduzir a taxa de aprendizado, por exemplo, mudar de linha

optimizer = tf.train.GradientDescentOptimizer(0.5)

para

optimizer = tf.train.GradientDescentOptimizer(0.05)

Além disso, brinque com diferentes otimizadores. Alguns serão capazes de lidar .absmelhor com as perdas com base.

Neil Slater
fonte