You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何神经网络中频繁使用自然常数e?涉及Sigmoid与Softmax函数

关于神经网络中Sigmoid和Softmax选用自然常数e的原因

一、Sigmoid函数为何用e而非2?

  • 导数计算简洁:Sigmoid的表达式是 σ(x) = 1/(1+e^(-x)),它的导数刚好是 σ(x)*(1-σ(x)),这个形式在反向传播时计算异常方便,不需要额外存储复杂的中间值,能大幅降低计算成本。如果换成2的话,导数会变成 σ(x)*(1-σ(x))*ln2,多了一个常数项,虽然不影响收敛,但增加了不必要的计算步骤。
  • 数学自然性:e的指数函数是唯一满足导数等于自身的函数(d/dx e^x = e^x),这种特性在微积分和概率统计中是基础属性,很多推导都会默认使用e,比如逻辑回归的对数似然函数会因为e的存在变得更简洁,更容易求解最优解。
  • 二分类任务的实际效果:用2的话确实能把值压缩到0-1区间,但本质上和用e的Sigmoid只是线性缩放关系,σ_2(x) = 1/(1+2^(-x)) 等价于 σ(kx)(其中k=ln2),最终模型的表达能力没有区别,只是训练时学习率可能需要调整。但因为e的导数优势,工业界和学术圈都默认使用e版本的Sigmoid。

二、Softmax为何用e^x / sum(e^x)而非其他形式?

  • 合法概率输出:Softmax的输出严格满足概率的两个核心要求:所有值在[0,1]区间,且总和为1。如果用x/sum(abs(x)),当输入存在负数时,输出会出现负值,完全不符合概率的定义;若输入全为负,结果全是负数,根本无法表示类别概率。
  • 放大类别差异:e^x是单调递增函数,且对大的输入增长极快、小的输入增长缓慢,这能让模型训练时更清晰地放大正确类别与错误类别的差距。比如输入x1=3、x2=1,e^3=20.08、e^1=2.71,Softmax输出分别为0.88和0.12,差异明显;如果用x/sum(x)(假设输入全正),结果是0.75和0.25,差异被缩小,模型很难学到清晰的类别边界。
  • 与交叉熵损失的适配性:Softmax搭配交叉熵损失是分类任务的标准组合,交叉熵损失 -sum(y_true * ln(y_pred)) 结合Softmax后,反向传播的梯度计算异常简洁,还能有效缓解梯度消失问题。如果换用其他归一化方式,梯度推导会变得复杂,甚至可能出现梯度爆炸或消失,严重影响模型训练。

内容的提问来源于stack exchange,提问作者Hermaeus Mora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:03:33