回归损失函数: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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步