回归损失函数:Log-Cosh Loss
回归损失函数:Log-Cosh Loss
Log-Cosh损失函数
Log-Cosh是应用于回归任务中的另一种损失函数,它比L2损失更平滑。Log-cosh是预测误差的双曲余弦的对数。

优点:
对于较小的X值,log(cosh(x))约等于(x ** 2) / 2;对于较大的X值,则约等于abs(x) - log(2)。这意味着Log-cosh很大程度上工作原理和平均方误差很像,但偶尔出现错的离谱的预测时对它影响又不是很大。它具备了Huber损失函数的所有优点,但不像Huber损失,它在所有地方都二次可微。
但Log-cosh也不是完美无缺。如果始终出现非常大的偏离目标的预测值时,它就会遭受梯度问题。
Log-cosh损失函数的Python代码:
# log cosh 损失
def logcosh(true, pred):
loss = np.log(np.cosh(pred - true))return np.sum(loss)
- 1
- 2
- 3
摘录:https://zhuanlan.zhihu.com/p/39239829

-
from keras.layers import Input,Embedding,LSTM,Dense -
from keras.models import Model -
from keras import backend as K -
-
word_size = 128 -
nb_features = 10000 -
nb_classes = 10 -
encode_size = 64 -
-
input = Input(shape=(None,)) -
embedded = Embedding(nb_features,word_size)(input) -
encoder = LSTM(encode_size)(embedded) -
predict = Dense(nb_classes)(encoder) -
-
# log cosh 损失 def logcosh(true, pred): loss = np.log(np.cosh(pred - true))return np.sum(loss) -
def mycrossentropy(y_true, y_pred, e=0.1): -
return (1-e)*K.categorical_crossentropy(y_pred,y_true) + e*K.categorical_crossentropy(y_pred, K.ones_like(y_pred)/nb_classes) -
-
model = Model(inputs=input, outputs=predict) -
model.compile(optimizer='adam', loss=mycrossentropy)
浙公网安备 33010602011771号