分类任务中的logits:从原始分数到概率转换的深度解析

1. 从“原始分数”到“概率”:logits到底是什么?

如果你刚开始接触深度学习做分类任务,可能会被一个词搞懵:logits。模型训练的时候,各种指标看着都挺好,一到实际预测,输出的东西怎么是一堆看起来毫无规律的、正负都有的数字?这玩意儿怎么就成了“猫”或者“狗”的预测结果?别急,这堆数字就是logits,理解它是你真正搞懂模型如何“思考”和“决策”的第一步。

简单来说,你可以把logits想象成一场考试后,老师给每个学生打的“原始卷面分”。这个分数没有经过任何处理,可能因为题目难度不同,有的学生得了150分,有的可能才30分,分数之间没有可比性,更不能直接说“150分的学生有100%的概率是优秀”。在神经网络里,尤其是分类任务的最后一层(通常是全连接层),模型会为每一个可能的类别(比如猫、狗、兔子)计算出一个这样的“原始分数”,这就是logits。它代表了模型对输入样本属于某个类别的“原始信心度”,分数越高,信心越强,但这个信心还没有被标准化,不能直接当作概率来用。

我刚开始用PyTorch做图像分类时,就踩过这个坑。当时我训练了一个10分类的模型,在验证集上准确率有92%,高兴坏了。然后我兴冲冲地打印出模型对一张猫图片的最终输出,看到的却是类似 [2.1, -1.3, 0.4, 5.8, ...] 这样的数组。我当时就愣住了,心想:“这5.8是啥?概率吗?可它比1大啊!这模型到底想说什么?” 后来才明白,我需要一个“转换器”,把这些原始的信心分数,变成我们人类能理解的、所有选项加起来等于100%的概率形式。这个关键的“转换器”,最常用的就是 softmax函数

所以,logits是模型最“诚实”的原始输出,它尚未经过任何美化或归一化。理解logits到概率的转换,不仅仅是调用一个API那么简单,它关系到你如何解读模型的置信度、如何设计损失函数(比如直接使用logits的交叉熵损失),以及如何在生产环境中处理那些“模棱两可”的预测案例。接下来,我们就一层层剥开这个过程。

2. Softmax:将信心“标准化”为概率的神奇转换

现在我们知道logits是原始分了,那怎么把它变成我们熟悉的概率呢?这就轮到softmax函数登场了。你可以把它看作一个“标准化部门”或者“投票计票系统”,它的核心工作就两条:第一,确保所有类别的输出值都在0到1之间;第二,确保所有类别的输出值加起来等于1。这样一来,每个值就自然成了一个可以被解释为“概率”的数值了。

它的公式看起来可能有点唬人:softmax(z_i) = e^{z_i} / sum(e^{z_j})。别怕,我们拆开看。这里的 z_i 就是第i个类别的logits值。e^{z_i} 是对这个logits取指数,这个操作非常关键,因为它能把所有负数变成正数(因为指数结果永远大于0),并且会放大较大值之间的差距。分母 sum(e^{z_j}) 是对所有类别的指数结果求和,相当于一个“总信心值”。最后,每个类别的指数结果除以这个总和,就得到了它的“概率”。

我举个例子你就明白了。假设我们做一个三分类(苹果、香蕉、橘子),模型对某张图片输出的logits是 [2.0, 1.0, 0.1]

  1. 第一步,取指数:e^2.0 ≈ 7.39, e^1.0 ≈ 2.72, e^0.1 ≈ 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值