平均二乗誤差ではなく絶対平均誤差を最小化すると、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ベースの損失にうまく対処できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.