R

Softmax

创建 2026-06-07 更新 2026-06-07 10 条双链 共创

Softmax

一句话定义

Softmax 是把一组实数(logits)变成和为 1 的概率分布的函数——它是 LLM 输出层、Attention 权重、MoE Router 三处共用的核心数学组件,几乎所有”哪个候选项更可能”的选择都通过它。

数学定义

P(i) = exp(x_i) / Σⱼ exp(x_j)

性质:

  • 输出和为 1,每项 ∈ (0, 1)
  • 平移不变性:softmax(x + c) = softmax(x)(用于数值稳定化)
  • 单调性:x_i 越大 → P(i) 越大
  • 指数放大:x 的差距经 exp 放大,小差距变成大概率差距——这是它”挑赢家”的根源

数值稳定化(工程必做)

朴素实现的灾难:x_i = 1000 时 exp(1000) 直接溢出。

减最大值技巧

m = max(x)
P(i) = exp(x_i - m) / Σⱼ exp(x_j - m)

由平移不变性,结果不变,但所有指数变为 ≤ 0,最大为 1,永不溢出。这是 PyTorch / NumPy 内置实现的标准做法。

log-sum-exp:训练时配套使用 log P(i) = (x_i - m) - log Σⱼ exp(x_j - m),避免概率项过小导致下游 log 取无穷。

在 LLM 中的三个关键位置

1. Attention 权重

softmax(QK^T / √d_k) 把”Q 与每个 K 的相似度”转成”我应该多关注哪些 token”的权重。

为什么除以 √d_k:避免大 d_k 下点积值过大、softmax 饱和(接近 one-hot)、梯度消失。

2. 输出层(Token 采样)

模型最后一层产出 vocab 大小的 logits → softmax 转概率 → 按策略采样下一个 token。

3. MoE Router

每个 token 经 router 网络得到 N_expert 个 logits → softmax → 选 Top-K experts。

DeepSeek-V3 等先进 MoE 不直接用 softmax 路由(路由稳定性差),改用 sigmoid + auxiliary-loss-free balance,但 softmax 仍是经典 baseline。

Temperature 与采样策略族

Temperature T:在 softmax 前给 logits 除以 T

P(i) = exp(x_i / T) / Σⱼ exp(x_j / T)

T 区间分布形态行为典型用途
T → 0退化为 one-hot贪心解码数学 / 代码(确定性)
T = 0.3-0.5偏尖锐保守客服 / 总结
T = 0.7-1.0标准平衡通用对话
T > 1.0平坦多样创意写作 / 头脑风暴
T → ∞趋近均匀无意义随机(理论极限)

搭配的截断采样

  • Top-K:只保留概率前 K 个 token 重新归一化(典型 K=40-50)
  • Top-P / Nucleus:累积概率达 P 的最小集合(典型 P=0.9-0.95),动态调整候选规模
  • Min-P:保留概率 ≥ P_max × p 的 token(自适应过滤)
  • Mirostat:动态调温目标 perplexity 守恒

实际生产线常用组合:temperature=0.7, top_p=0.95, top_k=50

与幻觉的关系

面对边缘知识时,模型必定通过相邻概念的概率插值强行输出。

机制:训练数据没覆盖的领域 → logits 在多个候选间分布平摊 → softmax 仍会输出一个”看起来确定”的最大值 → 模型说出未验证内容。

这就是 幻觉 的数学根源之一:softmax 没有”我不知道”这一项。它强制把概率全部分配给 vocab 内 token,没有 abstain 选项。

研究方向

  • 设置 logit 阈值,低于阈值时拒答(Selective Prediction)
  • 用 calibration 校准 softmax,让低置信度可识别
  • Conformal Prediction:返回可能集合而非单点
  • Constitutional AI / RLHF 训练”我不知道”动作

Softmax Bottleneck(Yang et al. 2018)

理论上的限制:标准 softmax 的输出概率分布秩 ≤ hidden_dim。对于需要表达多模态分布的任务(如同一上下文有多种合理续写),这构成”瓶颈”。

缓解方案

  • Mixture of Softmaxes(MoS):用多个 softmax 头加权混合,提升秩
  • Sparse Softmax / Entmax:允许部分概率严格为 0,让分布更结构化
  • MoE 输出层:不同 expert 提供不同分布

实际 LLM 训练中 hidden_dim 很大(4K-16K),Softmax Bottleneck 影响相对小,但在小模型 / 低秩 LoRA 场景仍要警惕。

Sparse Softmax 家族

变体特征用途
Softmax严格正概率,分母含全 vocab默认
Sparsemax部分项为严格 0注意力可解释性
α-Entmaxα 控制稀疏度注意力 / 路由
Gumbel-Softmax加 Gumbel 噪声后取 argmax 的可微近似离散变量 RL / VAE
Top-K Softmax只在 Top-K 上归一化MoE 路由

MoE 路由是 Top-K Softmax 最大规模的工程实践——每个 token 只激活 1-8 个 expert,背后是稀疏路由 + 负载均衡的精妙工程。

一个反直觉发现:Softmax 不是”概率”

虽然 softmax 输出”和为 1”看起来像概率,但这只是 frequentist 角度的归一化,不是 Bayesian 意义上的后验概率——它没有不确定性量化,模型对正确答案和错误答案都可能输出 0.99 置信度。

含义

  • 看到模型输出 P=0.95 不等于”95% 正确”
  • 校准(calibration)研究就是修这个错位——温度缩放 / Platt scaling / Isotonic regression
  • LLM 默认是 overconfident 的,这是产品里”模型胡说八道还很自信”的根源

与 Rick PM 视角的连接点

  • 解码参数调优:temperature / top-p / top-k 是产品端最常调的旋钮;理解 softmax 就理解了”为什么 T=0 适合代码,T=1 适合诗”
  • 校准问题:模型置信度不可信,产品里不能直接用”概率”做决策门槛,需要 calibration 或外部验证
  • 幻觉的边界:softmax 没有”我不知道”——产品如果要做拒答,必须在 softmax 外加机制(阈值 / verifier / RAG 兜底)
  • MoE 与路由:理解 softmax 路由→理解 MoE 负载均衡为什么这么难、为什么 DeepSeek 要发明 loss-free balance

相关章节

关联节点