M1-032M1: Mathematics & Statistics FundamentalsNumerical StabilityEasy
Mastery:

Numerical Stability: 写出 log-sum-exp 技巧,并说明它解决了什么问题。

📐 Mathematical Definition
log⁡∑iexi=m+log⁡∑iexi−m,m=max⁡ixi\log\sum_i e^{x_i}=m+\log\sum_i e^{x_i-m},\qquad m=\max_i x_i
⚡ Executive Summary
Core Concept: 先减最大值再取 log,避免 exp 溢出与 log(0)。

📌 Key Takeaways

  • •
    交叉熵、CRF、混合模型、变分推断都依赖它
  • •
    可直接调用 np.logaddexp

📐 Mathematical Derivations

推导只需一步:log Σᵢe^{xᵢ}=log(e^m Σᵢe^{xᵢ−m})=m+log Σᵢe^{xᵢ−m},其中 m=maxᵢxᵢ。右侧的指数项全部 ≤1,不会溢出;且和式中至少有一项等于 1(对应取到 max 的那个 i),故 log 的参数 ≥1,不会出现 log(0)。它解决的问题是<strong>同时避免上溢与下溢</strong>:直接用 exp 会在 x 大时溢出为 inf、在 x 很负时下溢为 0(进而 log(0)=−inf)。log-sum-exp 广泛出现在交叉熵、CRF 的配分函数、GMM 的 log 似然、变分推断的 ELBO、以及强化学习的 log-sum-exp 软最大化中。

🏭 Production Trade-offs

工程细节:① <strong>两参数的 logaddexp</strong>——计算 log(e^a+e^b) 有专门的稳定实现 <code>logaddexp(a,b)=max(a,b)+log1p(exp(−|a−b|))</code>,比手写更快更稳,也是 DPO/BCE 损失 <code>−log σ(z)=−logaddexp(0,−z)</code> 的基础;② <strong>logsumexp 的梯度是 softmax</strong>——∂logsumexp(x)/∂x=softmax(x),这使它在自动微分中天然稳定;③ <strong>与减 max 的关系</strong>——减 max 是 logsumexp 的特例应用;在 FlashAttention 的在线 softmax 中,需要维护运行最大值并在 m 更新时用 e^{m_old−m_new} 修正历史累加和 l,这正是 logsumexp 的增量形式。④ 在大词表语言模型(如 50k 词表)中,logsumexp 是每个 token 的主要计算开销之一,因此有专门的融合 kernel 优化。
⚠️ Common Interview Pitfalls
  • ✕
    手写 log(sum(exp(x))) 而不减 max
  • ✕
    忽略 logaddexp 在 DPO/BCE 中的稳定化作用
🎯 Interviewer Follow-ups
  • ?
    如何计算 log σ(z) 而不用 exp?
  • ?
    为什么用 logaddexp 而不是手写?
📚

Associated Knowledge Base Guides & Mindmaps

Explore the comprehensive technical article, exam cards, and global architecture tree.

← PreviousM1-031: Numerical Stability: 为什么 softmax 必须先减最大值?📋Back to BankNext →M1-033: Numerical Stability: 解释混合精度训练中的 loss scaling,为什么它能防梯度下溢。