1. 程式人生 > 其它 >tf常見的損失函式(LOSS)總結

tf常見的損失函式(LOSS)總結

運算公式

1、均方差函式
均方差函式主要用於評估迴歸模型的使用效果,其概念相對簡單,就是真實值與預測值差值的平方的均值,具體運算公式可以表達如下:

\[Q=\frac{1}{m}\sum_{i=1}^{m}(f(x_i)-y_i)^2 \]

其中\(f(x_i)\)是預測值,\(y_i\)是真實值
在二維影象中,該函式代表每個散點到擬合曲線y軸距離的總和,非常直觀。


2、交叉熵函式
出自資訊理論中的一個概念,原來的含義是用來估算平均編碼長度的。在機器學習領域中,其常常作為分類問題的損失函式。

\[Q=-\frac{1}{m}\sum_{i=1}^{m}(y_ilog(f(x_i))+(1-y_i)los(1-f(x_i))) \]

其中\(f(x_i)\)

是預測值,\(y_i\)是真實值
交叉熵函式是怎麼工作的呢?假設在分類問題中,被預測的物體只有是或者不是,預測值常常不是1或者0這樣絕對的預測結果,預測是常用的做法是將預測結果中大於0.5的當作1,小於0.5的當作0。此時假設如果存在一個樣本,預測值接近於0,實際值卻是1,那麼在交叉熵函式的前半部分:

\[y_ilog(f(x_i)) \]

其運算結果會遠遠小於0,取符號後會遠遠大於0,導致該模型的損失函式巨大。通過減小交叉熵函式可以使得模型的預測精度大大提升。


tensorflow種損失函式的表達
1、均方差函式

loss = tf.reduce_mean(tf.square(logits-labels))
loss = tf.reduce_mean(tf.square(tf.sub(logits, labels)))
loss = tf.losses.mean_squared_error(logits,labels)

2、交叉熵函式

loss = tf.nn.sigmoid_cross_entropy_with_logits(labels=y,logits=logits)
#計算方式:對輸入的logits先通過sigmoid函式計算,再計算它們的交叉熵
#但是它對交叉熵的計算方式進行了優化,使得結果不至於溢位。
loss = tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=logits)
#計算方式:對輸入的logits先通過softmax函式計算,再計算它們的交叉熵,
#但是它對交叉熵的計算方式進行了優化,使得結果不至於溢位。