这篇是把我们前面所有讨论系统化的一份速查与学习笔记:从二分类逻辑回归到多类 softmax 回归,讲清楚 odds/logit、MLE、交叉熵、梯度推导、正则化,以及 GD/牛顿法等优化要点。可直接作为复习提纲。
0. 问题设定与记号
- 训练集:({(x_i, y_i)}_{i=1}^N),(x_i\in\mathbb{R}^d)
- 二分类:(y_i\in{0,1});多分类:(y_i\in{0,1,\dots,C-1})
- 线性打分(logits):对类 (c) 记 (s_c = w^{(c)\top} x)
logits 不是概率,是“未归一化的分数”;要变成概率需要 sigmoid(二类)或 softmax(多类)。
1. 二分类:Logistic Regression
1.1 Sigmoid 与 logit
- Sigmoid:
[
\sigma(z)=\frac{1}{1+e^{-z}} \in (0,1)
] - 概率:
[
p(x)=P(y=1\mid x)=\sigma(w^\top x)
] - odds(几率比):(\dfrac{p}{1-p})
- logit(对数几率):(\mathrm{logit}(p)=\ln\dfrac{p}{1-p}=w^\top x)
logit 把 ((0,1)) 映射到 (({-}\infty,{+}\infty)),可用线性函数建模。
1.2 似然、对数似然与损失(交叉熵)
- i.i.d. 假设下的似然:
[
L(w)=\prod_{i=1}^N p_i^{y_i}(1-p_i)^{1-y_i},\quad p_i=\sigma(w^\top x_i)
] - 对数似然:
[
\ell(w)=\sum_{i=1}^N \big[y_i\ln p_i + (1-y_i)\ln(1-p_i)\big]
] - 损失(负对数似然 = 交叉熵):
[
E(w)=-\ell(w)= -\sum_{i=1}^N \big[y_i\ln p_i + (1-y_i)\ln(1-p_i)\big]
]
为什么从似然变成损失? 最大化 (\ell(w)) ⇔ 最小化 (-\ell(w)),便于用最小化优化器。
1.3 梯度与更新
[
\nabla E(w)=\sum_{i=1}^N (p_i - y_i),x_i
]
- 批量/小批量 GD:(w\leftarrow w-\eta\nabla E(w))
- 阈值判别:(\hat y=\mathbb{I}[p(x)\ge \tau])(默认 (\tau=0.5),可按业务调整)
1.4 正则化(以 L2 为例)
[
E_\lambda(w)=E(w)+\frac{\lambda}{2}|w|2^2,\quad
\nabla E\lambda(w)=\sum_i (p_i-y_i)x_i + \lambda w
]
权重衰减视角:
(w\leftarrow (1-\eta\lambda)w-\eta\sum (p_i-y_i)x_i)
作用:抑制过拟合、提升稳定性(抗共线性),贝叶斯视角等价于高斯先验。
2. 多分类:Softmax(Multinomial Logistic Regression)
2.1 概率模型(两种等价写法)
标准 softmax(常用)
[
p_c(x)=\frac{e^{w^{(c)\top}x}}{\sum_{k=0}^{C-1} e^{w^{(k)\top}x}}
]参考类(与课件一致)
取 class 0 为参考,(w^{(0)}\equiv 0):
[
P(y=0|x)=\frac{1}{1+\sum_{k=1}^{C-1}e^{w^{(k)\top}x}},\quad
P(y=c|x)=\frac{e^{w^{(c)\top}x}}{1+\sum_{k=1}^{C-1}e^{w^{(k)\top}x}};(c>0)
]
softmax 对“整体平移”不变:(s_c\mapsto s_c+a) 概率不变。选参考类只是去冗余,不影响预测。
2.2 交叉熵与 MLE
- One-hot 标签 (y_{ic}\in{0,1}),(\sum_c y_{ic}=1)
- 损失(不含正则):
[
E(W)=-\sum_{i=1}^N\sum_{c=0}^{C-1} y_{ic},\log p_{ic}
]
2.3 关键梯度结论(单样本 → 批量)
- softmax 的核心梯度恒等式:
[
\frac{\partial \ell_i}{\partial s_{ij}}=p_{ij}-y_{ij}
] - 链式到参数:
[
\frac{\partial \ell_i}{\partial w^{(j)}}=(p_{ij}-y_{ij}),x_i
] - 批量求和 + L2 正则:
[
\boxed{;\frac{\partial E}{\partial w^{(j)}}=\sum_{i=1}^N (p_{ij}-y_{ij})x_i+\lambda w^{(j)};}
]
向量化(最实用):
- 设 (X\in\mathbb{R}^{N\times d}), (W\in\mathbb{R}^{d\times C}),
(S= XW), (P=\mathrm{softmax}(S)), (Y) 为 one-hot
[
\boxed{;\nabla_W E = X^\top (P - Y) + \lambda W;}
]
(若用参考类法,固定第 1 列为 0 且不正则/不更新。)
2.4 学习规则(GD / mini-batch)
[
w^{(j)} \leftarrow w^{(j)} - \eta\Big(\tfrac{1}{|B|}!\sum_{i\in B}(p_{ij}-y_{ij})x_i + \lambda w^{(j)}\Big)
]
预测:(\hat y=\arg\max_c p_c(x))
3. Sigmoid 还是 Softmax?
- 互斥单选(只能属于一个类) → softmax + 多类交叉熵
- 非互斥多标签(可多选) → 逐类 sigmoid + 二元交叉熵(one-vs-rest)
二分类中,“一个 sigmoid”与“2 类 softmax”是等价的:
(P(y=1)=\dfrac{e^{s_1}}{e^{s_0}+e^{s_1}}=\sigma(s_1-s_0))
4. 为什么损失凸却没有封闭解?
- 逻辑回归的损失(交叉熵 / log-sum-exp)对参数是凸的 ⇒ 全局最优存在且唯一(加适当正则)。
- 但一阶条件是非线性方程组(包含 sigmoid/softmax 的指数项),无法像线性回归那样解出 (w) 的显式封闭式。
- 故需数值优化:GD/SGD/Adam/L-BFGS/牛顿(IRLS) 等。
5. 优化方法要点
5.1 一阶法(GD/SGD/Adam)
- 便宜、可扩展到大数据;配合标准化、动量、权重衰减、学习率调度、早停。
5.2 二阶法(牛顿/IRLS,拟牛顿 L-BFGS)
- 利用 Hessian(或其近似),局部二次收敛、迭代步数少;
- 每步解线性方程,计算/存储较重,适合中等规模;
- 逻辑回归 IRLS 形式:
[
\Delta w = (X^\top R X + \lambda I)^{-1} X^\top (y-p),\quad w\leftarrow w+\Delta w
]
其中 (R=\mathrm{diag}(p_i(1-p_i)))。
6. 决策阈值与评估
- 二分类默认阈值 (\tau=0.5);可按业务调优(ROC/PR 曲线、Youden/最佳 F1 等)。
- 多分类一般取 (\arg\max);不平衡可结合代价敏感或后处理。
7. 实现清单(Checklist)
- 特征标准化/归一化
- 偏置项:拼 1 或单独参数(通常不正则化偏置)
- softmax 数值稳定:行内减最大值(log-sum-exp trick)
- 正则系数 (\lambda) 与学习率 (\eta):验证集/交叉验证调参
- 小批量、早停、权重衰减;必要时用 L-BFGS
- 多分类参考类法 or 标准 softmax:预测等价,实现选更顺手的
8. 公式速查(Cheat Sheet)
二分类
[
\begin{aligned}
p_i&=\sigma(w^\top x_i),\
E(w)&=-\sum_i \big[y_i\ln p_i+(1-y_i)\ln(1-p_i)\big]+\tfrac{\lambda}{2}|w|^2,\
\nabla E(w)&=\sum_i (p_i-y_i)x_i+\lambda w.
\end{aligned}
]
多分类(softmax)
[
\begin{aligned}
p_{ic}&=\frac{e^{w^{(c)\top}x_i}}{\sum_k e^{w^{(k)\top}x_i}},\
E(W)&=-\sum_{i,c} y_{ic}\log p_{ic}+\tfrac{\lambda}{2}\sum_c|w^{(c)}|^2,\
\nabla_W E&=X^\top(P-Y)+\lambda W.
\end{aligned}
]
9. 常见问答(FAQ)
Q1:多分类一定要指定“class 0”吗?
A:不需要。参考类只是去冗余的一种参数化;标准 softmax 学 (C) 组权重即可,预测等价。
Q2:二分类不用 sigmoid 行吗?
A:可以。用二类 softmax等价;或用 SVM/hinge 等非概率方法。
Q3:为什么要正则化?
A:控制模型容量、抑制过拟合、提升数值稳定性;L1 得稀疏,L2 稳定抗共线,Elastic Net 折衷。
10. 参考实现(极简伪代码)
向量化梯度(softmax + L2):
# X: (N,d), Y one-hot: (N,C), W: (d,C)
S = X @ W # (N,C)
S -= S.max(axis=1, keepdims=True)
P = np.exp(S) / np.exp(S).sum(axis=1, keepdims=True)
grad = X.T @ (P - Y) / N + lam * W
W -= lr * grad
11. 结语
- 二分类:sigmoid + 交叉熵 + (p-y) 梯度
- 多分类:softmax + 交叉熵 + (P-Y) 梯度
- MLE → NLL(交叉熵):最大似然 ⇔ 最小负对数似然
- 凸但无封闭解:用数值优化(GD/L-BFGS/IRLS)
- 正则化:更稳、更泛化
记住两条黄金公式即可快速复原一切:
(\nabla E_{\text{binary}}=\sum (p-y)x+\lambda w);
(\nabla E_{\text{multi}}=X^\top(P-Y)+\lambda W)。
我们再继续展开discrimination的问题
有很多机器学习和深度学习是discrimination的
但是现在是生成式模型的时代generation
以中石化第一节人工智能竞赛为例,题目一是一个简单的分类问题,但是难点在于类不平衡
所有我们默认先使用分类的模型
因为是多分类问题,所以自然不能使用逻辑斯特回归
想到分类擅长的SVM改进版,是能应对多分类问题的
然后贝叶斯方法和决策树
随机森林
然后还有无监督knn方法
在解决这个数据挖掘问题的过程
Logistic 回归:用线性决策函数,最大化正则化对数似然(等价最小交叉熵)学到权重,输出 sigmoid/softmax 概率,适合近线性可分数据。
SVM:通过合页损失 + 正则寻找最大间隔超平面,配核技巧映射到高维以处理非线性边界。
朴素贝叶斯(NB):假设特征在给定类别下条件独立,先估
𝑝(𝑥∣𝑦)p(x∣y) 和 𝑝(𝑦)p(y) 再用贝叶斯定理求 𝑝(𝑦∣𝑥)
p(y∣x),简单快速但偏强假设。
决策树:按信息增益/基尼指数递归划分特征空间形成规则树,叶节点给类别,易解释但单树易过拟合。
随机森林:对样本与特征做随机子采样训练多棵弱相关树并投票/平均,显著降方差、鲁棒好、调参友好。