tf 损失函数_损失函数理解汇总,结合PyTorch和TensorFlow2

说明:讲解时会对相关文章资料进行思想、结构、优缺点,内容进行提炼和记录,相关引用会标明出处,引用之处如有侵权,烦请告知删除。转载请注明:DengBoCong本文打算讨论在深度学习中常用的十余种损失函数(含变种),结合PyTorch和TensorFlow2对其概念、公式及用途进行阐述,希望能达到看过的伙伴对各种损失函数有个大致的了解以及使用。本文对原理只是浅尝辄止,不进行深挖,感兴趣的伙伴可以针对每...
摘要由CSDN通过智能技术生成

c04c58e85bba579224004a02feec3e14.png
说明:讲解时会对相关文章资料进行思想、结构、优缺点,内容进行提炼和记录,相关引用会标明出处,引用之处如有侵权,烦请告知删除。
转载请注明:DengBoCong

本文打算讨论在深度学习中常用的十余种损失函数(含变种),结合PyTorch和TensorFlow2对其概念、公式及用途进行阐述,希望能达到看过的伙伴对各种损失函数有个大致的了解以及使用。本文对原理只是浅尝辄止,不进行深挖,感兴趣的伙伴可以针对每个部分深入翻阅资料。

使用版本:

  • TensorFlow2.3
  • PyTorch1.7.0

868720af269981e2f02a8bbb081a849b.png

d039f47a91b272443268c5591c00093f.png

交叉熵损失(CrossEntropyLoss)

对于单事件的信息量而言,当事件发生的概率越大时,信息量越小,需要明确的是,信息量是对于单个事件来说的,实际事件存在很多种可能,所以这个时候熵就派上用场了,熵是表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望。交叉熵用来描述两个分布之间的差距,交叉熵越小,假设分布离真实分布越近,模型越好

在分类问题模型中(不一定是二分类),如逻辑回归、神经网络等,在这些模型的最后通常会经过一个sigmoid函数(softmax函数),输出一个概率值(一组概率值),这个概率值反映了预测为正类的可能性(一组概率值反应了所有分类的可能性)。而对于预测的概率分布和真实的概率分布之间,使用交叉熵来计算他们之间的差距,换句不严谨的话来说,交叉熵损失函数的输入,是softmax或者sigmoid函数的输出。交叉熵损失可以从理论公式推导出几个结论(优点),具体公式推导不在这里详细讲解,如下:

  • 预测的值跟目标值越远时,参数调整就越快,收敛就越快;
  • 不会陷入局部最优解

交叉熵损失函数的标准形式(也就是二分类交叉熵损失)如下:

其中,

表示样本
的标签,正类为1,负类为0,
表示样本
预测为正的概率。

多分类交叉熵损失如下:

其中,

表示类别的数量,
表示变量(0或1),如果该类别和样本
的类别相同就是1,否则是0,
表示对于观测样本
属于类别
的预测概率。

Tensorflow:

  • BinaryCrossentropy:二分类,经常搭配Sigmoid使用
tf.keras.losses.BinaryCrossentropy(from_logits=False, label_smoothing=0, reduction=losses_utils.ReductionV2.AUTO, name='binary_crossentropy')
参数:
	from_logits:默认False。为True,表示接收到了原始的logits,为False表示输出层经过了概率处理(softmax)
	label_smoothing:[0,1]之间浮点值,加入噪声,减少了真实样本标签的类别在计算损失函数时的权重,最终起到抑制过拟合的效果。
	reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • binary_crossentropy
tf.keras.losses.binary_crossentropy(y_true, y_pred, from_logits=False, label_smoothing=0)
参数:
	from_logits:默认False。为True,表示接收到了原始的logits,为False表示输出层经过了概率处理(softmax)
	label_smoothing:[0,1]之间浮点值,加入噪声,减少了真实样本标签的类别在计算损失函数时的权重,最终起到抑制过拟合的效果。
  • CategoricalCrossentropy:多分类,经常搭配Softmax使用
tf.keras.losses.CategoricalCrossentropy(from_logits=False, label_smoothing=0, reduction=losses_utils.ReductionV2.AUTO, name='categorical_crossentropy')
参数:
	from_logits:默认False。为True,表示接收到了原始的logits,为False表示输出层经过了概率处理(softmax)
	label_smoothing:[0,1]之间浮点值,加入噪声,减少了真实样本标签的类别在计算损失函数时的权重,最终起到抑制过拟合的效果。
	reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • categorical_crossentropy
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值