损失函数(loss function)或代价函数(cost function)是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数。在应用中,损失函数通常作为学习准则与优化问题相联系,即通过最小化损失函数求解和评估模型

损失函数_百度百科 (baidu.com)

二分类交叉熵损失(sigmoid_cross_entropy)

  • 介绍: 一般被称作sigmoid
  • 公式:
  • 代码:

1
keras :binary_crossentropy(y_true, y_pred)

二分类平衡交叉熵损失balanced_sigmoid_cross_entropy:

  • 介绍:该损失也是用于2分类的任务,相比于sigmoid_cross_entrop的优势在于引入了平衡参数 ,可以进行正负样本的平衡,得到比sigmoid_cross_entrop更好的效果
  • 公式:

多分类交叉熵损失softmax_cross_entropy:

  • 介绍:通常被称为softmax,被用于多分类,是sigmoid的推广
  • 公式:

  • 代码:

1
2
categorical_crossentropy(y_true, y_pred)
sparse_categorical_crossentropy(y_true, y_pred)

focal loss:

  • 简介:focal loss主要用于解决多分类任务中样本不平衡的现象,可以获得比softmax_cross_entropy更好的分类效果。

  • 公式:

  • 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
tensorflow:
def dice_coefficient(y_true_cls, y_pred_cls):
    '''
    dice loss
    :param y_true_cls:
    :param y_pred_cls:
    :return:
    '''
    eps = 1e-5
    intersection = tf.reduce_sum(y_true_cls * y_pred_cls )
    union = tf.reduce_sum(y_true_cls ) + tf.reduce_sum(y_pred_cls) + eps
    loss = 1. - (2 * intersection / union)
    tf.summary.scalar('classification_dice_loss', loss)
    return loss

dice loss:

  • 简介:2分类任务时使用的loss,本质就是不断学习,使得交比并越来越大。
  • 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
def dice_coefficient(y_true_cls, y_pred_cls):
    '''
    dice loss
    :param y_true_cls:
    :param y_pred_cls:
    :return:
    '''
    eps = 1e-5
    intersection = tf.reduce_sum(y_true_cls * y_pred_cls )
    union = tf.reduce_sum(y_true_cls ) + tf.reduce_sum(y_pred_cls) + eps
    loss = 1. - (2 * intersection / union)
    tf.summary.scalar('classification_dice_loss', loss)
    return loss

合页损失hinge_loss:

  • 简介:也叫铰链损失,是svm中使用的损失函数。由于合页损失优化到满足小于一定gap距离就会停止优化,而交叉熵损失却是一直在优化,所以,通常情况下,交叉熵损失效果优于合页损失。
  • 公式:

  • 代码:

1
hinge(y_true, y_pred)

Connectionisttemporal classification(ctc loss):

  • 简介:对于预测的序列和label序列长度不一致的情况下,可以使用ctc计算该2个序列的loss,主要用于文本分类识别和语音识别中。(nlp常用)
  • 代码:

1
2
3
4
5
6
tf.keras.backend.ctc_batch_cost(
    y_true,
    y_pred,
    input_length,
    label_length
)

edit loss:

  • 简介:编辑距离,也叫莱文斯坦Levenshtein 距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
    该损失函数的优势在于类似于ctc loss可以计算2个长度不等的序列的损失。
  • 代码:

1
2
3
4
5
6
tf.edit_distance(
    hypothesis,
    truth,
    normalize=True,
    name='edit_distance'
)

 
目前共有0条评论
  • 暂无Trackback
你目前的身份是游客,评论请输入昵称和电邮!