目录
  1. 1. 写在前面
  2. 2. 1. 逻辑回归的基本形式
    1. 2.1. 1.1 从线性回归到分类——为什么需要 sigmoid?
    2. 2.2. 1.2 对数几率与 sigmoid 的导出
    3. 2.3. 1.3 决策边界
  3. 3. 2. 参数估计:极大似然估计(MLE)
    1. 3.1. 2.1 似然函数
    2. 3.2. 2.2 从对数似然到交叉熵损失
    3. 3.3. 2.3 梯度推导
    4. 3.4. 2.4 Hessian 矩阵推导
  4. 4. 3. 优化算法
    1. 4.1. 3.1 梯度下降(Gradient Descent, GD)
    2. 4.2. 3.2 随机梯度下降(SGD)
    3. 4.3. 3.3 牛顿法(Newton’s Method)
    4. 4.4. 3.4 迭代重加权最小二乘法(IRLS)
    5. 4.5. 3.5 拟牛顿法(BFGS / L-BFGS)
    6. 4.6. 3.6 优化算法对比
  5. 5. 4. 正则化
    1. 5.1. 4.1 为什么需要正则化
    2. 5.2. 4.2 L2 正则化(Ridge / 权重衰减)
    3. 5.3. 4.3 L1 正则化(Lasso)
    4. 5.4. 4.4 ElasticNet
    5. 5.5. 4.5 正则化对比
  6. 6. 5. Softmax 回归(多项逻辑回归)
    1. 6.1. 5.1 从二分类到多分类
    2. 6.2. 5.2 参数冗余与解决方案
    3. 6.3. 5.3 Softmax 的交叉熵损失
    4. 6.4. 5.4 Softmax 的梯度
  7. 7. 6. 最大熵原理
    1. 7.1. 6.1 信息熵的定义
    2. 7.2. 6.2 最大熵原理的哲学
    3. 7.3. 6.3 最大熵模型的数学形式
    4. 7.4. 6.4 对偶推导与指数族形式
    5. 7.5. 6.5 最大熵模型与逻辑回归的等价性
    6. 7.6. 6.6 最大熵模型的对偶问题
  8. 8. 7. IIS 算法(Improved Iterative Scaling)
    1. 8.1. 7.1 算法动机
    2. 8.2. 7.2 IIS 的推导
    3. 8.3. 7.3 IIS 算法流程(伪代码)
    4. 8.4. 7.4 IIS 的收敛性分析
  9. 9. 8. 广义线性模型(GLM)视角
    1. 9.1. 8.1 指数族分布
    2. 9.2. 8.2 伯努利分布作为指数族
    3. 9.3. 8.3 GLM 的三个假设
    4. 9.4. 8.4 GLM 框架下的统一
  10. 10. 9. 数值计算实例与推导补充
    1. 10.1. 9.1 逻辑回归梯度下降的一轮完整计算
    2. 10.2. 9.2 Fisher 信息矩阵与参数置信区间
    3. 10.3. 9.3 GIS 算法(Generalized Iterative Scaling)
    4. 10.4. 9.4 条件最大熵的原始-对偶推导(完整版)
  11. 11. 10. 模型评估与解释
    1. 11.1. 10.1 评价指标
    2. 11.2. 10.2 概率校准
    3. 11.3. 10.3 特征重要性
  12. 12. 11. 实战建议
    1. 12.1. 11.1 数据预处理
    2. 12.2. 11.2 常见陷进与解决方案
  13. 13. 12. 面试高频问答
  14. 14. 13. 逻辑回归凸性的严格证明
  15. 15. 14. 总结
【统计学习方法死磕系列】逻辑回归与最大熵模型

写在前面

本系列文章是对《统计学习方法》(李航著)的深度研读笔记。逻辑回归(Logistic Regression)虽然名字里带”回归”,但它是最经典的分类算法之一。它的数学形式极其简洁——一个 sigmoid 函数套一个线性模型——但背后的概率解释、优化理论和正则化技术构成了统计机器学习的重要基石。

最大熵模型(Maximum Entropy Model)则从信息论的角度出发,回答了一个根本性的问题:在已知部分约束的条件下,如何选择最”客观”的概率分布?答案是选择熵最大的那个分布。最大熵模型与逻辑回归有着深刻的对偶关系——在二分类条件下,两者是等价的。

本文将从逻辑回归的 sigmoid 函数推导出发,深入讨论参数估计(MLE)、优化算法(牛顿法/拟牛顿法/IRLS)、正则化(L1/L2/ElasticNet)、多分类扩展(Softmax),再过渡到最大熵原理、IIS 算法、以及与逻辑回归的对偶统一。全文推导力求自包含,建议读者备纸笔逐式推演。


1. 逻辑回归的基本形式

1.1 从线性回归到分类——为什么需要 sigmoid?

线性回归模型 $f(x) = w \cdot x + b$ 的输出范围是 $(-\infty, +\infty)$,而分类任务需要输出 $[0, 1]$ 之间的概率值。

为了让线性函数的输出落在 $[0, 1]$ 之间,我们需要一个链接函数(Link Function)将实数域映射到概率域。最自然的选择是 sigmoid 函数:

$$\sigma(z) = \frac{1}{1 + e^{-z}}$$

为什么选择 sigmoid,而不是其他也能将实数映射到 [0,1] 的函数?因为 sigmoid 具有优美的指数族性质和概率解释——它来自对数几率(log odds)的线性建模,而这自然地导出了伯努利分布的典型参数化。

1.2 对数几率与 sigmoid 的导出

逻辑回归假设对数几率(log-odds)是输入 $x$ 的线性函数

$$\log \frac{P(Y=1 | X=x)}{P(Y=0 | X=x)} = w \cdot x + b$$

这个假设可以被自然地反解出 $P(Y=1 | X=x)$:

令 $\eta = w \cdot x + b$:

$$\frac{P(Y=1)}{1 - P(Y=1)} = e^{\eta}$$

$$P(Y=1) = \frac{e^{\eta}}{1 + e^{\eta}} = \frac{1}{1 + e^{-\eta}} = \sigma(\eta)$$

$$P(Y=0) = \frac{1}{1 + e^{\eta}} = 1 - \sigma(\eta)$$

这就是逻辑回归的核心公式。注意,这里的每一个推导步骤都是等价的——不存在近似或假设被弱化。

Sigmoid 函数的数学性质

  1. 对称性:$\sigma(-z) = 1 - \sigma(z)$
  2. 导数性质(极其重要,简化梯度计算):
    $$\sigma'(z) = \sigma(z)(1 - \sigma(z))$$
    证明:$\sigma’(z) = \frac{e^{-z}}{(1+e^{-z})^2} = \frac{1}{1+e^{-z}} \cdot \frac{e^{-z}}{1+e^{-z}} = \sigma(z)(1-\sigma(z))$
  3. 饱和性:当 $z \to +\infty$,$\sigma(z) \to 1$;当 $z \to -\infty$,$\sigma(z) \to 0$。两端梯度趋近于 0。
  4. Log 导数:$\frac{d}{dz} \log \sigma(z) = 1 - \sigma(z)$,$\frac{d}{dz} \log(1-\sigma(z)) = -\sigma(z)$

1.3 决策边界

逻辑回归的决策规则:

$$\hat{y} = \begin{cases} 1 & \text{if } P(Y=1|X=x) \geq 0.5 \\ 0 & \text{otherwise} \end{cases}$$

由于 $\sigma(0) = 0.5$,这等价于:

$$\hat{y} = \begin{cases} 1 & \text{if } w \cdot x + b \geq 0 \\ 0 & \text{otherwise} \end{cases}$$

所以逻辑回归的决策边界是线性的(在原始输入空间中)。这是逻辑回归的一个重要局限性——它只能学习线性决策边界(除非引入特征变换或核方法)。


2. 参数估计:极大似然估计(MLE)

2.1 似然函数

对于二分类问题,设 $y \in {0, 1}$(注意有些教材用 $y \in {-1, +1}$,两种约定下损失函数形式不同但等价)。

数据的似然函数为:

$$L(w) = \prod_{i=1}^{N} P(Y=y_i | X=x_i; w) = \prod_{i=1}^{N} \sigma(w \cdot x_i)^{y_i} (1 - \sigma(w \cdot x_i))^{1-y_i}$$

