目標函數
目標函數,或稱損失函數,是網絡中的性能函數,也是編譯一個模型必須的兩個參數之一。由於損失函數種類眾多,下面以keras官網手冊的為例。
在官方keras.io里面,有如下資料:
-
mean_squared_error或mse
-
mean_absolute_error或mae
-
mean_absolute_percentage_error或mape
-
mean_squared_logarithmic_error或msle
-
squared_hinge
-
hinge
-
binary_crossentropy(亦稱作對數損失,logloss)
-
categorical_crossentropy:亦稱作多類的對數損失,注意使用該目標函數時,需要將標簽轉化為形如
(nb_samples, nb_classes)
的二值序列 -
sparse_categorical_crossentrop:如上,但接受稀疏標簽。注意,使用該函數時仍然需要你的標簽與輸出值的維度相同,你可能需要在標簽數據上增加一個維度:
np.expand_dims(y,-1)
-
kullback_leibler_divergence:從預測值概率分布Q到真值概率分布P的信息增益,用以度量兩個分布的差異.
-
cosine_proximity:即預測值與真實標簽的余弦距離平均值的相反數
1.mean_squared_error
顧名思義,意為均方誤差,也稱標准差,縮寫為MSE,可以反映一個數據集的離散程度。
標准誤差定義為各測量值誤差的平方和的平均值的平方根,故又稱為均方誤差。
公式:
公式意義: 可以理解為一個從n維空間的一個點到一條直線的距離的函數。(此為在圖形上的理解,關鍵看個人怎么理解了)
2. mean_absolute_error
譯為平均絕對誤差,縮寫MAE。
平均絕對誤差是所有單個觀測值與算術平均值的偏差的絕對值的平均。
公式:
(\(f_i\)是預測值,\(y_i\)是實際值,絕對誤差\(\left|e_{i}\right|=\left|f_{i}-y_{i}\right|\))
3.mean_absolute_percentage_error
譯為平均絕對百分比誤差 ,縮寫MAPE。
公式:
(\(A_t\)表示實際值,\(F_t\)表示預測值)
4. mean_squared_logarithmic_error
譯為均方對數誤差,縮寫MSLE。
公式:
(n是整個數據集的觀測值,\(p_i\)為預測值,\(a_i\)為真實值)
5.squared_hinge
公式為max(0,1-y_true*y_pred)^2.mean(axis=-1),取1減去預測值與實際值的乘積的結果與0比相對大的值的平方的累加均值。
6.hinge
公式為為max(0,1-y_true*y_pred).mean(axis=-1),取1減去預測值與實際值的乘積的結果與0比相對大的值的累加均值。
Hinge Loss 最常用在 SVM 中的最大化間隔分類中,
對可能的輸出 t = ±1 和分類器分數 y,預測值 y 的 hinge loss 定義如下:
L(y) = max(0,1-t*y)
y = w*x+b
可以看出當 t 和 y 有相同的符號時(意味着 y 預測出正確的分類)
|y|>=1
此時的 hinge loss
L(y) = 0
但是如果它們的符號相反
L(y)則會根據 y 線性增加 one-sided error。(譯自wiki)
7.binary_crossentropy
即對數損失函數,log loss,與sigmoid相對應的損失函數。
公式:L(Y,P(Y|X)) = -logP(Y|X)
該函數主要用來做極大似然估計的,這樣做會方便計算。因為極大似然估計用來求導會非常的麻煩,一般是求對數然后求導再求極值點。
損失函數一般是每條數據的損失之和,恰好取了對數,就可以把每個損失相加起來。負號的意思是極大似然估計對應最小損失。
8.categorical_crossentropy
多分類的對數損失函數,與softmax分類器相對應的損失函數,理同上。
tip:此損失函數與上一類同屬對數損失函數,sigmoid和softmax的區別主要是,sigmoid用於二分類,softmax用於多分類。
一種解釋:
softmax公式:
logistic regression的目標函數是根據最大似然來做的.也就是假設x屬於類y,預測出概率為oy,那么需要最大化oy.
softmax_loss的計算包含2步:
(1)計算softmax歸一化概率
參考:
[]https://www.cnblogs.com/smuxiaolei/p/8662177.html
![官方文檔]https://keras.io/zh/losses/