Log-Cosh损失函数

Log-Cosh是应用于回归任务中的另一种损失函数,它比L2损失更平滑。Log-cosh是预测误差的双曲余弦的对数。
回归损失函数:Log-Cosh Loss
回归损失函数:Log-Cosh Loss
优点:
对于较小的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

 

回归损失函数:Log-Cosh Loss

 

 

    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)

相关文章:

  • 2021-09-24
  • 2022-12-23
  • 2021-11-30
  • 2021-05-08
  • 2021-06-16
  • 2021-12-31
猜你喜欢
  • 2021-08-30
  • 2019-12-17
  • 2022-01-09
  • 2021-05-06
  • 2021-11-17
相关资源
相似解决方案