2017-04-06 103 views
0

我想知道Tensorflow優化器(特別是AdamOptimizer)在定義損失函數作爲總和還是平均值/平均值時有優先權?Tensorflow優化器:損失總和vs平均值

一般來說,我的假設是使用均值是首選,因爲損失不取決於小批量的大小。因此,更容易找到適用於任何批量規模的學習速率。然而,Tensorflow定義了例如, l2_loss內部爲:

output = sum(t ** 2)/2 

這是否意味着優化佔批量大小已經在內部,即,他們預計損失與批量大小呈線性比例關係?另外,從優化的角度來看,採取L2規範的一半是什麼動機?

回答

1

那麼這裏l2_loss實際上是一個正則化損失函數。我們在我們的主要損失函數中添加以防止參數過度擬合。我們通常將l2的損失除以2,以便在漸變時輕鬆實現。

而在任何優化器內部,我們都採用平均損失w.r.t批量大小。

+0

我明白了,2除以在梯度上只有一個乘法運算。所以要清楚:對於非正則化用例,最好使用'tf.reduce_mean(tf.square(輸出 - 目標))' – bluenote10

+0

那麼這是根據你的損失函數。在這裏,你正在實現的損失函數被稱爲線性平方和,是的,平均值總是很好。在前一種情況下,我們使用兩分法來簡化漸變過程。 –