写在前面
本系列文章是对《统计学习方法》(李航著)的深度研读笔记。逻辑回归(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 函数的数学性质:
- 对称性:$\sigma(-z) = 1 - \sigma(z)$
- 导数性质(极其重要,简化梯度计算):
$$\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))$ - 饱和性:当 $z \to +\infty$,$\sigma(z) \to 1$;当 $z \to -\infty$,$\sigma(z) \to 0$。两端梯度趋近于 0。
- 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 |
优缺点:
- 优点:简单,每次迭代只需 $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 |
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 |
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 在以下情况下容易出问题:
完美分离(Perfect Separation):当训练数据完全线性可分时,MLE 会使得 $|w| \to \infty$,因为更大的 $|w|$ 使得 sigmoid 更接近阶跃函数,从而增加似然。这导致参数发散,模型过拟合。
高维数据:当 $d > N$ 时,MLE 不是唯一定义的(存在无穷多个参数组合能完美拟合训练数据)。
多重共线性:高度相关的特征导致 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$ 处不可导,不能用普通的梯度下降。常用求解方法:
- 坐标下降(Coordinate Descent):每次只优化一个 $w_j$,有闭式解(soft-thresholding operator)
- 近端梯度法(Proximal Gradient):ISTA / FISTA
- 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 的优势:
- 保留 L1 的稀疏性
- 保留 L2 的对相关特征的群组效应(grouping effect:高度相关的特征会被同时选中或同时舍弃)
- 当 $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$ 为任意向量)。
标准处理方式:
- 设某个 $w_k = 0$(例如 $w_K = 0$),将参数个数从 $Kd$ 降到 $(K-1)d$
- 或使用正则化——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):在满足已知约束的条件下,我们应该选择熵最大的概率分布。
这一原则有深刻的哲学依据:
- 最大熵意味着”不做任何没有根据的假设”——除了已知约束外,我们对未知保持最大的不确定性
- 任何其他分布都会”引入”额外的信息(即更低的熵),而这些引入的信息缺乏数据支撑
- 从信息论角度,最大熵分布是最安全的、最保守的、最不容易被数据之外的因素影响的分布
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) |
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 的三个假设
- **$y | x; \theta \sim \text{ExponentialFamily}(\eta)$**:给定 $x$ 和参数,$y$ 的分布属于指数族
- **$\eta = \theta^T x$**:自然参数是输入 $x$ 的线性函数
- **预测 $\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 的优势:
- 不需要添加修正特征
- 收敛速度通常更快(因为更新公式对每个参数更精准)
- 不需要知道全局 $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 数据预处理
- 缺失值处理:逻辑回归需要完整的特征。可以用均值/中位数填充,或使用模型(如 MICE)预测缺失值
- 特征缩放:虽然逻辑回归不像 SVM 那样对缩放敏感,但使用正则化时需要标准化(否则 L1/L2 对不同尺度的特征不公平)
- 分类特征编码:对无序分类变量使用 one-hot 编码;对有序分类变量可以保留为数值或使用 one-hot
- 共线性检测:计算 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$:
- 梯度消失问题:当 $\hat{y}$ 接近 0 或 1 时,sigmoid 进入饱和区,$\hat{y}(1-\hat{y}) \approx 0$,MSE 梯度趋近于 0,更新近乎停滞;而交叉熵损失的梯度是 $\hat{y} - y$,不存在梯度消失。
- 非凸性:MSE + sigmoid 的损失函数是非凸的,可能收敛到局部最优;交叉熵 + sigmoid 是凸函数,保证收敛到全局最优。
- 概率解释:交叉熵损失直接来自伯努利分布的极大似然估计,具有完备的概率解释。
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)只能学习线性决策边界。要通过以下方式引入非线性:
- 特征工程:手动构造多项式特征、交互特征、分段特征(如 $x_1^2, x_1 x_2, \log(x_3)$)
- 核逻辑回归(Kernel Logistic Regression, KLR):通过 Representer Theorem 将逻辑回归推广为核方法,隐式映射到高维特征空间
- 深度网络:用神经网络提取特征,最后一层接 sigmoid(实际上就是深度网络做二分类)
- 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. 总结
逻辑回归和最大熵模型是统计机器学习中基础而深刻的两个模型。
逻辑回归的核心脉络:
- log-odds 的线性建模 → sigmoid 函数 → 伯努利分布
- MLE 参数估计 → 交叉熵损失 → 凸优化(梯度下降/牛顿法/IRLS)
- L1/L2 正则化 → 贝叶斯 MAP 解释 → 稀疏解 vs 收缩解
- Softmax 扩展到多分类 → GLM 框架统一
最大熵模型的核心脉络:
- 在约束下最大化熵 → Lagrange 变分法 → 指数族分布
- 对偶问题等价于 MLE → IIS 算法求解
- 与逻辑回归的二分类等价 → 更一般的特征函数定义
关键区别:逻辑回归从概率建模出发(假设 log-odds 是线性的),最大熵从信息论出发(在约束下最大化不确定性),但两者殊途同归。
在现代工业实践中,逻辑回归仍然是 CTR 预估、风控建模、医疗诊断等领域的核心 baseline。与复杂模型(如深度网络)相比,它的可解释性、训练效率和概率校准能力使其在需要”理解”而非仅仅”预测”的场景中不可替代。
本系列下一篇文章将深入探讨决策树(ID3/C4.5/CART)及其与集成学习的关系,敬请期待。

