CrossEntropy Loss 学习记录

一直对CrossEntropy Loss的概念比较模糊,今天看了一下,终于理解,记录一下防止忘记!

首先要明白交叉熵的概念
交叉熵主要是用来判定实际的输出与期望的输出的接近程度,交叉熵越小则表明模型的不确定性越小,模型越稳定。
原版交叉熵函数为
在这里插入图片描述
其中p为期望输出(label),q为实际输出概率。
而在CrossEntropy Loss中用到的交叉熵函数为
在这里插入图片描述
在CrossEntropy Loss 中, target 采用one-hot 的形式,即除了label位置为1,其余均为0
其中去掉了原版函数的后半部分,因为模型所需要的是实际输出与期望输出越接近越好。如果加上后半部分,即使期望输出与实际输出完全不同(one hot 对应位置为0),也会得到一个很小的H(p,q)值,那么会对模型起一个误导的作用,模型认为自己学到了相关的知识,但实际上完全学错了方向。去掉后半部分就相当于去掉了一个干扰项,能够让模型更好的学习到所需知识,缩小loss。

上面的公式只是针对一个类别而言,当任务为多分类任务时,需对每一类别都采用上述公式,并最后加起来。
在计算交叉熵之前,需要先计算出每一类别的概率,即需要先采用softmax,将输出计算为概率。

nn.torch.CrossEntropy Loss中,将softmax log 和 NLLLoss 结合在一起
CrossEntropy Loss = Softmax + log + NLLLoss
在这里插入图片描述
x[class] 表示只需要计算label对应部分即可,详细可看一下NLLLoss的介绍。
用CrossEntropy Loss作损失函数的模型不需要在输出时Softmax。

CrossEntropy Loss 还可以设置每一类别的权重,以应对类别不平衡的情况
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值