損失函數
概述
損失函數是模型優化的目標,所以又叫目標函數、優化評分函數,在keras中,模型編譯的參數loss指定了損失函數的類別,有兩種指定方法:
model.compile(loss='mean_squared_error', optimizer='sgd')
或者
from keras import losses
model.compile(loss=losses.mean_squared_error, optimizer='sgd')
可用損失函數
可用的損失目標函數:
mean_squared_error或mse
mean_absolute_error或mae
mean_absolute_percentage_error或mape
mean_squared_logarithmic_error或msle
squared_hinge
hinge
categorical_hinge
binary_crossentropy(亦稱作對數損失,logloss)
logcosh
categorical_crossentropy:亦稱作多類的對數損失,注意使用該目標函數時,需要將標籤轉化爲形如(nb_samples, nb_classes)的二值序列
sparse_categorical_crossentrop:如上,但接受稀疏標籤。注意,使用該函數時仍然需要你的標籤與輸出值的維度相同,你可能需要在標籤數據上增加一個維度:np.expand_dims(y,-1)
kullback_leibler_divergence:從預測值概率分佈Q到真值概率分佈P的信息增益,用以度量兩個分佈的差異.
poisson:即(predictions - targets * log(predictions))的均值
cosine_proximity:即預測值與真實標籤的餘弦距離平均值的相反數
損失函數公式
https://zhuanlan.zhihu.com/p/34667893
二分類-報錯
關於損失函數的藏奸報錯:
用Keras做文本二分類,總是遇到如題錯誤,
我的類別是0或1,但是錯誤跟我說不能是1.
參見:Received a label value of 1 which is outside the valid range of [0, 1) - Python, Keras
loss function的問題。
原來用的是sparse_categorical_crossentropy,
改爲binary_crossentropy問題解決。
優化器
https://www.cnblogs.com/xiaobingqianrui/p/10756046.html