随笔 - 492  文章 - 280  评论 - 53  阅读 - 120万

回归损失函数: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

 

 

 

    1. from keras.layers import Input,Embedding,LSTM,Dense
    2.  
      from keras.models import Model
    3.  
      from keras import backend as K
    4.  
       
    5.  
      word_size = 128
    6.  
      nb_features = 10000
    7.  
      nb_classes = 10
    8.  
      encode_size = 64
    9.  
       
    10.  
      input = Input(shape=(None,))
    11.  
      embedded = Embedding(nb_features,word_size)(input)
    12.  
      encoder = LSTM(encode_size)(embedded)
    13.  
      predict = Dense(nb_classes)(encoder)
    1.  
    2. # log cosh 损失
      def logcosh(true, pred):
          loss = np.log(np.cosh(pred - true))return np.sum(loss)
    3.  
      def mycrossentropy(y_true, y_pred, e=0.1):
    4.  
      return (1-e)*K.categorical_crossentropy(y_pred,y_true) + e*K.categorical_crossentropy(y_pred, K.ones_like(y_pred)/nb_classes)
    5.  
       
    6.  
      model = Model(inputs=input, outputs=predict)
    7.  
      model.compile(optimizer='adam', loss=mycrossentropy)
posted on   曹明  阅读(1592)  评论(0编辑  收藏  举报
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示