Lecture 4: Dataset Split; Exponential Family. Generalized Linear Models (GLMs)
Lecture 4: Dataset Split; Exponential Family. Generalized Linear Models (GLMs)
概述
本讲先补上工程上至关重要的数据集划分纪律(train/dev/test 的用途与数据泄漏风险);随后进入课程第一个理论高峰:指数族分布与广义线性模型 (GLM)。GLM 证明了线性回归、逻辑回归、Softmax 回归等看似不同的模型,其实是同一个设计框架(指数族 + 链接函数)的特例——这解释了 L3 中“梯度形式相同”的巧合。
核心概念与数学直觉
- 数据集划分 (Dataset Split):
- 直观解释:train 集是“课本”(用来学习);dev/validation 集是“模拟考”(用来调参、选模型);test 集是“高考”(只考一次,评估最终泛化性能)。
- 常见比例:小数据 60/20/20;大数据(百万级)可 98/1/1,因为 dev/test 只需足够统计显著即可。
- 关键纪律:dev 与 test 必须反映真实部署分布;不得用 test 调参;随机划分前需注意类别分层(stratified split),时序数据用时间切分而非随机切分(防泄漏)。
- 指数族分布 (Exponential Family):
- 定义:一族概率分布,可写成统一形式
$p(y; \eta) = b(y) \exp\left( \eta^T T(y) - a(\eta) \right)$- $\eta$:自然参数 (natural parameter),控制分布形状。
- $T(y)$:充分统计量 (sufficient statistic)——通常 $T(y) = y$。
- $b(y)$:基测度(normalization 的剩余部分)。
- $a(\eta)$:log-partition 函数,保证分布归一化,即 $a(\eta) = \log \int b(y) e^{\eta^T T(y)} dy$。
- 直觉:指数族是“一大族常见分布的共同模板”。伯努利分布(分类的基础)、高斯分布(回归的基础)、多项分布、泊松、伽马、指数分布都属于指数族。
- 例子:伯努利 $y \sim \text{Bernoulli}(\phi)$ 可写为 $\eta = \log(\phi/(1-\phi))$(logit 变换)、$T(y)=y$、$a(\eta) = -\log(1-\phi) = \log(1+e^\eta)$。
- 有用性质:$E[T(y); \eta] = \frac{\partial a(\eta)}{\partial \eta}$——均值可由 $a$ 的导数直接得到,非常方便。
- 定义:一族概率分布,可写成统一形式
- 广义线性模型 (GLM) 的三个设计假设:
- $y \vert x; \theta \sim \text{ExponentialFamily}(\eta)$,其中 $\eta = \theta^T x$(线性假设:自然参数是特征的线性组合);
- 预测目标是 $h(x) = E[T(y)\vert x]$(预测充分统计量的期望);
- 自然参数 $\eta = \theta^T x$。
- 由假设 2 自动导出链接函数:$h_\theta(x) = E[y\vert x] = a^{\prime}(\eta) = a^{\prime}(\theta^T x)$——响应函数 (response function) 是 $a^{\prime}$,其逆为规范链接 (canonical link)。
- GLM 的三大特例(“同一个框架,三个模型”):
- 线性回归:$y \sim \mathcal{N}(\mu, \sigma^2)$(高斯),$\eta = \mu$,$a^{\prime}(\eta) = \eta$ ⇒ $h_\theta(x) = \theta^T x$。(恒等链接)
- 逻辑回归:$y \sim \text{Bernoulli}(\phi)$,$\eta = \log\frac{\phi}{1-\phi}$ ⇒ $h_\theta(x) = \phi = \frac{1}{1+e^{-\theta^T x}}$(Sigmoid 是 $a^{\prime}$ 的逆)。(logit 链接)
- Softmax 回归(多分类):$y \in \{1,\dots,k\}$,$y \sim \text{Multinomial}(\phi_1,\dots,\phi_k)$ ⇒ 定义 $k-1$ 个自然参数 $\eta_i = \log \frac{\phi_i}{\phi_k}$,反解得
$\phi_i = \frac{e^{\eta_i}}{\sum_{j=1}^{k} e^{\eta_j}}, \qquad h_\theta(x) = \begin{bmatrix} P(y=1\|x;\theta) \\ \vdots \\ P(y=k\|x;\theta) \end{bmatrix} = \frac{1}{\sum_{j=1}^{k} e^{\theta_j^T x}} \begin{bmatrix} e^{\theta_1^T x} \\ \vdots \\ e^{\theta_k^T x} \end{bmatrix}$- Softmax 是 Sigmoid 的多类推广;分母是归一化因子(softmax 之和恒为 1)。
- 直觉:把 $k$ 个线性得分 $e^{\theta_j^T x}$ 变成“概率分布”——得分越高概率越大,但用指数放大差距(“soft”的 max)。
- 统一意义:GLM 告诉我们——选择“$y$ 服从什么分布” = 选择“用什么损失函数”。这就是 L2/L3 中梯度形式巧合的根本原因:它们同属 GLM 家族,梯度更新都遵循 $\theta := \theta + \alpha (y - h) x$ 的通用形式(对 log-likelihood 梯度)。
算法伪代码与逻辑解说:Softmax 回归(多分类 GLM)
伪代码
输入:
- 训练数据 (X, y),y ∈ {1, ..., k},k 个类别
- 学习率 alpha,迭代次数 max_iters
输出:
- 参数矩阵 Theta ∈ R^(k × (n+1)),每行对应一个类别的权重
1. 初始化 Theta = 0(或小随机值)
2. 循环 iter = 1..max_iters:
2.1 线性得分: scores = X * Theta^T // m×k 矩阵
2.2 Softmax: probs = softmax(scores) // 每行归一化到概率分布
2.3 构造指示矩阵: Y_onehot[i, y^(i)] = 1 // m×k 的 one-hot 标签
2.4 梯度: grad = (1/m) * X^T * (probs - Y_onehot) // k×(n+1)
2.5 更新: Theta = Theta - alpha * grad^T
3. 返回 Theta
【算法逻辑解说】
- Step 2.2 Softmax 归一化:对第 $i$ 行的得分 $s_j = \theta_j^T x^{(i)}$ 计算 $p_j = e^{s_j} / \sum_{l} e^{s_l}$——把任意实数得分变成合法的概率分布。数值稳定性技巧:先减去行最大值再取指数(防止 $e^{s_j}$ 溢出)。
- Step 2.3 one-hot 编码:$Y_{\text{onehot}}[i, y^{(i)}] = 1$ 表示“样本 $i$ 的真实类别”。
- Step 2.4 梯度:$(probs - Y_{\text{onehot}})$ 是“预测概率 − 真实 one-hot”的误差矩阵——与 L3 逻辑回归的 $(y - h)$ 完全同构!对每个类别 $j$、每个特征 $l$:$\frac{\partial \ell}{\partial \theta_{jl}} = \sum_i (p_j^{(i)} - \mathbf{1}\{y^{(i)}=j\}) x_l^{(i)}$。
- Step 2.5 更新:沿着负梯度下降(最小化交叉熵损失)。Softmax 回归 = 多分类的逻辑回归;决策边界是类别间的线性分界面。
关键要点
- 数据集划分(train/dev/test)是防止评估失真的基本纪律;数据泄漏是隐蔽而致命的错误。
- 指数族统一了伯努利、高斯、多项等常见分布;$E[T(y)] = a^{\prime}(\eta)$ 是 GLM 的“发动机”。
- GLM 三假设(指数族 + 线性自然参数 + 预测充分统计量期望)⇒ 线性回归(恒等链接)、逻辑回归(logit 链接)、Softmax(多项分布)全是特例。
- “选分布 = 选损失”:高斯→MSE,伯努利→交叉熵。理解这一点比背公式更重要。
- GLM 家族梯度更新同构:$\theta := \theta + \alpha \sum_i (y^{(i)} - h_\theta(x^{(i)})) x^{(i)}$。
常见误区与注意事项
- 用随机划分处理时序数据:时间序列/用户行为数据必须按时间切分,否则未来信息泄漏进训练集,评估虚高。
- Softmax 参数冗余:$k$ 类只需 $k-1$ 组参数(最后一类可由归一化推出);但实践中保留 $k$ 组(加正则化)也常用且无碍。
- 误以为 GLM 覆盖所有模型:GLM 要求 $y$ 属指数族且 $\eta$ 线性——非线性模型(神经网络、SVM 核方法)在框架之外。
- 忽略数值稳定性:softmax/交叉熵实现应使用 log-sum-exp 技巧;直接用 $e^{s_j}$ 会溢出。
- 把 dev 与 test 混用:在 dev 上调参后,dev 性能已“乐观”;test 是唯一的最终裁判。
思考题
- 问题:证明伯努利分布属于指数族,并给出 $\eta$ 与 $\phi$ 的关系。
- 答案:$p(y;\phi) = \phi^y (1-\phi)^{1-y} = \exp(y \log\frac{\phi}{1-\phi} + \log(1-\phi))$。取 $T(y)=y$,$\eta = \log\frac{\phi}{1-\phi}$(logit),$b(y)=1$,$a(\eta) = -\log(1-\phi) = \log(1+e^\eta)$。反解:$\phi = \frac{1}{1+e^{-\eta}}$——Sigmoid 就是从伯努利指数族形式中自然涌现的。
- 问题:为什么说“GLM 的预测函数 $h_\theta(x) = E[y\vert x]$”决定了链接函数?
- 答案:由指数族性质 $E[T(y)] = a^{\prime}(\eta)$ 和假设 $\eta = \theta^T x$,得 $h_\theta(x) = a^{\prime}(\theta^T x)$。对高斯 $a^{\prime}(\eta)=\eta$(恒等);对伯努利 $a^{\prime}(\eta) = \frac{1}{1+e^{-\eta}}$(Sigmoid)。“响应函数是 $a^{\prime}$、链接函数是 $(a^{\prime})^{-1}$”完全由分布决定,无需手工设计。
- 问题:若 $y$ 是“某网页被点击次数”(计数,非负整数),应选用 GLM 的哪个分布与损失?为什么不用高斯/MSE?
- 答案:用泊松分布(Poisson,属指数族)→ 泊松回归,损失为泊松负对数似然。因为计数是非负整数且方差随均值变化,高斯假设(对称、常数方差)不合理;MSE 会把预测推向负数。这正是“分布决定损失”的实战例。
