1. 程式人生 > >損失函式的選擇

損失函式的選擇

github部落格傳送門
csdn部落格傳送門

損失函式的迭取取決於輸入標籤資料的型別:如果輸入的是實數,無界的值,損失函式使用平方差;如果輸入的標籤是位向量(分類標誌)使用交叉熵會更合適

均值平方差(Mean Squared Error, MSE)也稱均方誤差
神經網路中:表達預測值與真實值之間的差異
數理統計中:指引數估計值與引數真值之差平方的期望值
均方誤差的值越小,表明模型越好


MSE: Mean Squared Error

均方誤差是指引數估計值與引數真值之差平方的期望值;
MSE可以評價資料的變化程度,MSE的值越小,說明預測模型描述實驗資料具有更好的精確度。
$$ MSE = \frac{1}{N}\sum_{t=1}^{N}\left ( obersved_{t} - predicted_{t} \right )^{2} $$
程式寫法:

MSE=tf.reduce_mean(tf.pow(tf.sub(logits, outputs), 2.0))
MSE=tf.reduce_mean(tf.square(tf.sub(logits, outputs)))
MSE=tf.reduce_mean(tf.square(logits - outputs))

RMSE

均方誤差:均方根誤差是均方誤差的算術平方根
$$ RMSE = \sqrt{\frac{1}{N}\sum_{t=1}^{N} \left ( obersved_{t} - predicted_{t} \right)^{2} } $$
程式寫法:

RMSE=tf.sqrt(tf.reduce_mean(tf.pow(tf.sub(logits, outputs), 2.0)))

MAE :Mean Absolute Error

平均絕對誤差是絕對誤差的平均值
平均絕對誤差能更好地反映預測值誤差的實際情況.
$\widehat{y}$ 表示預測值 $y$ 表示真實值
$$ MAE = \frac{1}{N}\sum_{t=1}^{N}\left | (\widehat{y}-y) \right | $$
程式寫法:

MAE=tf.reduce_mean(tf.abs(tf.sub(logits, label)))

SD :standard Deviation

標準差:標準差是方差的算術平方根。標準差能反映一個數據集的離散程度。平均數相同的兩組組資料,標準差未必相同。
$u$表示平均值$\left ( u = \frac{1}{N}\left ( x_{1}+\cdot \cdot \cdot + x_{N} \right ) \right )$
$$ SD = \sqrt{\frac{1}{N}\sum_{t=1}^{N}\left ( x_{i}-u \right )^{2}} $$
程式寫法:

SD=tf.sqrt(tf.reduce_mean(tf.pow(tf.sub(x_i-u), 2.0)))