通过MCP连接 →

输入计算

请输入 K 个实数,用逗号、空格或换行分隔。

数学公式

广告

结果

Softmax σ(z)
0.0900305732, 0.2447284711, 0.6652409558
概率分布(总和为 1)
向量长度 K 3
输出值总和 1
Argmax(从 1 开始的索引) 3
最大概率 0.6652409558

什么是 Softmax 函数?

Softmax 函数可以把一个包含 K 个实数的向量转换成一组概率分布:每个输出值都严格介于 0 和 1 之间,且全部 K 个输出值相加恰好等于 1。它是神经网络分类器输出层最常用的激活函数,能够把模型的原始得分(logits)转换为各个类别的概率。由于 Softmax 是无量纲的,所以输入值都是没有单位的纯数字。

扁平图示展示三个实数的向量转换为总和为一的三个概率条形
Softmax 将实数向量映射为总和为 1 的概率分布。

如何使用本计算器

在输入框中填入你的向量,数字之间用逗号、空格或换行分隔即可(例如 1, 2, 3)。这些数字可以是正数、负数、零或小数。点击计算后,你将得到每个分量对应的 Softmax 概率、所有输出值的总和(应等于 1),以及 argmax——即最大概率所在的位置(从 1 开始计数的索引)。

公式详解

对于第 j 个分量,Softmax 的计算公式为 \(\sigma(z)_j = e^{z_j} / \sum_{k} e^{z_k}\)。取指数运算可以让每一项都变成正数,再除以总和进行归一化,使它们相加等于 1。为了保证数值稳定,本计算器会在取指数之前,先从每个元素中减去最大值 \(m\):

$$\sigma(z)_j = \frac{e^{\,z_j - m}}{\displaystyle\sum_{k} e^{\,z_k - m}}$$

其中的公共因子 \(e^{-m}\) 会在上下相约后抵消,因此结果完全相同,同时还能避免输入值过大时发生溢出。

Advertisement
展示 softmax 公式结构的扁平图示,指数除以指数之和
每个输出都是某个元素的指数除以所有元素指数之和。

实例演示

以 \(z = (1, 2, 3)\) 为例:\(e^{1} = 2.71828\),\(e^{2} = 7.38906\),\(e^{3} = 20.08554\),三者之和为 \(30.19287\)。用每一项分别除以这个总和,得到 \(\sigma = (0.09003, 0.24473, 0.66524)\),它们相加正好等于 1。argmax 为索引 3,对应最大的输入值,其概率为 \(0.66524\)。

常见问题

为什么输出值的总和始终等于 1?因为每个指数项都被所有指数项的总和除过一次,这种归一化处理保证了它们相加必然为 1。

如果所有输入值都相等会怎样?结果会是一个均匀分布,每个输出值都等于 \(1/K\)。

给每个输入都加上同一个常数,结果会改变吗?不会。Softmax 具有平移不变性:给所有输入加上相同的常数 \(c\),输出结果保持不变——这正是「减去最大值」这一做法安全可靠的原因。

最后更新: