神经网络

softmax(柔性最大值,softmax)

/ SOFT-maks /

softmax 是把一小撮原始分数变成一组加起来等于 1 的概率的函数。想象一场选举,每位候选人都有一个得票数,你想把这些票数换算成得票百分比——只不过 softmax 是用一种特别的方式来做,它会夸大领先者。它把每个分数过一遍指数运算(指数会放大较大的数),再除以总和,于是一切都利落地加到 100%。结果是一个横跨所有选项的、干净的概率分布。

这是任何多于两个类别的分类问题的标准收尾一步——「这张图是猫、狗、马还是鸟?」网络给每个类别产生一个原始分数,softmax 把它们换算成彼此竞争的概率,比如 0.7、0.2、0.08、0.02,你只需读出最可能的答案即可。softmax 是 sigmoid 的多类表亲:sigmoid 处理单个「是/否」,softmax 则处理「在多个里挑一个」,而这些选项彼此此消彼长——一个升上去,其余的就必须降下来。

两句诚实的提醒。其一,softmax 的输出总是看起来像自信的概率,哪怕模型其实错了;一个 0.99 并不保证是真相,只是一张强烈的内部选票。其二,softmax 假定恰好只有一个答案正确——这些概率相互竞争、加和为 1——所以当多个标签可能同时成立时(一张照片既是「海滩」又是「日落」),它就是用错了工具;那种情形你该改用若干个各自独立的 sigmoid。

一个数字识别器看着一个手写的 7,给 0–9 这十个数字各产生一个原始分数。经过 softmax 后,概率可能读作:「7」→ 0.88,「1」→ 0.07,「9」→ 0.03,其余的都很小。它们加起来等于 1.00,模型自信地选了 7——同时仍承认它有一点点可能是个潦草的 1。

softmax 把每个类别的原始分数变成彼此竞争、加起来恰好等于 1 的概率。

softmax 强制这些概率相互竞争、加和为 1,所以它适合「恰好只有一个正确答案」的情形。当多个标签可能同时为真时,应改用每个标签各自独立的 sigmoid。还有,softmax 分数高只代表置信度高,并不保证就正确。

又称
softmax functionnormalized exponential归一化指数函数柔性最大值歸一化指數