【AI数学】交叉熵损失函数CrossEntropy
admin
2024-03-20 03:33:23
0

交叉熵损失(CrossEntropyLoss)函数是分类任务里最常见的损失函数。

当然,CrossEntropy(以下简称“CE”)的作用不仅仅是在简单的分类任务里,比如最近大火的图文多模态模型CLIP就用到CE来进行对比学习,稍微改造一下变成Symmetrical Cross Entropy

交叉熵不具有对称性,所以交换变量位置,会导致数值不同。所以,在使用Pytorch内置交叉熵损失函数时,记得注意顺序:(label记得放在后面)

import torch.nn.functional as F
loss = F.cross_entropy(logits, label)

简单来说,交叉熵可以用来描述两个分布的差别。先看公式,
CrossEntropy(p,q)=−Σk=1Klog(p(k))q(k)CrossEntropy(p, q) = -\Sigma_{k=1}^K log(p(k))q(k)CrossEntropy(p,q)=−Σk=1K​log(p(k))q(k)
这里的p是我们模型输出,而q是我们的label。
通常,在分类任务里,我们的label通常是one-hot类型,假设我们应对三分类任务,有label = [1, 0, 0]代表第0类是正例。那么,CE就变得好算了:

logits = [0.3, 0.5, 0.2]
label = [1, 0, 0]
CE = -(1*log(0.3)) - (0*log(0.5)) - (0*log(0.2)) = -log(0.3)

上面是一段伪代码,代表CE的计算。在Pytorch里,CE里面有一个暗坑,没注意就会犯错,那就是CE会先给你做一个softmax(不了解softmax的,可戳《通俗易懂的Softmax》)再进行上述计算。我们看实验代码便知:

import torch
from math import log
import torch.nn.functional as Flogits = torch.Tensor([[0.8, 0.3, 1.2]]) # pre-softmax
label = torch.Tensor([[1, 0, 0]])
loss = F.cross_entropy(logits, label)
print(loss)softmax_logits = F.softmax(logits, dim=-1) # post-softmax
loss_check = - (log(softmax_logits[0][0]))
print(loss_check)

上面代码的lossloss_check是相等的,由此可知,Pytorch内置的CE函数会将logits加一层softmax,所以,咱们不用画蛇添足在输入CE前再加一个softmax了。


进阶

面对一个batch时,label有两种表达方式。

  1. logits具有相同的shape:
logits = torch.Tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
label = torch.Tensor([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
loss = F.softmax(logits, label, reduction='mean')

比较好理解,分别算logits[i]和label[i]的CE,最后求平均,或者设置reduction='sum'求和;

  1. 假设batch size为n,label的shape可以为(1, n)
logits = torch.Tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
label = torch.arange(3)
loss = F.softmax(logits, label, reduction='mean')

这段代码和上面的代码是等效的当label的维度低于logits纬度时,CE函数会把label理解成one-hot的简写,比如label = [1, 2, 0]等效于[[0, 1, 0], [0, 0, 1], [1, 0, 0]]。
第二种用法属实诡异,一不小心就理解不对代码的意思。

参考:https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html#torch.nn.CrossEntropyLoss

相关内容

热门资讯

近一年涨364%,近两年468... 来源:今晚吃基 今天前海开源的两则公告引起我的注意。 前海开源沪港深乐享生活、前海开源人工智能主题混...
美伊、霍尔木兹海峡,最新消息!... 特朗普称与伊朗的谈判进展顺利,霍尔木兹海峡通航量上升,油价维持弱势震荡。另外,特朗普要求中东多国与以...
原创 刚... 4月21日下午,当宁德时代超级科技日的大屏幕亮起时,台下不少行业人士都愣了一下。宁德时代宣布,备受瞩...
俄罗斯知名巧克力品牌优化增效 【环球时报综合报道】俄罗斯最大巧克力生产商之一“联合糖果”正优化生产。“联合糖果”公司(旗下品牌包括...
三星半导体员工协商达成年均奖金... 但这份协议对三星而言仍可能是一次胜利,因为其奖金总额低于本土竞争对手SK海力士。 三星与曾威胁发起罢...
Google亲手把搜索框做成了... Google I/O 2026开完了。如果你以为这家公司又在炫酷炫技术,那你猜对了一半——另一半是,...
女子把2万多克黄金存珠宝店,金... 浙江杭州的林女士反映,她是做黄金生意的,从2024年7月开始,分48次陆续将22917.462克黄金...
000638,终止上市!9股获... 今日(5月25日),A股三大指数集体收涨,上证指数报收4152.57点,上涨0.96%;深证成指上涨...
原创 人... 人民币这波行情,最戏剧性的一幕发生在5月13日。当天即期收盘价直接砸到6.7905,正式踏进6.7区...
燕文物流、闪回科技、金龙电机、... 每经记者:李旭馗 每经编辑:袁东 |2026年5月26日 星期二| NO.1燕文物流、闪回科技、金龙...
一代互联网招聘神话,破产了 消费赛道雷声滚滚,招聘赛道也未能幸免。 近日,招聘行业再传重磅消息,曾被无数互联网人视作“跳槽圣地”...
字节反击腾讯称“都是卖猪食的,... 澎湃新闻记者 范佳来 实习生 吴亦菲 抖音副总裁李亮辟谣“反击腾讯”。 近日,有传言称腾讯、字节跳动...
国有大型银行板块5月25日涨0... 证券之星消息,5月25日国有大型银行板块较上一交易日上涨0.02%,中国银行领涨。当日上证指数报收于...
金属包装行业的主流发展趋势 绿色环保、智能化生产、高端化与个性化、行业整合及国际化拓展是当前金属包装行业的主要发展趋势。 绿色...
投资也有流量密码?带你了解自由... 风险提示:基金有风险,投资需谨慎。
美债收益率破5%:全球资产定价... 导读 4月美国通胀数据超预期反弹、美联储新主席沃什近期就任、中东地缘冲突推升油价、美国财政赤字高企与...
烁威光电同步完成两轮Pre-A... 【大河财立方消息】近日,北京烁威光电科技有限公司(以下简称“烁威光电”)同步完成两轮合计金额超亿元融...
库克将迎CEO告别演讲,此后转... 5月25日,知名科技记者马克 · 古尔曼发文称,今年苹果全球开发者大会 (WWDC) 将是库克作为苹...
北京集中约谈17家重点平台企业... 据北京市市场监督管理局5月25日消息,为加强平台经济监管,规范6·18期间平台经营行为,近日,北京市...
原创 日... 你是否听过下面这些管理名言:”永远站在顾客的立场思考问题“、”盯住客户,而不是竞争对手“、”比业绩更...