一句话版:逻辑回归 用对数似然(交叉熵)做目标,学到的是概率模型 ;SVM 用间隔最大化 做目标,学到的是几何上最"安全"的超平面 。两者都是凸优化问题:适合用 GD/SGD、L-BFGS、牛顿-CG、SMO、Pegasos 等方法高效求解。
0. 从"风险最小化"看这两个老兵
监督学习常写成
min θ 1 n ∑ i = 1 n ℓ ( f θ ( x i ) , y i ) + λ Ω ( θ ) , \min_\theta\; \frac1n\sum_{i=1}^n \ell\big(f_\theta(x_i),y_i\big)\;+\;\lambda\,\Omega(\theta), θminn1i=1∑nℓ(fθ(xi),yi)+λΩ(θ),
其中 ℓ \ell ℓ 是损失, Ω \Omega Ω 是正则(如 1 2 ∥ w ∥ 2 2 \frac12\|w\|_2^2 21∥w∥22)。逻辑回归 与线性 SVM 只是不同的 ℓ \ell ℓ 与 Ω \Omega Ω。
- 逻辑回归: ℓ log = log ( 1 + exp ( − y w ⊤ x ) ) \ell_{\text{log}} = \log\big(1+\exp(-y\,w^\top x)\big) ℓlog=log(1+exp(−yw⊤x));
- SVM(软间隔,L2 正则 + hinge): ℓ hinge = max ( 0 , 1 − y w ⊤ x ) \ell_{\text{hinge}} = \max(0,1-y\,w^\top x) ℓhinge=max(0,1−yw⊤x)。
二者都凸 ,因此全局最优 可达;差别在于:逻辑回归会输出概率 ,SVM 直接优化间隔(决策边界"更硬核")。
1. 逻辑回归(Logistic Regression)
1.1 模型与目标
二分类 y ∈ { 0 , 1 } y\in\{0,1\} y∈{0,1} 或 y ∈ { − 1 , + 1 } y\in\{-1,+1\} y∈{−1,+1}。设 s = w ⊤ x + b s=w^\top x+b s=w⊤x+b,概率模型
P ( y = 1 ∣ x ) = σ ( s ) = 1 1 + e − s . P(y=1\mid x)=\sigma(s)=\frac{1}{1+e^{-s}}. P(y=1∣x)=σ(s)=1+e−s1.
最大化似然 ⇔ 最小化负对数似然(交叉熵):
min w , b 1 n ∑ i = 1 n ( − y i log σ ( s i ) − ( 1 − y i ) log ( 1 − σ ( s i ) ) ) + λ 2 ∥ w ∥ 2 2 . \min_{w,b}\; \frac1n\sum_{i=1}^n\Big(-y_i\log\sigma(s_i)-(1-y_i)\log(1-\sigma(s_i))\Big)+\frac{\lambda}{2}\|w\|_2^2. w,bminn1i=1∑n(−yilogσ(si)−(1−yi)log(1−σ(si)))+2λ∥w∥22.
直觉:把正例推进到"高概率区",负例推进到"低概率区",惩罚错分且对不自信的惩罚更重。
1.2 梯度与 Hessian(凸!)
记 y ^ i = σ ( s i ) \hat y_i=\sigma(s_i) y^i=σ(si), X ∈ R n × d X\in\mathbb{R}^{n\times d} X∈Rn×d。
- 梯度: ∇ w = 1 n X ⊤ ( y ^ − y ) + λ w , ∇ b = 1 n 1 ⊤ ( y ^ − y ) \nabla_w = \frac1n X^\top(\hat y - y) + \lambda w,\ \nabla_b = \frac1n\mathbf{1}^\top(\hat y - y) ∇w=n1X⊤(y^−y)+λw, ∇b=n11⊤(y^−y)。
- Hessian: ∇ w 2 = 1 n X ⊤ W X + λ I \nabla^2_w = \frac1n X^\top W X + \lambda I ∇w2=n1X⊤WX+λI,其中 W = d i a g ( y ^ i ( 1 − y ^ i ) ) ⪰ 0 W=\mathrm{diag}(\hat y_i(1-\hat y_i))\succeq 0 W=diag(y^i(1−y^i))⪰0。
因此目标凸 ,且加 λ > 0 \lambda>0 λ>0 后强凸,收敛性与泛化更好。
1.3 解法速览
- 批梯度/小批量 SGD:简单、适合大样本流式训练。
- L-BFGS :无需显式 Hessian,超线性收敛,小中型数据很好用。
- 牛顿-CG(IRLS) :用 HVP 解线性系统 ( X ⊤ W X + λ I ) p = − g (X^\top W X + \lambda I)p=-g (X⊤WX+λI)p=−g,步子稳、迭代少。
SGD
L-BFGS
牛顿CG
未收敛
收敛
初始化 w,b
前向: s=w^Tx+b, p=sigmoid(s)
梯度: X^T(p-y)+λw
选更新法
小批量更新
两遍递推求方向
HVP+CG 求方向
检查收敛
输出模型
图示:逻辑回归训练闭环。
1.4 工程要点
- 特征缩放(标准化)让优化更快;
- 类别不均衡 :用 正负样本权重 或 加权交叉熵;
- 概率校准 :需要可用概率时可做 Platt scaling 或 温度缩放(验证集拟合);
- 多分类:softmax 逻辑回归(cross-entropy)同理。
1.5 逻辑回归何时很香?
- 需要概率输出/可解释性;
- 线性可分或近似线性、特征很稀疏;
- 作为线性探针评估表征(NLP/LLM、CV)。
2. 支持向量机(SVM)
2.1 硬/软间隔与几何意义
线性函数 f ( x ) = w ⊤ x + b f(x)=w^\top x+b f(x)=w⊤x+b。硬间隔(可完全分):
min w , b 1 2 ∥ w ∥ 2 s.t. y i ( w ⊤ x i + b ) ≥ 1. \min_{w,b}\ \frac12\|w\|^2\quad\text{s.t. } y_i(w^\top x_i+b)\ge 1. w,bmin 21∥w∥2s.t. yi(w⊤xi+b)≥1.
软间隔(允许错分):
min w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i ξ i s.t. y i ( w ⊤ x i + b ) ≥ 1 − ξ i , ξ i ≥ 0. \min_{w,b,\xi}\ \frac12\|w\|^2 + C\sum_i \xi_i\quad \text{s.t. } y_i(w^\top x_i+b)\ge 1-\xi_i,\ \xi_i\ge 0. w,b,ξmin 21∥w∥2+Ci∑ξis.t. yi(w⊤xi+b)≥1−ξi, ξi≥0.
直觉:最大化几何间隔 ( γ = 1 / ∥ w ∥ \gamma=1/\|w\| γ=1/∥w∥),"边界最安全"。 C C C 控制"安全 vs 违规"的权衡。
也可写成正则化 hinge 损失:
min w , b 1 2 ∥ w ∥ 2 + C ∑ i max ( 0 , 1 − y i ( w ⊤ x i + b ) ) . \min_{w,b}\ \frac12\|w\|^2 + C\sum_i \max(0,1-y_i(w^\top x_i+b)). w,bmin 21∥w∥2+Ci∑max(0,1−yi(w⊤xi+b)).
2.2 KKT 与"支持向量"
对偶问题(软间隔 L2):
max α ∑ i α i − 1 2 ∑ i , j α i α j y i y j K ( x i , x j ) \max_{\alpha}\ \sum_i \alpha_i - \frac12\sum_{i,j}\alpha_i\alpha_j y_i y_j K(x_i,x_j) αmax i∑αi−21i,j∑αiαjyiyjK(xi,xj)
s.t. 0 ≤ α i ≤ C , ∑ i α i y i = 0 , \text{s.t. } 0\le \alpha_i \le C,\ \sum_i \alpha_i y_i = 0, s.t. 0≤αi≤C, i∑αiyi=0,
预测 f ( x ) = ∑ i α i y i K ( x i , x ) + b f(x)=\sum_i \alpha_i y_i K(x_i,x)+b f(x)=∑iαiyiK(xi,x)+b。
- 互补松弛 : α i > 0 \alpha_i>0 αi>0 的点恰在或违反间隔边界(支持向量 );其余 α i = 0 \alpha_i=0 αi=0。
- 核技巧 :把内积 ⟨ x i , x j ⟩ \langle x_i,x_j\rangle ⟨xi,xj⟩ 换成核 K K K(RBF、多项式等),得到非线性 SVM。
线性 SVM
原始: 1/2||w||^2 + C∑hinge
对偶: α 上的二次规划
核函数 K(x,x')
预测: f(x)=∑ α y K + b
图示:SVM 的原始--对偶--核三件套。
2.3 解法速览
- SMO(序列最小优化) :分块坐标上升,对偶上每次解 2 变量 QP,核 SVM 的经典算法。
- Pegasos(Primal SGD) :在原始问题 上做带投影的 SGD,迭代复杂度与 1 λ ϵ \frac{1}{\lambda \epsilon} λϵ1 成正比,适合大规模线性 SVM。
- 线性 SVM 的一阶法 :对 hinge 做次梯度 或光滑近似(Huberized hinge),配合动量/L-BFGS。
Pegasos 核心更新 (学习率 η t = 1 / ( λ t ) \eta_t=1/(\lambda t) ηt=1/(λt)):
- 若 y t w t ⊤ x t < 1 y_t w_t^\top x_t < 1 ytwt⊤xt<1: w t + 1 = ( 1 − η t λ ) w t + η t y t x t w_{t+1}=(1-\eta_t\lambda)w_t+\eta_t y_t x_t wt+1=(1−ηtλ)wt+ηtytxt;
- 否则 w t + 1 = ( 1 − η t λ ) w t w_{t+1}=(1-\eta_t\lambda)w_t wt+1=(1−ηtλ)wt;
- 并投影到 ∥ w ∥ ≤ 1 λ \|w\|\le \frac{1}{\sqrt{\lambda}} ∥w∥≤λ 1。
2.4 工程要点
- 特征缩放 极其重要(对核参数 γ \gamma γ、C 的敏感性很高);
- 选择核与超参 :RBF 常用;交叉验证选 C , γ C,\gamma C,γ;
- 概率输出 :原生无概率,可用 Platt scaling 做后处理;
- 大规模线性:优先 Pegasos / 线性 SVM(liblinear)。
3. 逻辑回归 vs SVM:怎么选?
| 方面 | 逻辑回归 | SVM |
|---|---|---|
| 目标 | 最大似然(交叉熵) | 间隔最大化(hinge) |
| 输出 | 概率可校准 | 分数,概率需后处理 |
| 损失曲线 | 光滑,可二阶 | 非光滑(可光滑化) |
| 超参 | λ \lambda λ(正则) | C C C(惩罚)/核参数 |
| 大规模 | L-BFGS/SGD 稳健 | 线性:Pegasos;核:SMO |
| 何时优 | 概率、解释、线性探针 | 边界明确、核非线性、鲁棒边界 |
经验 :想要概率与可解释性 → 逻辑回归;边界更"硬"、有核非线性 需求 → SVM。大模型表征评估常用线性逻辑回归作为 probe。
4. 代码骨架
4.1 逻辑回归(L-BFGS,PyTorch 版思路)
python
import torch
from torch.optim import LBFGS
class Logistic(torch.nn.Module):
def __init__(self, d):
super().__init__()
self.w = torch.nn.Parameter(torch.zeros(d,1))
self.b = torch.nn.Parameter(torch.zeros(1))
def forward(self, X):
return torch.sigmoid(X @ self.w + self.b)
def train_logreg(X, y, lam=1e-4, max_iter=100):
model = Logistic(X.shape[1])
opt = LBFGS(model.parameters(), lr=1.0, max_iter=max_iter, line_search_fn='strong_wolfe')
y = y.view(-1,1).float()
def closure():
opt.zero_grad()
p = model(X)
ce = torch.nn.functional.binary_cross_entropy(p, y, reduction='mean')
reg = 0.5 * lam * (model.w**2).sum()
loss = ce + reg
loss.backward()
return loss
opt.step(closure)
return model
4.2 线性 SVM 的 Pegasos(NumPy 版思路)
python
import numpy as np
def pegasos_linear_svm(X, y, lam=1e-4, T=10_000):
# X: (n,d), y in {-1,1}
n, d = X.shape
w = np.zeros(d)
for t in range(1, T+1):
i = np.random.randint(0, n)
eta = 1.0 / (lam * t)
if y[i] * (w @ X[i]) < 1:
w = (1 - eta*lam) * w + eta * y[i] * X[i]
else:
w = (1 - eta*lam) * w
# 投影到 L2 球
norm = np.linalg.norm(w)
R = 1.0 / np.sqrt(lam)
if norm > R:
w = w * (R / norm)
return w
5. 常见坑与排错
-
未做特征缩放 → 优化慢、超参难调。
- 处理:标准化到零均值、单位方差或归一化到 [ − 1 , 1 ] [-1,1] [−1,1]。
-
类别极度不均衡 → 概率/间隔偏向多数类。
- 处理:类权重、欠/过采样、阈值调优。
-
逻辑回归过拟合 → 权重过大、概率过于自信。
- 处理:增大 λ \lambda λ、特征选择、早停、校准。
-
SVM 超参敏感(尤其核) → 训练/验证差异大。
- 处理:网格/贝叶斯搜索、对数尺度扫描 C , γ C,\gamma C,γ。
-
hinge 次梯度实现错误 → 方向不对,无法收敛。
- 处理:逐样本检查 y w ⊤ x < 1 y w^\top x < 1 yw⊤x<1 的分支与正则项更新。
-
概率需求却用原生 SVM → 分数无法直接阐释。
- 处理:Platt scaling/温度缩放做后处理。
6. 练习(含提示)
- IRLS 推导 :从逻辑回归二次近似出发,推导 ( X ⊤ W X + λ I ) Δ = X ⊤ ( y − y ^ ) − λ w (X^\top W X + \lambda I)\Delta = X^\top (y-\hat y)-\lambda w (X⊤WX+λI)Δ=X⊤(y−y^)−λw。
- hinge 的次梯度 :给出 ∂ w max ( 0 , 1 − y w ⊤ x ) \partial_w \max(0,1-y w^\top x) ∂wmax(0,1−yw⊤x) 并实现线性 SVM 的小批量次梯度下降。
- SVM 对偶与支持向量:在 2D 可分数据上,画出支持向量与间隔边界。
- 概率校准:在验证集上实现 Platt scaling,比较校准前后的可靠性图。
- 核选择实验 :RBF/多项式/线性核在同一数据上的对比,展示 C , γ C,\gamma C,γ 的影响。
- 对比学习率策略:逻辑回归上比较固定 LR、余弦退火、OneCycle 对收敛速度的影响(参见 5-7)。
7. 小结(带走三句话)
- 逻辑回归 :交叉熵 + L2 正则,概率友好、凸、易二阶。
- SVM :间隔最大化 + hinge,边界稳、核技巧强大。
- 两者都是凸优化的经典代表,配合合适的优化器与调度 ,在现代表征学习、线性探针与小样本任务里依然能打。