注意这里我已将 bias 项 $b$ 吸收到 $w$ 中(扩展 $x$ 为 $[x; 1]$)。

取对数得到对数似然函数:

$$\ell(w) = \log L(w) = \sum_{i=1}^{N} \left[ y_i \log \sigma(w \cdot x_i) + (1-y_i) \log(1 - \sigma(w \cdot x_i)) \right]$$

2.2 从对数似然到交叉熵损失

最大化对数似然等价于最小化其负数。定义交叉熵损失函数(Cross-Entropy Loss)

$$J(w) = -\frac{1}{N} \ell(w) = -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \log \hat{y}_i + (1-y_i) \log(1 - \hat{y}_i) \right]$$

其中 $\hat{y}_i = \sigma(w \cdot x_i)$。

为什么叫交叉熵? 交叉熵 $H(p, q) = -\sum_x p(x) \log q(x)$ 度量了两个分布 $p$ 和 $q$ 之间的距离。这里 $p$ 是真实分布($y_i$ 和 $1-y_i$),$q$ 是预测分布($\hat{y}_i$ 和 $1-\hat{y}_i$)。$J(w)$ 正是真实分布和预测分布在所有样本上的平均交叉熵。

2.3 梯度推导

对第 $j$ 个权重的梯度:

$$\begin{aligned} \frac{\partial J}{\partial w_j} &= -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \frac{1}{\hat{y}_i} \frac{\partial \hat{y}_i}{\partial w_j} + (1-y_i) \frac{-1}{1-\hat{y}_i} \frac{\partial \hat{y}_i}{\partial w_j} \right] \end{aligned}$$

利用 sigmoid 的导数性质:

$$\frac{\partial \hat{y}_i}{\partial w_j} = \hat{y}_i (1 - \hat{y}_i) x_{ij}$$

代入:

$$\begin{aligned} \frac{\partial J}{\partial w_j} &= -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \frac{1}{\hat{y}_i} \hat{y}_i (1-\hat{y}_i) x_{ij} - (1-y_i) \frac{1}{1-\hat{y}_i} \hat{y}_i (1-\hat{y}_i) x_{ij} \right] \\ &= -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i (1-\hat{y}_i) - (1-y_i) \hat{y}_i \right] x_{ij} \\ &= -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i - y_i \hat{y}_i - \hat{y}_i + y_i \hat{y}_i \right] x_{ij} \\ &= \frac{1}{N} \sum_{i=1}^{N} (\hat{y}_i - y_i) x_{ij} \end{aligned}$$

写成向量形式:

$$\nabla J(w) = \frac{1}{N} \sum_{i=1}^{N} (\sigma(w \cdot x_i) - y_i) x_i = \frac{1}{N} X^T (\hat{y} - y)$$

这个梯度的形式极其简洁——它等于预测值与真实值的差乘上输入。与线性回归的梯度 $\frac{1}{N} X^T (Xw - y)$ 对比,唯一的区别是多了一层 sigmoid 的非线性变换。

2.4 Hessian 矩阵推导

继续对 $w_k$ 求二阶偏导:

$$\begin{aligned} \frac{\partial^2 J}{\partial w_j \partial w_k} &= \frac{1}{N} \sum_{i=1}^{N} \frac{\partial \hat{y}_i}{\partial w_k} x_{ij} \\ &= \frac{1}{N} \sum_{i=1}^{N} \hat{y}_i (1 - \hat{y}_i) x_{ij} x_{ik} \end{aligned}$$

写成矩阵形式:

$$H = \nabla^2 J(w) = \frac{1}{N} X^T D X$$

其中 $D = \text{diag}(\hat{y}_1(1-\hat{y}_1), \ldots, \hat{y}_N(1-\hat{y}_N))$ 是一个 $N \times N$ 的对角矩阵。

$H$ 是半正定的:对任意向量 $v$,$v^T H v = \frac{1}{N} v^T X^T D X v = \frac{1}{N} (Xv)^T D (Xv) \geq 0$(因为 $D$ 的对角元 $\hat{y}_i(1-\hat{y}_i) > 0$ 对任意 $\hat{y}_i \in (0, 1)$ 成立)。

这意味着交叉熵损失函数是凸函数,梯度下降/牛顿法一定收敛到全局最优。


3. 优化算法

3.1 梯度下降(Gradient Descent, GD)

最基础的优化方法。更新公式:

$$w^{(t+1)} = w^{(t)} - \eta \nabla J(w^{(t)})$$

其中 $\eta > 0$ 是学习率。

伪代码

Algorithm: Batch Gradient Descent for Logistic Regression
Input: 训练数据 (X, y), 学习率 η, 最大迭代次数 max_iter, 容差 tol
Output: 权重 w

1. 初始化 w = 0(或随机初始化)
2. for t = 1 to max_iter:
3. 计算 ŷ = σ(Xw) // 前向传播
4. 计算梯度 ∇J = (1/N) Xᵀ(ŷ - y)
5. w = w - η ∇J
6. 如果 ||∇J|| < tol: break
7. return w

优缺点

  • 优点:简单,每次迭代只需 $O(Nd)$ 计算和 $O(d)$ 内存($d$ = 特征维数)
  • 缺点:收敛慢(线性收敛率),需要调学习率

3.2 随机梯度下降(SGD)

每次只用一个样本来估计梯度:

$$w^{(t+1)} = w^{(t)} - \eta_t (\hat{y}_i - y_i) x_i$$

Mini-batch SGD:每次用 $m$ 个样本来估计梯度,是 GD 和 SGD 的折中。

SGD 的优势

  • 每步只需 $O(d)$ 计算
  • 可以处理流式数据(online learning)
  • 随机性有助于逃离局部鞍点(虽然逻辑回归是凸的,这个优势在深层网络中更重要)

学习率调度:SGD 要求学习率衰减以满足 Robbins-Monro 条件:

$$\sum_{t=1}^{\infty} \eta_t = \infty, \quad \sum_{t=1}^{\infty} \eta_t^2 < \infty$$

常用衰减策略:$\eta_t = \frac{\eta_0}{1 + \alpha t}$ 或 $\eta_t = \frac{\eta_0}{t^{\alpha}}$($0.5 < \alpha \leq 1$)。

3.3 牛顿法(Newton’s Method)

利用二阶导数信息进行优化。对 $J(w)$ 在 $w^{(t)}$ 处做二阶 Taylor 展开:

$$J(w) \approx J(w^{(t)}) + \nabla J(w^{(t)})^T (w - w^{(t)}) + \frac{1}{2}(w - w^{(t)})^T H(w^{(t)}) (w - w^{(t)})$$

令近似函数的导数为 0:

$$\nabla J(w^{(t)}) + H(w^{(t)}) (w - w^{(t)}) = 0$$

解得牛顿更新公式:

$$w^{(t+1)} = w^{(t)} - H(w^{(t)})^{-1} \nabla J(w^{(t)})$$

收敛性:牛顿法具有二次收敛率(在最优解附近,误差平方级缩小,即 $|w^{(t+1)} - w^| \leq M |w^{(t)} - w^|^2$)。这意味着在接近最优解时,每次迭代有效数字翻倍。

缺点

  • 每步需要计算和求逆 $d \times d$ 的 Hessian 矩阵:$O(Nd^2 + d^3)$
  • 当特征维数 $d$ 较大时计算量不可接受
  • 需要 Hessian 可逆(逻辑回归中正定,但数值上可能接近奇异)

3.4 迭代重加权最小二乘法(IRLS)

牛顿法在逻辑回归中的具体实现叫做 IRLS(Iterative Reweighted Least Squares)。将牛顿更新重写为加权最小二乘的形式:

$$\begin{aligned} w^{(t+1)} &= w^{(t)} - (X^T D X)^{-1} X^T (\hat{y} - y) \\ &= (X^T D X)^{-1} \left[ X^T D X w^{(t)} - X^T (\hat{y} - y) \right] \\ &= (X^T D X)^{-1} X^T D z \end{aligned}$$

其中 $z = X w^{(t)} - D^{-1}(\hat{y} - y)$ 被称为 调整后的响应变量(adjusted response)

