Pourquoi tensorflow ne peut pas s'adapter modèle linéaire simple si je minimise l'erreur moyenne absolue au lieu de l'erreur quadratique moyenne?

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

Question

Présentation Je viens de changer

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

à

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

et le modèle est incapable d'apprendre la perte tout est devenu plus grand avec le temps. Pourquoi?

Était-ce utile?

La solution

J'ai essayé et a même résultat.

Il est parce que le gradient de .abs est plus difficile pour un simple Optimiseur de suivre aux minima, à la différence de différence au carré où les approches de gradient zéro lentement, le gradient de la différence absolue a une valeur fixe qui brusquement de revers, ce qui tend à rendre la oscillent Optimiseur autour du point minimum. descente de gradient de base est très sensible à l'amplitude du gradient, et le taux d'apprentissage, qui est essentiellement juste un multiplicateur du gradient de tailles de pas.

La solution la plus simple est de réduire le taux d'apprentissage par exemple ligne de changement

optimizer = tf.train.GradientDescentOptimizer(0.5)

à

optimizer = tf.train.GradientDescentOptimizer(0.05)

En outre, ont un jeu avec différents optimiseurs. Certains seront en mesure de faire face à la perte en fonction .abs-mieux.

Licencié sous: CC-BY-SA avec attribution
scroll top