Skip to content

Softmax 函数:把 AI 的"打分"变成"概率"

更新: 7/11/2026 字数: 0 字 时长: 0 分钟

模块一:背景——Softmax 要解决什么问题?

想象你训练了一个 AI 来识别图片里是猫、狗还是兔子。AI 看完一张图后,会给每个选项打个分,比如:猫 3.2 分、狗 5.1 分、兔子 -1.0 分。

问题来了:这几个分数又是正又是负、大小随意,人看着一头雾水。 我们真正想要的是一个清楚的答案:"这张图有百分之多少可能是狗?" 也就是说,我们希望 AI 给出的是能加起来正好等于 100% 的概率,而不是一堆杂乱的原始分数。

Softmax 干的就是这件事:把 AI 输出的一堆乱七八糟的分数,转换成一份规规矩矩、加起来正好 100% 的概率清单。

杂乱的原始得分,被转成总和100%的概率

它的典型应用场景,基本都是**"多选一"的分类任务**:图片识别(是猫是狗)、文本分类(这条评论是好评/中评/差评)、大语言模型猜下一个词(在几万个候选词里挑一个),等等。凡是需要"从多个选项里给出各自可能性"的地方,几乎都有 Softmax 的身影。

模块二:核心概念与原理——它是怎么算的?

Softmax 的计算,可以拆成傻瓜式的三步,配上大白话你就懂了。

第一步:把每个分数"求指数",全变成正数并拉开差距。

原始分数有正有负不好办,Softmax 先给每个分数做一个叫"求指数"的操作(就是算 e 的多少次方,你不用管细节)。这一步有两个效果:一是所有数都变成正数了(概率不能是负的);二是分数越高的,被放得越大、越突出

打个比方,这就像比赛领奖台——本来只领先一点点的选手,被明显地抬得更高、更亮眼。 高分被进一步凸显,低分被压得更不起眼。

指数放大:高分被进一步凸显出来

第二步:把这些正数全加起来,得到一个总和。

第三步:用每个数除以这个总和,得到各自的占比。

第三步就是最关键的"归一化"——大白话就是**"算占比"。比如分好蛋糕:每个选项占整块蛋糕的多少份额,那个比例就是它的概率。因为是"各自份额 ÷ 总量",所以所有比例加起来必然正好是 100%**。

经过这三步,开头那组乱分数"猫 3.2、狗 5.1、兔子 -1.0",就变成了清清楚楚的"猫 10%、狗 85%、兔子 5%"。AI 于是自信地告诉你:这大概率是只狗。

用一句话概括 Softmax 的核心作用:它把一堆无法直接解读的原始分数,转化成了一份总和为 1(即 100%)的概率分布,既凸显了最高分选项,又让结果一目了然。

模块三:补充进阶知识点

1. Softmax 和 Sigmoid,啥时候用哪个?

这俩经常被搞混,其实分工很清楚,关键看你的任务是**"多选一"还是"独立判断"**。

Sigmoid 管单题判断,Softmax 管多选一

  • Softmax:管"多选一,选项互斥"。 几个选项里只能选一个,它们的概率会互相抢份额、此消彼长,加起来是 100%。比如"这张图是猫还是狗还是兔子"——只能是其中一个。
  • Sigmoid:管"单个是非题,各自独立"。 它一次只判断一件事"是/否"的可能性,给出一个 0 到 100% 的值。多个 Sigmoid 判断之间互不干扰、不用加起来等于 100%。比如给一张图打多个标签:"有没有猫?有没有草地?有没有阳光?"——这几件事可以同时成立,互不影响。

一句话记:"从几个里挑一个"用 Softmax;"逐个判断有没有/是不是"用 Sigmoid。

2. 数值溢出问题:分数太大会"算爆"

前面说 Softmax 第一步要"求指数"。但指数增长非常吓人,如果某个原始分数很大(比如 1000),算出来的数会大到计算机存不下,直接"爆表"(专业叫数值溢出),导致程序出错。

解决办法特别巧妙也特别简单:在做指数运算前,把所有分数都减去它们当中的最大值。 这样最大的分数变成 0,其余都是负数,算指数时结果都落在 0~1 之间,不会爆表。而且神奇的是,这么减完全不影响最终算出来的概率结果(因为大家都减同一个数,占比不变)。所以现在成熟的工具库(比如 PyTorch、TensorFlow)里,这步防溢出处理都是自动帮你做好的,你平时用的时候基本不用操心。


** Softmax 就是 AI 分类任务里的"计分换算器"——把一堆看不懂的原始分数,变成加起来正好 100%、还能凸显最优选项的概率清单,让机器能干脆利落地告诉你"最可能是哪个"。