$z$ 的每个分量为:

$$z_i = w^{(t)} \cdot x_i + \frac{y_i - \hat{y}_i}{\hat{y}_i(1-\hat{y}_i)}$$

这就是一个加权最小二乘问题的解:$\min_w \sum_i D_{ii} (z_i - w \cdot x_i)^2$。权重 $D_{ii} = \hat{y}_i(1-\hat{y}_i)$ 在每次迭代中根据当前预测值动态调整——样本预测越不确定($\hat{y}_i$ 接近 0.5),权重越大。

IRLS 流程

Algorithm: IRLS for Logistic Regression
Input: X, y, max_iter
Output: w

1. 初始化 w = 0
2. for t = 1 to max_iter:
3. ŷ = σ(Xw)
4. D = diag(ŷ_i(1-ŷ_i))
5. z = Xw + D⁻¹(y - ŷ)
6. w = (XᵀDX)⁻¹ XᵀDz // 解加权最小二乘
7. return w

3.5 拟牛顿法(BFGS / L-BFGS)

牛顿法的主要瓶颈是 Hessian 矩阵的计算和求逆($O(Nd^2 + d^3)$)。拟牛顿法通过维护一个近似的 Hessian 逆矩阵来避免直接计算。

BFGS(Broyden-Fletcher-Goldfarb-Shanno)

记 $s_t = w^{(t+1)} - w^{(t)}$, $g_t = \nabla J(w^{(t+1)}) - \nabla J(w^{(t)})$。

BFGS 对 Hessian 逆矩阵 $B_t \approx H^{-1}$ 的更新:

$$B_{t+1} = \left(I - \frac{s_t g_t^T}{g_t^T s_t}\right) B_t \left(I - \frac{g_t s_t^T}{g_t^T s_t}\right) + \frac{s_t s_t^T}{g_t^T s_t}$$

只需 $O(d^2)$ 的计算和存储(vs. 牛顿法的 $O(d^3)$)。BFGS 具有超线性收敛率。

L-BFGS(Limited-memory BFGS)

进一步降低内存消耗:只保存最近 $m$ 对 $(s_t, g_t)$(典型值 $m = 10$),将存储复杂度从 $O(d^2)$ 降到 $O(md)$。

L-BFGS 两步递归算法(用于计算搜索方向 $d = -B \nabla J$):

Algorithm: L-BFGS two-loop recursion
Input: 梯度 g_k, 最近 m 对 (s_i, g_i)
Output: 搜索方向 d = -B_k g_k

1. q = g_k
2. for i = k-1 down to k-m:
3. ρ_i = 1 / (g_iᵀ s_i)
4. α_i = ρ_i s_iᵀ q
5. q = q - α_i g_i
6. r = B_k⁽⁰⁾ q // B_k⁽⁰⁾ 是初始 Hessian 近似(通常为 γI)
7. for i = k-m to k-1:
8. β = ρ_i g_iᵀ r
9. r = r + s_i (α_i - β)
10. return d = -r

L-BFGS 是逻辑回归在大规模数据上最常见的优化器之一。

3.6 优化算法对比

算法 每步计算量 收敛率 内存 是否需要调参
GD $O(Nd)$ 线性 $O(d)$ 需要调 $\eta$
SGD $O(d)$ 次线性 $O(d)$ 需要调 $\eta$ 和衰减
Newton $O(Nd^2 + d^3)$ 二次 $O(d^2)$ 无需
BFGS $O(Nd + d^2)$ 超线性 $O(d^2)$ 无需
L-BFGS $O(Nd + md)$ 超线性 $O(md)$ $m$ 默认即可
IRLS $O(Nd^2 + d^3)$ 二次 $O(d^2)$ 无需

选型指南

  • $d$ 小、$N$ 适中($<10^5$):牛顿法/IRLS
  • $d$ 中等($10^2$-$10^3$):L-BFGS
  • $d$ 大($>10^3$):SGD 配合良好调参
  • 在线学习/流式数据:SGD

4. 正则化

4.1 为什么需要正则化

逻辑回归的 MLE 在以下情况下容易出问题:

  1. 完美分离(Perfect Separation):当训练数据完全线性可分时,MLE 会使得 $|w| \to \infty$,因为更大的 $|w|$ 使得 sigmoid 更接近阶跃函数,从而增加似然。这导致参数发散,模型过拟合。

  2. 高维数据:当 $d > N$ 时,MLE 不是唯一定义的(存在无穷多个参数组合能完美拟合训练数据)。

  3. 多重共线性:高度相关的特征导致 Hessian 接近奇异,参数估计不稳定。

4.2 L2 正则化(Ridge / 权重衰减)

在损失函数中加入 L2 惩罚:

$$J_{\text{L2}}(w) = J(w) + \frac{\lambda}{2} \|w\|^2$$

其中 $\lambda > 0$ 是正则化强度。注意 bias 项通常不参与正则化

梯度

$$\nabla J_{\text{L2}}(w) = \nabla J(w) + \lambda w$$

Hessian

$$H_{\text{L2}} = H + \lambda I$$

加入 $\lambda I$ 使 Hessian 严格正定(原 Hessian 可能接近奇异),改善了数值稳定性。

概率解释:L2 正则化等价于对 $w$ 使用 Gaussian 先验 $w_j \sim \mathcal{N}(0, 1/\lambda)$,然后做 MAP 估计:

$$\begin{aligned} w_{\text{MAP}} &= \arg\max_w P(w | X, y) = \arg\max_w P(y | X, w) \cdot P(w) \\ &= \arg\max_w \log P(y | X, w) - \frac{\lambda}{2} \|w\|^2 \end{aligned}$$

4.3 L1 正则化(Lasso)

$$J_{\text{L1}}(w) = J(w) + \lambda \|w\|_1 = J(w) + \lambda \sum_{j=1}^{d} |w_j|$$

特点:L1 正则化产生稀疏解——许多 $w_j$ 会精确地变为 0,实现自动特征选择。

为什么 L1 产生稀疏解而 L2 不?

几何解释:

  • L2 约束区域是球体:$|w|_2 \leq t$,而损失函数的等高线是一族椭圆。两者的切点通常不在坐标轴上,所以 $w_j$ 一般不为 0。
  • L1 约束区域是菱形(多面体):$|w|_1 \leq t$,等高线更容易先碰到菱形的”尖角”(坐标轴上),导致某些 $w_j = 0$。

从导数角度:

  • L2 对 $w_j$ 的导数包含 $\lambda w_j$,当 $w_j$ 很小时导数也很小,更新步长微弱,$w_j$ 缓慢趋向 0 但永不精确为零
  • L1 的次梯度包含 $\lambda \cdot \text{sign}(w_j)$,即使 $w_j$ 很小时它也是一个常数 $\pm \lambda$,能把 $w_j$ “推”到精确的 0

优化挑战:L1 正则化在 $w_j = 0$ 处不可导,不能用普通的梯度下降。常用求解方法:

  1. 坐标下降(Coordinate Descent):每次只优化一个 $w_j$,有闭式解(soft-thresholding operator)
  2. 近端梯度法(Proximal Gradient):ISTA / FISTA
  3. OWL-QN:L-BFGS 的 L1 扩展

4.4 ElasticNet

结合 L1 和 L2:

$$J_{\text{EN}}(w) = J(w) + \lambda \left( \alpha \|w\|_1 + \frac{1-\alpha}{2} \|w\|_2^2 \right)$$

其中 $\alpha \in [0, 1]$ 控制 L1 和 L2 的混合比例:

  • $\alpha = 1$:纯 L1(Lasso)
  • $\alpha = 0$:纯 L2(Ridge)

ElasticNet 的优势

  1. 保留 L1 的稀疏性
  2. 保留 L2 的对相关特征的群组效应(grouping effect:高度相关的特征会被同时选中或同时舍弃)
  3. 当 $d > N$ 时,Lasso 最多只能选出 $N$ 个特征,ElasticNet 可以选出更多

4.5 正则化对比

属性 无正则化 L2 (Ridge) L1 (Lasso) ElasticNet
稀疏解
闭式解 否(坐标下降有)
特征选择 自动 自动
相关特征 不稳定 同时缩减 选一个 同时选
$d > N$ 不可用 可用 至多选 $N$ 可用且可选更多
优化难度 中(不可导)
概率解释 MLE MAP (Gaussian prior) MAP (Laplace prior) MAP (混合先验)

