Lecture 4: Dataset Split; Exponential Family. Generalized Linear Models (GLMs)

目录 · ← l3 · l5 →

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) 的三个设计假设
    1. $y \vert x; \theta \sim \text{ExponentialFamily}(\eta)$,其中 $\eta = \theta^T x$(线性假设:自然参数是特征的线性组合);
    2. 预测目标是 $h(x) = E[T(y)\vert x]$(预测充分统计量的期望);
    3. 自然参数 $\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 的三大特例(“同一个框架,三个模型”)
    1. 线性回归:$y \sim \mathcal{N}(\mu, \sigma^2)$(高斯),$\eta = \mu$,$a^{\prime}(\eta) = \eta$ ⇒ $h_\theta(x) = \theta^T x$。(恒等链接)
    2. 逻辑回归:$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 链接)
    3. 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

【算法逻辑解说】

  1. 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}$ 溢出)。
  2. Step 2.3 one-hot 编码:$Y_{\text{onehot}}[i, y^{(i)}] = 1$ 表示“样本 $i$ 的真实类别”。
  3. 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)}$。
  4. Step 2.5 更新:沿着负梯度下降(最小化交叉熵损失)。Softmax 回归 = 多分类的逻辑回归;决策边界是类别间的线性分界面

关键要点

  1. 数据集划分(train/dev/test)是防止评估失真的基本纪律;数据泄漏是隐蔽而致命的错误。
  2. 指数族统一了伯努利、高斯、多项等常见分布;$E[T(y)] = a^{\prime}(\eta)$ 是 GLM 的“发动机”。
  3. GLM 三假设(指数族 + 线性自然参数 + 预测充分统计量期望)⇒ 线性回归(恒等链接)、逻辑回归(logit 链接)、Softmax(多项分布)全是特例。
  4. “选分布 = 选损失”:高斯→MSE,伯努利→交叉熵。理解这一点比背公式更重要。
  5. 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 是唯一的最终裁判。

思考题

  1. 问题:证明伯努利分布属于指数族,并给出 $\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 就是从伯努利指数族形式中自然涌现的。
  2. 问题:为什么说“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}$”完全由分布决定,无需手工设计。
  3. 问题:若 $y$ 是“某网页被点击次数”(计数,非负整数),应选用 GLM 的哪个分布与损失?为什么不用高斯/MSE?
    • 答案:用泊松分布(Poisson,属指数族)→ 泊松回归,损失为泊松负对数似然。因为计数是非负整数且方差随均值变化,高斯假设(对称、常数方差)不合理;MSE 会把预测推向负数。这正是“分布决定损失”的实战例。