tf.keras 有很多內置的損失函數,具體可見官方文檔,這里介紹一部分。
MSE、MAE、BinaryCrossentropy、CategoricalCrossentropy...
1 回歸問題
1.1 均方誤差 (MeanSquaredError,MSE)
這是最簡單也是最常用的損失函數,在線性回歸中,可以通過極大似然估計 (MLE) 推導。
1.2 絕對值誤差 (MeanAbsoluteError,MAE)
1.3 絕對值百分比誤差 (MeanAbsolutePercentageError,MAPE)
1.4 平方對數誤差 (MeanSquaredLogarithmicError,MSLE)
1.5 Hinge
1.6 SquaredHinge
1.7 Huber
當預測偏差小於 δ 時,它采用平方誤差;當預測偏差大於 δ 時,采用的線性誤差。
增強了 MSE 對離群點的魯棒性。
2 分類問題
2.1 BinaryCrossentropy
一般用於二分類,這是針對概率之間的損失函數,只有 yi 和 ˆyi 相等時,loss才為0,否則 loss 是一個正數,且概率相差越大,loss就越大,這種度量概率距離的方式稱為交叉熵。一般最后一層使用 sigmoid 激活函數。
2.2 CategoricalCrossentropy
m 是樣本數,n 是分類數。這是一個多輸出的 loss 函數。一般最后一層使用 softmax 激活函數。
2.3 SparseCategoricalCrossentropy
SparseCategoricalCrossentropy 損失函數同 CategoricalCrossentropy 類似,唯一的區別在於輸入的 y_true 是 one-hot 編碼還是數字編碼。
如果是 one-hot 編碼,例如 [0, 0, 1], [1, 0, 0], [0, 1, 0],用 CategoricalCrossentropy;
如果是數字編碼,例如 2, 0, 1,用 SparseCategoricalCrossentropy 。
關於參數 from_logits 的設置:如果輸入的 y_pred 經過了 softmax 激活函數的處理,設置為 False;否則,設置為 True,表示該值為 logits,沒有經過 softmax 激活函數的 fully connect 輸出。
2.4 KLD (KL散度,相對熵)