5. Softmax 回归(多项逻辑回归)

5.1 从二分类到多分类

对于 $K$ 类分类问题,我们需要对每个类别输出一个概率。Softmax 函数是 sigmoid 的多类推广:

$$P(Y = k | X = x) = \frac{\exp(w_k \cdot x)}{\sum_{j=1}^{K} \exp(w_j \cdot x)}, \quad k = 1, 2, \ldots, K$$

每个类别有自己的一套权重 $w_k \in \mathbb{R}^d$。将所有 $w_k$ 拼接成矩阵 $W = [w_1, w_2, \ldots, w_K]^T \in \mathbb{R}^{K \times d}$。

5.2 参数冗余与解决方案

注意 Softmax 的参数是过度参数化的:如果对所有 $w_k$ 同时加上同一个向量 $v$:

$$\frac{\exp((w_k + v) \cdot x)}{\sum_{j} \exp((w_j + v) \cdot x)} = \frac{\exp(w_k \cdot x) \exp(v \cdot x)}{\sum_{j} \exp(w_j \cdot x) \exp(v \cdot x)} = \frac{\exp(w_k \cdot x)}{\sum_{j} \exp(w_j \cdot x)}$$

概率分布不变!这说明 $(w_1, \ldots, w_K)$ 和 $(w_1 - c, \ldots, w_K - c)$ 对应相同的概率分布(取 $c$ 为任意向量)。

标准处理方式

  1. 设某个 $w_k = 0$(例如 $w_K = 0$),将参数个数从 $Kd$ 降到 $(K-1)d$
  2. 或使用正则化——L2 正则化会迫使参数向原点收缩,间接解决冗余问题(实践中常用此方法,因为实现简单)

5.3 Softmax 的交叉熵损失

使用 one-hot 编码表示标签:$y_i \in {0, 1}^K$, $\sum_k y_{ik} = 1$。

单个样本的负对数似然(交叉熵):

$$\ell_i(W) = -\sum_{k=1}^{K} y_{ik} \log \frac{\exp(w_k \cdot x_i)}{\sum_{j=1}^{K} \exp(w_j \cdot x_i)}$$

整个数据集上的损失:

$$J(W) = -\frac{1}{N} \sum_{i=1}^{N} \sum_{k=1}^{K} y_{ik} \log \frac{\exp(w_k \cdot x_i)}{\sum_{j=1}^{K} \exp(w_j \cdot x_i)}$$

5.4 Softmax 的梯度

令 $p_{ik} = P(Y=k | X=x_i) = \frac{\exp(w_k \cdot x_i)}{\sum_j \exp(w_j \cdot x_i)}$。

对 $w_k$ 的梯度:

$$\frac{\partial J}{\partial w_k} = \frac{1}{N} \sum_{i=1}^{N} (p_{ik} - y_{ik}) x_i$$

这个形式和二分类逻辑回归的梯度 $\frac{1}{N} \sum (\hat{y}_i - y_i) x_i$ 完全一致——多分类版本的梯度也是”预测概率 - 真实标签”乘上输入。这体现了指数族分布在交叉熵损失下的统一性质。

推导:关键是求 $\frac{\partial \log p_{ik}}{\partial w_m}$:

$$\frac{\partial \log p_{ik}}{\partial w_m} = (\delta_{km} - p_{im}) x_i$$

其中 $\delta_{km} = 1$ if $k = m$ else $0$。这个结果说明:当 $k = m$ 时,导数包含 $1 - p_{ik}$;当 $k \neq m$ 时,导数包含 $-p_{im}$。这正是 softmax 的”竞争”性质——提升一个类别的概率需要降低其他类别的概率。


6. 最大熵原理

6.1 信息熵的定义

离散随机变量 $Y$ 的信息熵(Shannon Entropy):

$$H(P) = -\sum_{y} P(y) \log P(y)$$

约定 $0 \log 0 = 0$。信息熵度量了分布 $P$ 的不确定性

  • 当 $P$ 是均匀分布时,$H(P)$ 达到最大值 $\log |\mathcal{Y}|$
  • 当 $P$ 退化为 one-point 分布时(即 $P(y_0) = 1$, 其余为 0),$H(P) = 0$ 达到最小值

对数是信息论中自然的度量单位:以 2 为底时单位为 bits,以 $e$ 为底时单位为 nats。

6.2 最大熵原理的哲学

最大熵原理(Jaynes, 1957):在满足已知约束的条件下,我们应该选择熵最大的概率分布。

这一原则有深刻的哲学依据:

  1. 最大熵意味着”不做任何没有根据的假设”——除了已知约束外,我们对未知保持最大的不确定性
  2. 任何其他分布都会”引入”额外的信息(即更低的熵),而这些引入的信息缺乏数据支撑
  3. 从信息论角度,最大熵分布是最安全的、最保守的、最不容易被数据之外的因素影响的分布

6.3 最大熵模型的数学形式

给定训练数据,我们定义特征函数 $f_k(x, y)$(通常是二值特征,但也可是实值特征)。经验期望:

$$\tilde{E}(f_k) = \frac{1}{N} \sum_{i=1}^{N} f_k(x_i, y_i)$$

我们要找一个条件概率分布 $P(y|x)$,使得该分布在训练数据上各特征的期望等于经验期望(称为矩约束):

$$E_P(f_k) = \sum_{x,y} \tilde{P}(x) P(y|x) f_k(x, y) = \tilde{E}(f_k)$$

其中 $\tilde{P}(x)$ 是输入的经验分布(通常取 $\frac{1}{N}$ 或实际计数)。

同时 $P(y|x)$ 必须是一个合法的条件概率分布:$\sum_y P(y|x) = 1$,$P(y|x) \geq 0$。

在满足所有约束的条件下,最大化条件熵:

$$H(P) = -\sum_{x,y} \tilde{P}(x) P(y|x) \log P(y|x)$$

这是一个带约束的优化问题。使用 Lagrange 乘子法。

6.4 对偶推导与指数族形式

构造 Lagrange 函数:

$$\begin{aligned} \mathcal{L}(P, w) = &-\sum_{x,y} \tilde{P}(x) P(y|x) \log P(y|x) \\ &+ w_0 \left(1 - \sum_y P(y|x)\right) \\ &+ \sum_{k} w_k \left( \sum_{x,y} \tilde{P}(x) P(y|x) f_k(x,y) - \tilde{E}(f_k) \right) \end{aligned}$$

其中 $w_0$ 对应概率归一化约束,$w_k$ 对应矩约束。

对 $P(y|x)$ 求变分导数(Functional Derivative)并令其为 0:

$$\frac{\delta \mathcal{L}}{\delta P(y|x)} = -\tilde{P}(x)(1 + \log P(y|x)) - w_0 + \tilde{P}(x) \sum_k w_k f_k(x, y) = 0$$

解得:

$$\log P(y|x) = -1 - \frac{w_0}{\tilde{P}(x)} + \sum_k w_k f_k(x, y)$$

$$P(y|x) = \frac{\exp\left(\sum_k w_k f_k(x, y)\right)}{\sum_{y'} \exp\left(\sum_k w_k f_k(x, y')\right)}$$

其中通过归一化约束消去了 $w_0$,分母 $Z_w(x) = \sum_{y’} \exp(\sum_k w_k f_k(x, y’))$ 称为配分函数(Partition Function)

这就是最大熵模型的指数族形式。它是条件概率分布的指数族表示,权重 $w_k$ 是特征函数对应的参数。

6.5 最大熵模型与逻辑回归的等价性

当 $y \in {0, 1}$(二分类),定义特征函数:

$$f(x, y) = \begin{cases} g(x) & \text{if } y = 1 \\ 0 & \text{if } y = 0 \end{cases}$$

其中 $g(x)$ 可以是任意特征映射。则最大熵模型变为:

$$P(y=1|x) = \frac{\exp(w \cdot g(x))}{1 + \exp(w \cdot g(x))} = \sigma(w \cdot g(x))$$

这就是逻辑回归(当 $g(x) = x$ 时为标准形式)。

换句话说,二分类逻辑回归是最大熵模型在特定特征函数下的特例;最大熵模型是逻辑回归在任意特征函数下的推广。

6.6 最大熵模型的对偶问题

原始问题(primal)是最大化满足约束的熵。其对偶问题(dual)是最小化对数似然的负值,等价于对条件概率分布的极大似然估计。

可以证明,最大熵模型的对偶问题为:

$$\min_w \quad -\frac{1}{N} \sum_{i=1}^{N} \log P_w(y_i | x_i) = \min_w \quad \frac{1}{N} \sum_{i=1}^{N} \left[ \log Z_w(x_i) - \sum_k w_k f_k(x_i, y_i) \right]$$

这恰好是负对数似然损失。通过求解这个对偶问题,我们可以在权重空间中找到最大熵模型的参数,而无需直接处理概率分布空间中的约束优化。

对偶关系总结

原始问题 对偶问题
变量 $P(y x)$(分布)
目标 最大化熵 最小化负对数似然
约束 矩约束(线性等式) 无约束(除正则化)
指数族分布 MLE/MAP 估计

7. IIS 算法(Improved Iterative Scaling)

7.1 算法动机

最大熵模型的对偶问题是求解无约束优化 $\min_w \Psi(w) = -\sum_i \log P_w(y_i|x_i)$。直接使用梯度下降虽然可行,但在特征数量很大时效率不高。

IIS(Improved Iterative Scaling)是专门为最大熵模型设计的优化算法,每次迭代更新所有参数并保证目标函数单调下降。

7.2 IIS 的推导

设当前参数为 $w$,我们希望找到 $\delta = (\delta_1, \ldots, \delta_K)$ 使得 $w + \delta$ 具有更低的对偶损失。

对数似然的改变量:

$$\begin{aligned} \ell(w+\delta) - \ell(w) &= \sum_{x,y} \tilde{P}(x,y) \sum_k \delta_k f_k(x,y) - \sum_x \tilde{P}(x) \log \frac{Z_{w+\delta}(x)}{Z_w(x)} \\ &\geq \sum_{x,y} \tilde{P}(x,y) \sum_k \delta_k f_k(x,y) + 1 - \sum_x \tilde{P}(x) \sum_y P_w(y|x) \exp\left(\sum_k \delta_k f_k(x,y)\right) \end{aligned}$$

这里使用了不等式 $-\log \alpha \geq 1 - \alpha$(来自 $\log$ 的凸性)。

令 $f^{\#}(x, y) = \sum_k f_k(x, y)$ 为所有特征函数的和。假设 $f_k(x,y) \geq 0$(对于二元特征,这自然成立)。

利用 Jensen 不等式:

$$\exp\left(\sum_k \delta_k f_k(x,y)\right) = \exp\left(\sum_k \frac{f_k(x,y)}{f^{\#}(x,y)} (f^{\#}(x,y) \delta_k)\right) \leq \sum_k \frac{f_k(x,y)}{f^{\#}(x,y)} \exp\left(f^{\#}(x,y) \delta_k\right)$$

将此上界代入,得到对数似然变化量的一个下界 $B(\delta | w)$。令 $\partial B / \partial \delta_k = 0$,得到 $\delta_k$ 的更新方程:

$$\sum_{x,y} \tilde{P}(x) P_w(y|x) f_k(x,y) \exp(\delta_k f^{\#}(x,y)) = \tilde{E}(f_k)$$ 对于常用情况 $f^{\#}(x,y) = M$(常数,即每个样本在每个类别上的"活跃"特征总数固定),上式有闭式解:

$$\delta_k = \frac{1}{M} \log \frac{\tilde{E}(f_k)}{E_P(f_k)}$$

其中 $E_P(f_k) = \sum_{x,y} \tilde{P}(x) P_w(y|x) f_k(x,y)$ 是模型期望。

7.3 IIS 算法流程(伪代码)

Algorithm: IIS (Improved Iterative Scaling)
Input: 训练数据 (x_i, y_i), 特征函数 f_k, 最大迭代次数 T, 容差 ε
Output: 权重 w

1. 初始化 w = 0
2. 计算经验期望 Ẽ(f_k) = (1/N) Σ_i f_k(x_i, y_i) for all k
3. 计算 M = max_{x,y} Σ_k f_k(x,y) // 特征总数的上界
4. for t = 1 to T:
5. // 计算模型期望
6. for each k:
7. E_k = Σ_{x,y} P̃(x) P_w(y|x) f_k(x,y)
8. // 检查收敛
9. max_diff = max_k |Ẽ(f_k) - E_k|
10. if max_diff < ε: break
11. // 更新所有权重
12. for each k:
13. if E_k == 0: δ_k = 0
14. else: δ_k = (1/M) log(Ẽ(f_k) / E_k)
15. w_k = w_k + δ_k
16. return w

7.4 IIS 的收敛性分析

IIS 保证每次迭代后对数似然不减:

$$\ell(w^{(t+1)}) \geq \ell(w^{(t)})$$

且在一定条件下(梯度 Lipschitz 连续),IIS 具有线性收敛率。实践中 IIS 比普通梯度下降快,但一般不如 L-BFGS。

计算瓶颈:步骤 6-7 中需要计算模型期望 $E_k$,这涉及对所有 $(x, y)$ 的求和。对于序列标注等任务,这需要使用前向-后向算法(见本文后续 CRF 相关文章)。


8. 广义线性模型(GLM)视角

8.1 指数族分布

逻辑回归和 Softmax 回归都可以统一在广义线性模型(GLM)的框架下。

指数族分布的一般形式:

$$P(y; \eta) = h(y) \exp(\eta \cdot T(y) - A(\eta))$$

其中:

  • $\eta$:自然参数(natural parameter)
  • $T(y)$:充分统计量(sufficient statistic)
  • $A(\eta)$:对数配分函数(log partition function),保证归一化
  • $h(y)$:基础测度(base measure)

8.2 伯努利分布作为指数族

二分类中 $y \in {0, 1}$ 服从伯努利分布。将其写为指数族形式:

$$P(y; \phi) = \phi^y (1-\phi)^{1-y} = \exp\left(y \log\frac{\phi}{1-\phi} + \log(1-\phi)\right)$$

与指数族一般形式对比:

  • $\eta = \log\frac{\phi}{1-\phi}$(自然参数 = log odds)
  • $T(y) = y$
  • $A(\eta) = -\log(1-\phi) = \log(1+e^{\eta})$
  • $h(y) = 1$

8.3 GLM 的三个假设

  1. **$y | x; \theta \sim \text{ExponentialFamily}(\eta)$**:给定 $x$ 和参数,$y$ 的分布属于指数族
  2. **$\eta = \theta^T x$**:自然参数是输入 $x$ 的线性函数
  3. **预测 $\hat{y} = E[y|x] = g^{-1}(\eta)$**:预测值等于条件期望,且链接函数的逆是 canonical link 时 $g^{-1} = A’(\eta)$

对于逻辑回归:

  • $E[y|x] = \phi = \frac{1}{1+e^{-\eta}} = \frac{1}{1+e^{-\theta^T x}}$
  • Canonical link: $g(\phi) = \log\frac{\phi}{1-\phi} = \eta$(logit 函数)
  • 响应函数: $g^{-1}(\eta) = \sigma(\eta)$(sigmoid 函数)

选择 canonical link 的好处是 $\nabla^2 \ell(\theta)$ 一定是正定的(保证凸性),且充分统计量为 $X^T y$。

8.4 GLM 框架下的统一

模型 分布 Canonical Link 响应函数 $A(\eta)$
线性回归 Gaussian $\mathcal{N}(\mu, \sigma^2)$ identity: $\eta = \mu$ $\mu = \eta$ $\eta^2/2$
逻辑回归 Bernoulli($\phi$) logit: $\eta = \log\frac{\phi}{1-\phi}$ $\phi = \sigma(\eta)$ = $\frac{1}{1+e^{-\eta}}$ $\log(1+e^{\eta})$
Softmax 回归 Categorical($\phi_1,\ldots,\phi_{K-1}$) 多项 logit softmax $\log(1+\sum_k e^{\eta_k})$
Poisson 回归 Poisson($\lambda$) log: $\eta = \log\lambda$ $\lambda = e^{\eta}$ $e^{\eta}$

在这个框架下,所有 GLM 的学习算法都是统一的——都是通过 MLE(最小化负对数似然),梯度形式和 Fisher 信息矩阵的形式也都是统一的。


9. 数值计算实例与推导补充

9.1 逻辑回归梯度下降的一轮完整计算

假设有如下二分类数据(为简化,设 bias 已吸收进 $w$,$x_0 = 1$):

$i$ $x_1$ $x_2$ $y$
1 2.0 3.0 1
2 1.0 0.5 0
3 3.0 2.0 1
4 0.5 1.5 0

初始化 $w = (0, 0, 0)^T$(包括 bias 对应的 $w_0$),学习率 $\eta = 0.1$。

第一轮迭代

步骤 1:计算 $z_i = w \cdot x_i = 0$(所有样本)。

步骤 2:计算 $\hat{y}_i = \sigma(0) = 0.5$(所有样本)。

步骤 3:计算梯度 $\nabla J = \frac{1}{N} X^T(\hat{y} - y)$。

$i$ $x_i$(含 bias) $\hat{y}_i - y_i$
1 $(1, 2.0, 3.0)$ $0.5 - 1 = -0.5$
2 $(1, 1.0, 0.5)$ $0.5 - 0 = 0.5$
3 $(1, 3.0, 2.0)$ $0.5 - 1 = -0.5$
4 $(1, 0.5, 1.5)$ $0.5 - 0 = 0.5$

$$\nabla J_{w_0} = \frac{1}{4}(-0.5 + 0.5 - 0.5 + 0.5) = 0$$

$$\nabla J_{w_1} = \frac{1}{4}[2.0 \times (-0.5) + 1.0 \times 0.5 + 3.0 \times (-0.5) + 0.5 \times 0.5] = \frac{1}{4}[-1.0 + 0.5 - 1.5 + 0.25] = -0.4375$$

$$\nabla J_{w_2} = \frac{1}{4}[3.0 \times (-0.5) + 0.5 \times 0.5 + 2.0 \times (-0.5) + 1.5 \times 0.5] = \frac{1}{4}[-1.5 + 0.25 - 1.0 + 0.75] = -0.375$$

步骤 4:更新权重。

$$w_0^{(1)} = 0 - 0.1 \times 0 = 0$$
$$w_1^{(1)} = 0 - 0.1 \times (-0.4375) = 0.04375$$
$$w_2^{(1)} = 0 - 0.1 \times (-0.375) = 0.0375$$

第二轮迭代

$$z_1 = 0.04375 \times 2.0 + 0.0375 \times 3.0 = 0.0875 + 0.1125 = 0.2 \quad \Rightarrow \quad \hat{y}_1 = \sigma(0.2) = 0.550$$
$$z_2 = 0.04375 \times 1.0 + 0.0375 \times 0.5 = 0.04375 + 0.01875 = 0.0625 \quad \Rightarrow \quad \hat{y}_2 = \sigma(0.0625) = 0.516$$
$$z_3 = 0.04375 \times 3.0 + 0.0375 \times 2.0 = 0.13125 + 0.075 = 0.20625 \quad \Rightarrow \quad \hat{y}_3 = \sigma(0.20625) = 0.551$$
$$z_4 = 0.04375 \times 0.5 + 0.0375 \times 1.5 = 0.021875 + 0.05625 = 0.078125 \quad \Rightarrow \quad \hat{y}_4 = \sigma(0.078125) = 0.520$$

梯度继续更新…经过约 100 次迭代,权重收敛到约 $(w_0 \approx -1.2, w_1 \approx 0.8, w_2 \approx 0.3)$。

这个手动计算展示了一个关键直觉:梯度方向推动预测值靠近真实值——对于正类样本($y=1$),若 $\hat{y} < 1$,梯度推动 $w$ 增加 $\hat{y}$;对于负类样本($y=0$),若 $\hat{y} > 0$,梯度推动 $w$ 减小 $\hat{y}$。

9.2 Fisher 信息矩阵与参数置信区间

对于逻辑回归,Fisher 信息矩阵定义为:

$$\mathcal{I}(w) = E\left[\left(\frac{\partial \log P(y|x;w)}{\partial w}\right)\left(\frac{\partial \log P(y|x;w)}{\partial w}\right)^T\right]$$

对于 GLM,Fisher 信息矩阵有一个优美的性质:它等于负对数似然的 Hessian 的期望:

$$\mathcal{I}(w) = -E[H(w)] = X^T D X$$

其中 $D = \text{diag}(\hat{y}_i(1-\hat{y}_i))$。

根据 MLE 的渐近理论,当 $N \to \infty$ 时:

$$\hat{w}_{\text{MLE}} \sim \mathcal{N}\left(w^*, \mathcal{I}(w^*)^{-1}\right)$$

这意味着我们可以构建参数 $w_j$ 的 95% 置信区间:

$$w_j \pm 1.96 \cdot \sqrt{[\mathcal{I}^{-1}]_{jj}}$$

其中 $[\mathcal{I}^{-1}]_{jj}$ 是 Fisher 信息矩阵逆的第 $j$ 个对角元。

Wald 检验用于检验 $H_0: w_j = 0$(特征 $j$ 是否显著):

$$z = \frac{\hat{w}_j}{\sqrt{[\mathcal{I}^{-1}]_{jj}}} \sim \mathcal{N}(0, 1) \ \text{under}\ H_0$$

若 $|z| > 1.96$,则在 5% 显著性水平下拒绝原假设,认为该特征对分类有显著贡献。

似然比检验(Likelihood Ratio Test):用于比较嵌套模型(例如有/无某个特征):

$$LR = -2(\ell_{\text{reduced}} - \ell_{\text{full}}) \sim \chi^2_{df}$$

其中 $df$ 为两个模型参数个数的差。这一检验不依赖于渐近正态假设,在小样本下更可靠。

9.3 GIS 算法(Generalized Iterative Scaling)

在 IIS 出现之前,GIS(Generalized Iterative Scaling)是最早用于最大熵模型参数估计的算法(Darroch & Ratcliff, 1972)。

GIS 与 IIS 的核心区别:

  • GIS 要求对所有 $(x, y)$ 有 $\sum_k f_k(x, y) = M$(常数),这可以通过添加一个”修正特征” $f_{K+1}(x,y) = M - \sum_k f_k(x,y)$ 来强制满足 - IIS 允许每个 $(x,y)$ 的 $f^{\#}(x,y)$ 不同,只需它们在更新公式中用局部常数 $f^{\#}(x,y)$ 替代全局 $M$

GIS 的参数更新公式:

$$w_k^{(t+1)} = w_k^{(t)} + \frac{1}{M} \log \frac{\tilde{E}(f_k)}{E_{P^{(t)}}(f_k)}$$

与 IIS 的形式一致($\delta_k = \frac{1}{M} \log \frac{\tilde{E}(f_k)}{E_P(f_k)}$),但 GIS 要求 $M$ 全局恒定,而 IIS 使用 $\delta_k$ 由隐式方程确定。当 $f^{\#}(x,y)$ 恒为常数 $M$ 时,IIS 退化为 GIS。

IIS 比 GIS 的优势:

  1. 不需要添加修正特征
  2. 收敛速度通常更快(因为更新公式对每个参数更精准)
  3. 不需要知道全局 $M$

9.4 条件最大熵的原始-对偶推导(完整版)

原始问题(Primal)

$$\begin{aligned} \max_P &\quad H(P) = -\sum_{x,y} \tilde{P}(x) P(y|x) \log P(y|x) \\ \text{s.t.} &\quad \sum_{x,y} \tilde{P}(x) P(y|x) f_k(x,y) = \tilde{E}(f_k), \quad k = 1,\ldots,K \\ &\quad \sum_y P(y|x) = 1, \quad \forall x \\ &\quad P(y|x) \geq 0, \quad \forall x,y \end{aligned}$$

对偶函数推导

引入 Lagrange 乘子 $w_k$(对偶变量),构造 Lagrangian:

$$\mathcal{L}(P, w) = -\sum_{x,y} \tilde{P}(x) P(y|x) \log P(y|x) + \sum_k w_k \left( \sum_{x,y} \tilde{P}(x) P(y|x) f_k(x,y) - \tilde{E}(f_k) \right)$$

对偶函数 $g(w) = \sup_{P \in \Delta} \mathcal{L}(P, w)$(其中 $\Delta$ 是所有合法条件分布的集合)。

令 $\frac{\partial \mathcal{L}}{\partial P(y|x)} = 0$(对每个 $x, y$ 独立求导,注意约束 $\sum_y P(y|x) = 1$ 需要额外 Lagrange 乘子,我在第 6.4 节已包含):

$$P_w(y|x) = \frac{\exp(\sum_k w_k f_k(x,y))}{Z_w(x)}$$

代入对偶函数得到:

$$g(w) = -\sum_x \tilde{P}(x) \log Z_w(x) + \sum_k w_k \tilde{E}(f_k)$$

对偶问题(Dual):$\min_w g(w)$。

这正是对条件概率的负对数似然(除以样本数)。因此:

$$\text{MaxEnt Primal} \quad \equiv \quad \text{Conditional MLE Dual}$$

这是一个非平凡的对偶关系:原始问题是在分布空间中的约束最大化问题(变量是无穷维的分布函数),对偶问题是在有限维参数空间中的无约束最小化问题。这体现了优化理论中典型的”通过引入对偶变量将困难问题转化为易处理问题”的思想。


10. 模型评估与解释

10.1 评价指标

混淆矩阵

预测 Positive 预测 Negative
实际 Positive TP FN
实际 Negative FP TN

核心指标

$$\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}$$

$$\text{Precision} = \frac{TP}{TP + FP}$$

$$\text{Recall} = \frac{TP}{TP + FN}$$

$$\text{F1-score} = \frac{2 \cdot \text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}$$

ROC 曲线与 AUC

逻辑回归的输出是一个概率值,我们可以通过调整分类阈值(不一定用 0.5)来权衡 Precision 和 Recall。ROC 曲线以 FPR($1 - \text{specificity}$)为横轴、TPR(recall)为纵轴,每个点对应一个阈值。AUC(Area Under Curve)是 ROC 曲线下的面积:

  • AUC = 1:完美分类器
  • AUC = 0.5:随机猜测
  • AUC < 0.5:比随机还差(不过翻转预测标签即可 > 0.5)

10.2 概率校准

逻辑回归输出的 $\hat{P}(y=1|x)$ 应该被理解为概率估计。一个好的概率模型不仅要分类准确,还需要校准良好(calibrated)——即当模型说 70% 概率时,应该有 70% 的样本确实属于正类。

可靠性图(Reliability Diagram):将预测概率分段,每段内计算实际正类比例,理想情况应该落在 $y = x$ 线上。

ECE(Expected Calibration Error)

$$\text{ECE} = \sum_{m=1}^{M} \frac{|B_m|}{N} |\text{acc}(B_m) - \text{conf}(B_m)|$$

将预测概率等分为 $M$ 个桶 $B_m$,$\text{acc}(B_m)$ 是桶内实际正类比例,$\text{conf}(B_m)$ 是桶内平均预测概率。

逻辑回归通常校准较好;复杂模型如神经网络在缺乏正则化时常常过度自信(需要温度缩放等校准技术)。

10.3 特征重要性

逻辑回归具有良好的可解释性——权重的符号和大小直接反映了特征对预测的影响:

  • $w_j > 0$:特征 $j$ 增大 → 正类概率升高
  • $w_j < 0$:特征 $j$ 增大 → 负类概率升高
  • $|w_j|$ 的大小反映了该特征的对数几率的影响强度(在标准化特征后可以比较大小)

对于逻辑回归,优势比(Odds Ratio):

$$\frac{P(Y=1 | x_j = a+1)}{P(Y=0 | x_j = a+1)} / \frac{P(Y=1 | x_j = a)}{P(Y=0 | x_j = a)} = \exp(w_j)$$

即特征 $j$ 每增加一个单位,优势比乘以 $e^{w_j}$。


11. 实战建议

11.1 数据预处理

  1. 缺失值处理:逻辑回归需要完整的特征。可以用均值/中位数填充,或使用模型(如 MICE)预测缺失值
  2. 特征缩放:虽然逻辑回归不像 SVM 那样对缩放敏感,但使用正则化时需要标准化(否则 L1/L2 对不同尺度的特征不公平)
  3. 分类特征编码:对无序分类变量使用 one-hot 编码;对有序分类变量可以保留为数值或使用 one-hot
  4. 共线性检测:计算 VIF(Variance Inflation Factor),移除 VIF > 10 的特征

11.2 常见陷进与解决方案

问题 诊断 解决方案
完美分离 参数发散、Hessian 奇异 加 L2 正则化
类别不平衡 模型偏向多数类 类别加权、重采样、调整阈值
多重共线性 $w_j$ 符号与直觉相反 去相关、PCA、或使用 Ridge
过拟合 训练远好于验证 增加正则化 $\lambda$、特征筛选
欠拟合 训练和验证都不好 增加特征、降低 $\lambda$、特征工程
梯度消失 特征值过大导致 sigmoid 饱和 标准化特征值到 [-1, 1] 或 [0, 1]

12. 面试高频问答

Q1: 逻辑回归的损失函数是什么?为什么不用 MSE?

A: 逻辑回归的损失函数是交叉熵损失(Cross-Entropy Loss):$J(w) = -\frac{1}{N}\sum_i [y_i \log \hat{y}_i + (1-y_i)\log(1-\hat{y}i)]$。如果使用 MSE(均方误差)$J{\text{MSE}} = \frac{1}{N}\sum_i (\hat{y}_i - y_i)^2$:

  1. 梯度消失问题:当 $\hat{y}$ 接近 0 或 1 时,sigmoid 进入饱和区,$\hat{y}(1-\hat{y}) \approx 0$,MSE 梯度趋近于 0,更新近乎停滞;而交叉熵损失的梯度是 $\hat{y} - y$,不存在梯度消失。
  2. 非凸性:MSE + sigmoid 的损失函数是非凸的,可能收敛到局部最优;交叉熵 + sigmoid 是凸函数,保证收敛到全局最优。
  3. 概率解释:交叉熵损失直接来自伯努利分布的极大似然估计,具有完备的概率解释。

Q2: 推导逻辑回归梯度的完整过程。

A: 设 $\hat{y}_i = \sigma(w \cdot x_i) = \frac{1}{1+e^{-w \cdot x_i}}$。

交叉熵损失:$J(w) = -\frac{1}{N}\sum_i [y_i \log \hat{y}_i + (1-y_i)\log(1-\hat{y}_i)]$

对 $w_j$ 求偏导:
$$\frac{\partial J}{\partial w_j} = -\frac{1}{N}\sum_i\left[y_i \frac{1}{\hat{y}_i} - (1-y_i)\frac{1}{1-\hat{y}_i}\right]\frac{\partial \hat{y}_i}{\partial w_j}$$

利用 sigmoid 导数 $\frac{\partial \hat{y}_i}{\partial w_j} = \hat{y}_i(1-\hat{y}i)x{ij}$:
$$\frac{\partial J}{\partial w_j} = -\frac{1}{N}\sum_i [y_i(1-\hat{y}_i) - (1-y_i)\hat{y}_i] x_{ij} = \frac{1}{N}\sum_i (\hat{y}_i - y_i) x_{ij}$$

向量形式:$\nabla J = \frac{1}{N} X^T(\hat{y} - y)$。

关键技巧:利用 sigmoid 导数的性质 $\sigma’(z) = \sigma(z)(1-\sigma(z))$ 消去分子分母中的 $\hat{y}_i$ 和 $1-\hat{y}_i$。

Q3: 牛顿法与梯度下降在逻辑回归中有什么区别?

A:

  • 梯度下降只用一阶信息(梯度),收敛率为线性,需要调学习率。优点是每步计算简单($O(Nd)$)。
  • 牛顿法同时使用二阶信息(Hessian),收敛率为二次(在最优解附近每步有效数字翻倍),不需要调学习率。缺点是每步需要解 $d \times d$ 的线性系统($O(Nd^2 + d^3)$),当 $d$ 大时不可行。
  • 实际中常用 L-BFGS 作为折中(超线性收敛率,$O(md)$ 内存)。

Q4: L1 正则化和 L2 正则化有什么区别?各适用于什么场景?

A:

  • L2(Ridge):$\lambda |w|_2^2$,产生非稀疏解,所有特征权重被等比例缩小但不为零。适用于所有特征都可能有贡献的场景,能处理共线性。
  • L1(Lasso):$\lambda |w|_1$,产生稀疏解(部分权重精确为 0),等价于自动特征选择。适用于特征很多但只有少数重要的场景(如文本分类的高维稀疏特征)。
  • 数学本质:L2 的约束域是球体(圆滑,最优点一般在内部不在轴上),L1 的约束域是菱形(尖角在坐标轴上,容易卡在轴上)。
  • 概率解释:L2 对应 Gaussian 先验,L1 对应 Laplace 先验。Laplace 分布在 0 处概率密度更高,推动权重趋向 0。
  • 实际建议:不确定时用 ElasticNet(L1+L2 混合),兼顾稀疏性和稳定性。

Q5: 逻辑回归和最大熵模型的关系是什么?

A: 二分类逻辑回归是最大熵模型在特定特征函数下的等价形式。最大熵原理要求:在满足已知约束(训练数据上的特征期望匹配)的条件下,选择熵最大的条件概率分布。这个约束优化问题的解恰好是指数族形式 $P(y|x) \propto \exp(\sum_k w_k f_k(x,y))$。当取 $f(x,y) = g(x)$ for $y=1$(其余为 0)时,最大熵模型退化为逻辑回归。反过来,最大熵模型是逻辑回归在任意特征函数下的推广。对偶地,最大熵模型的原始问题(最大化熵)的对偶问题是最小化负对数似然——与逻辑回归的 MLE 优化目标一致。

Q6: 如何判断逻辑回归是否过拟合?如何解决?

A:

  • 判断方法:比较训练集和验证集上的 loss/AUC,如果训练指标远好于验证,则过拟合;观察权重 $|w_j|$ 是否异常大(特别在不加正则化时)。
  • 解决方案:(1)增加 L1/L2/ElasticNet 正则化;(2)减少特征数量(基于 VIF、特征重要性或业务知识);(3)增加训练数据(或使用数据增强);(4)提前终止(early stopping);(5)降低模型复杂度(如使用更少的多项式交互特征)。

Q7: 逻辑回归可以处理非线性决策边界吗?

A: 原生逻辑回归(线性组合+sigmoid)只能学习线性决策边界。要通过以下方式引入非线性:

  1. 特征工程:手动构造多项式特征、交互特征、分段特征(如 $x_1^2, x_1 x_2, \log(x_3)$)
  2. 核逻辑回归(Kernel Logistic Regression, KLR):通过 Representer Theorem 将逻辑回归推广为核方法,隐式映射到高维特征空间
  3. 深度网络:用神经网络提取特征,最后一层接 sigmoid(实际上就是深度网络做二分类)
  4. GBDT + LR:用 GBDT 的叶子节点作为特征输入给逻辑回归(Facebook/Google 实践)

Q8: Softmax 回归的参数为什么是冗余的?

A: Softmax 函数 $\frac{\exp(w_k \cdot x)}{\sum_j \exp(w_j \cdot x)}$ 对所有 $w_k$ 同时减去同一个向量 $c$ 时,分子分母的 $\exp(c \cdot x)$ 因子会相互抵消,因此概率分布不变。这意味着有 $(K-1)d$ 个独立参数(而非 $Kd$ 个)。实践中要么固定一个 $w_k = 0$,要么使用权重衰减(L2 正则化会把参数推向 0,间接选择最小范数解),两者都能解决冗余问题。


13. 逻辑回归凸性的严格证明

为什么交叉熵损失 $J(w) = -\frac{1}{N}\sum_i [y_i \log \sigma(w \cdot x_i) + (1-y_i)\log(1 - \sigma(w \cdot x_i))]$ 一定是凸函数?这里给出完整的三种证明。

证法一(Hessian 半正定性)

已推导 Hessian 为 $H = \frac{1}{N} X^T D X$,其中 $D = \text{diag}(\hat{y}_i(1-\hat{y}_i))$。

对任意 $v \in \mathbb{R}^d$:
$$v^T H v = \frac{1}{N} (Xv)^T D (Xv) = \frac{1}{N} \sum_{i=1}^{N} \hat{y}_i (1-\hat{y}_i) (x_i \cdot v)^2 \geq 0$$

因为 $\hat{y}_i \in (0, 1)$ 保证了 $\hat{y}_i (1-\hat{y}_i) > 0$(严格大于 0,sigmoid 永远不会精确等于 0 或 1)。因此 $H \succeq 0$(半正定),$J(w)$ 是凸函数。

实际上 $H \succ 0$(严格正定)当且仅当 $X$ 满列秩。若 $X$ 列不满秩(特征间线性相关),则 Hessian 仅是半正定,有平坦方向,需要正则化来保证唯一解。

证法二(复合函数的凸性)

$J(w) = \frac{1}{N} \sum_i f_i(w \cdot x_i)$,其中 $f_i(z) = -y_i \log \sigma(z) - (1-y_i)\log(1-\sigma(z))$。

$$f_i''(z) = \sigma(z)(1-\sigma(z)) > 0$$

因此每个 $f_i$ 是凸函数。凸函数与仿射变换 $g_i(w) = w \cdot x_i$ 的复合 $f_i \circ g_i$ 仍是凸函数。凸函数的非负加权和也是凸函数。因此 $J(w)$ 是凸函数。

这也直接说明:如果 $J$ 有驻点($\nabla J = 0$),该驻点就是全局最小值。

证法三(Bregman 散度视角)

交叉熵损失可以写为真实分布 $y$ 与预测分布 $\hat{y}$ 之间的 KL 散度:

$$\text{KL}(y \| \hat{y}) = \sum_i y_i \log \frac{y_i}{\hat{y}_i} + (1-y_i)\log \frac{1-y_i}{1-\hat{y}_i}$$

KL 散度对第二个参数是凸的(这是信息几何中的基本性质,来自 log-partition 函数 $A(\eta) = \log(1+e^{\eta})$ 的凸性)。因此 $J(w)$ 作为 KL 散度关于 $w$ 的函数也是凸的。


14. 总结

逻辑回归和最大熵模型是统计机器学习中基础而深刻的两个模型。

逻辑回归的核心脉络:

  1. log-odds 的线性建模 → sigmoid 函数 → 伯努利分布
  2. MLE 参数估计 → 交叉熵损失 → 凸优化(梯度下降/牛顿法/IRLS)
  3. L1/L2 正则化 → 贝叶斯 MAP 解释 → 稀疏解 vs 收缩解
  4. Softmax 扩展到多分类 → GLM 框架统一

最大熵模型的核心脉络:

  1. 在约束下最大化熵 → Lagrange 变分法 → 指数族分布
  2. 对偶问题等价于 MLE → IIS 算法求解
  3. 与逻辑回归的二分类等价 → 更一般的特征函数定义

关键区别:逻辑回归从概率建模出发(假设 log-odds 是线性的),最大熵从信息论出发(在约束下最大化不确定性),但两者殊途同归。

在现代工业实践中,逻辑回归仍然是 CTR 预估、风控建模、医疗诊断等领域的核心 baseline。与复杂模型(如深度网络)相比,它的可解释性、训练效率和概率校准能力使其在需要”理解”而非仅仅”预测”的场景中不可替代。


本系列下一篇文章将深入探讨决策树(ID3/C4.5/CART)及其与集成学习的关系,敬请期待。

文章作者: Leo·Cheung
文章链接: http://tufusi.com/2021/07/15/%E3%80%90%E7%BB%9F%E8%AE%A1%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95%E6%AD%BB%E7%A3%95%E7%B3%BB%E5%88%97%E3%80%91%E9%80%BB%E8%BE%91%E5%9B%9E%E5%BD%92%E4%B8%8E%E6%9C%80%E5%A4%A7%E7%86%B5%E6%A8%A1%E5%9E%8B/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ONE·PIECE
打赏
  • 微信
  • 支付宝

评论