2.4 广义线性模型:指数族、链接函数与GLM

1.从一个疑问开始:逻辑回归凭什么长得这样

2.3 节我们讲了逻辑回归,它的样子你肯定记得:先把特征线性组合一下得到 z=wx+bz=w^\top x+b,再套一个 sigmoid 把 zz 压成 (0,1)(0,1) 之间的概率 y^=σ(z)\hat y=\sigma(z)。当时我大概是这么交代的——"因为分类问题想要个概率,而 sigmoid 正好能把实数压成概率"。

这个解释没错,但它留了个让人不舒服的疑问:为什么偏偏是 sigmoid? 世界上能把实数压到 (0,1)(0,1) 的函数多得很,比如 y^=z2/(1+z2)\hat y=z^2/(1+z^2) 也行,y^=z/(1+z)\hat y=|z|/(1+|z|) 也行,凭什么大家偏偏都用 sigmoid,还用得这么理直气壮?

这一节就来回答这个问题,而且答案会带出一个更漂亮的东西——广义线性模型(Generalized Linear Model,习惯上简称 GLM)。它会告诉你:逻辑回归不是个拍脑袋的特例,它和线性回归、泊松回归、Softmax 一样,都是同一套理论框架下的不同成员。理解了 GLM,你就把"输出层到底该套什么函数、配什么损失"这件事,从经验直觉升级成了有原理可循的判断。

2.先把三类问题摆在一起看

为了看出门道,我们把三个看似不同的任务并排放着。

线性回归:预测房价这种连续值。假设真实房价 yy 服从一个高斯分布,均值是 μ=wx+b\mu=w^\top x+b,模型直接输出这个均值。

逻辑回归:预测"是否违约"这种 0/1 二分类。假设标签 y{0,1}y\in\{0,1\} 服从伯努利分布,正类概率 p=σ(wx+b)p=\sigma(w^\top x+b),模型输出这个概率。

泊松回归:预测"一条微博今天被转发多少次"这种计数。假设转发数 y{0,1,2,}y\in\{0,1,2,\ldots\} 服从泊松分布,到达率 λ\lambda 是正的,得想办法让 λ=g1(wx+b)\lambda=g^{-1}(w^\top x+b),模型输出这个 λ\lambda

你看,三件事的结构出奇地一致:

  1. 都先做一次线性组合 η=wx+b\eta=w^\top x+b,我们管 η\eta线性预测子(linear predictor)。
  2. 标签 yy 都服从某种概率分布,而这个分布的参数(均值 μ\mu、概率 pp、到达率 λ\lambda)都由 η\eta 通过某个函数算出来。
  3. 那个"把 η\eta 映射成分布参数"的函数,三个任务各不相同:高斯用恒等,伯努利用 sigmoid(的逆,也就是 logit),泊松用指数。

GLM 做的事情,就是把这三件事形式化、一般化。它由三个要素组成:指数族分布 + 线性预测子 + 链接函数。下面一个一个推。

3.第一块积木:指数族分布

GLM 要求标签 yy 服从指数族分布。这个族很大,高斯、伯努利、泊松、二项、Gamma、多项式……一大票常用分布都是它的成员。它的标准形式长这样:

p(y;η)=b(y)exp(ηT(y)a(η))p(y;\eta)=b(y)\exp\bigl(\eta^\top T(y)-a(\eta)\bigr)

我挨个解释符号。yy 是观测到的标签;η\eta自然参数(natural parameter),也叫规范参数;T(y)T(y)充分统计量(sufficient statistic),通常就是 yy 本身;b(y)b(y) 是一个只和 yy 有关的归一化因子;a(η)a(\eta)对数配分函数(log-partition function),它保证概率密度积分为 1。

这式子看着抽象,但它干的事情很朴素:把任何能写成"某东西 × 充分统计量,减去一个修正项"这种形状的分布,都收编成同一家人。光说没用,我们拿三个老朋友挨个验一下。

高斯分布。设 yN(μ,σ2)y\sim\mathcal N(\mu,\sigma^2),为了推导干净,先取 σ2=1\sigma^2=1(方差是常数,不影响结论)。它的密度是:

p(y;μ)=12πexp ⁣((yμ)22)p(y;\mu)=\frac{1}{\sqrt{2\pi}}\exp\!\Bigl(-\frac{(y-\mu)^2}{2}\Bigr)

把平方展开 (yμ)2=y22μy+μ2(y-\mu)^2=y^2-2\mu y+\mu^2,代回去整理:

p(y;μ)=12πexp ⁣(y22)exp ⁣(μyμ22)p(y;\mu)=\frac{1}{\sqrt{2\pi}}\exp\!\Bigl(-\frac{y^2}{2}\Bigr)\cdot\exp\!\bigl(\mu\,y-\frac{\mu^2}{2}\bigr)

对照标准形式就出来了:η=μ\eta=\muT(y)=yT(y)=yb(y)=12πexp(y2/2)b(y)=\frac{1}{\sqrt{2\pi}}\exp(-y^2/2)a(η)=μ2/2=η2/2a(\eta)=\mu^2/2=\eta^2/2高斯分布的均值 μ\mu 恰好等于自然参数 η\eta

伯努利分布。设 y{0,1}y\in\{0,1\},正类概率 ϕ\phi,则 p(y;ϕ)=ϕy(1ϕ)1yp(y;\phi)=\phi^y(1-\phi)^{1-y}。把它写成指数形式:

p(y;ϕ)=exp ⁣(ylogϕ+(1y)log(1ϕ))=exp ⁣(ylogϕ1ϕ+log(1ϕ))p(y;\phi)=\exp\!\bigl(y\log\phi+(1-y)\log(1-\phi)\bigr)=\exp\!\Bigl(y\log\frac{\phi}{1-\phi}+\log(1-\phi)\Bigr)

对照标准形式:η=logϕ1ϕ\eta=\log\frac{\phi}{1-\phi}(这就是 logit!),T(y)=yT(y)=ya(η)=log(1ϕ)a(\eta)=-\log(1-\phi)。这里自然参数 η\eta 不直接是概率 ϕ\phi,而是概率的 logit。把 η=logϕ1ϕ\eta=\log\frac{\phi}{1-\phi} 反解出 ϕ\phi

ϕ=11+eη=σ(η)\phi=\frac{1}{1+e^{-\eta}}=\sigma(\eta)

sigmoid 就这么自然地冒出来了——它是伯努利分布从自然参数还原成概率的那个反函数。 这就回答了开头那个疑问:逻辑回归用 sigmoid 不是拍脑袋,而是因为标签服从伯努利分布,而伯努利的均值(概率)作为自然参数的函数,恰好是 sigmoid。

泊松分布。设 y{0,1,2,}y\in\{0,1,2,\ldots\},到达率 λ\lambda,则 p(y;λ)=eλλyy!=1y!exp(ylogλλ)p(y;\lambda)=\frac{e^{-\lambda}\lambda^y}{y!}=\frac{1}{y!}\exp(y\log\lambda-\lambda)。对照标准形式:η=logλ\eta=\log\lambdaT(y)=yT(y)=ya(η)=λ=eηa(\eta)=\lambda=e^\eta。所以 λ=eη\lambda=e^\eta——泊松的到达率是自然参数的指数。

把三个例子汇总成一张表,规律一目了然:

分布 标签类型 η\eta 与参数的关系 均值 μ=\mu=
高斯 连续值 η=μ\eta=\mu η\eta
伯努利 0/1 η=logμ1μ\eta=\log\frac{\mu}{1-\mu} σ(η)=11+eη\sigma(\eta)=\frac1{1+e^{-\eta}}
泊松 计数 η=logμ\eta=\log\mu eηe^\eta

4.第二块积木:线性预测子与链接函数

指数族给了我们"标签服从什么分布",线性预测子 η=wx+b\eta=w^\top x+b 给了我们"怎么用特征算出一个数"。现在要把两者接起来。

接法的关键,是这个等式:

η=g(μ)\eta=g(\mu)

其中 μ=E[Y]\mu=\mathbb E[Y] 是标签分布的均值g()g(\cdot)链接函数(link function),它的逆 g1g^{-1} 把线性预测子映回均值:μ=g1(η)\mu=g^{-1}(\eta)

最自然的选择,是让链接函数就等于上面那三种"自然参数与均值的关系",即 g(μ)=ηg(\mu)=\eta。这种链接有个专门的名字,叫规范链接(canonical link)。把三个例子代入:

  • 高斯:η=μ\eta=\mu,规范链接是恒等函数 g(μ)=μg(\mu)=\mu,所以 μ=wx+b\mu=w^\top x+b,模型直接输出线性组合——这就是线性回归
  • 伯努利:η=logμ1μ\eta=\log\frac{\mu}{1-\mu},规范链接是 logit,反函数是 sigmoid,所以 μ=σ(wx+b)\mu=\sigma(w^\top x+b)——这就是逻辑回归
  • 泊松:η=logμ\eta=\log\mu,规范链接是对数,反函数是指数,所以 μ=ewx+b\mu=e^{w^\top x+b}——这就是泊松回归

到这里,GLM 的全貌就清楚了。它由三要素定义:

  1. 标签 yy 服从指数族分布 p(y;η)p(y;\eta)
  2. 预测子是线性的:η=wx+b\eta=w^\top x+b
  3. 均值通过规范链接由 η\eta 决定:μ=g1(η)\mu=g^{-1}(\eta),即 g(μ)=ηg(\mu)=\eta

换一个分布,就自动换一个规范链接、换一个输出函数、换一个任务类型。线性回归、逻辑回归、泊松回归,全是同一张图纸盖出来的不同房子。这就是 GLM 的漂亮之处:它把"输出层到底该套什么"这件事,从"凭感觉选激活函数"变成了"由标签分布唯一确定"。

至于 Softmax(多项式分布,多分类版伯努利),它也是 GLM 的成员。多项式分布的自然参数是 ηk=logpkpK\eta_k=\log\frac{p_k}{p_K}(以最后一类为基准),反解出来就是熟悉的 Softmax 公式 pk=eηkjeηjp_k=\frac{e^{\eta_k}}{\sum_j e^{\eta_j}}。所以 2.3 节那个多分类 Softmax,本质上是逻辑回归的 GLM 推广。

5.怎么训练:从最大似然到 IRLS

理论搭好了,接下来是工程问题:给定一堆数据 (xi,yi)(x_i,y_i),怎么把参数 w,bw,b 学出来。

GLM 的训练目标很统一,就是最大似然估计(MLE,1.4 节讲过)。设每个样本独立,似然是:

L(w,b)=i=1np(yi;ηi)=i=1nb(yi)exp(ηiT(yi)a(ηi)),ηi=wxi+bL(w,b)=\prod_{i=1}^{n}p(y_i;\eta_i)=\prod_{i=1}^{n}b(y_i)\exp\bigl(\eta_i T(y_i)-a(\eta_i)\bigr),\quad \eta_i=w^\top x_i+b

取负对数似然当损失:

J(w,b)=logL=i=1n[a(ηi)ηiT(yi)logb(yi)]J(w,b)=-\log L=\sum_{i=1}^{n}\bigl[a(\eta_i)-\eta_i T(y_i)-\log b(y_i)\bigr]

最后一项 logb(yi)\log b(y_i) 只和数据有关、跟参数无关,优化时可以扔掉。剩下的是关于 ηi=wxi+b\eta_i=w^\top x_i+b 的函数。线性回归时这一项退化成 (yiμi)2/2(y_i-\mu_i)^2/2(平方损失),逻辑回归时退化成交叉熵——GLM 用一个统一框架把它们都涵盖了。

这个损失对线性预测子 ηi\eta_i 的梯度,有一个特别漂亮的结果。利用指数族的一条性质——dadη=E[T(Y)]=μ\frac{d a}{d\eta}=\mathbb E[T(Y)]=\mu(对数配分函数的导数恰好等于均值的充分统计量,这一条可以自己验一下三个例子都成立),算梯度:

Jηi=μiT(yi)=μiyi\frac{\partial J}{\partial \eta_i}=\mu_i-T(y_i)=\mu_i-y_i

也就是预测均值减去真实标签。这个形式干净得让人感动,无论哪种 GLM 都一样。再往 ww 上传,注意 μi=g1(ηi)\mu_i=g^{-1}(\eta_i)ηiw=xi\frac{\partial\eta_i}{\partial w}=x_i

wJ=i=1n(μiyi)xi\nabla_w J=\sum_{i=1}^{n}(\mu_i-y_i)\,x_i

这正好就是线性回归、逻辑回归里你见过的那个梯度形式(2.2、2.3 节),现在它被推广到了任意 GLM。

有了梯度,最朴素的做法是梯度下降。但 GLM 还有个更高效的经典解法,叫 IRLS(Iteratively Reweighted Least Squares,迭代重加权最小二乘),它其实是牛顿法在 GLM 上的特化。这里给个直觉:牛顿法每一步要算海森矩阵,而对 GLM 来说,海森矩阵恰好能写成"一个加权的设计矩阵乘积" isixixi\sum_i s_i x_i x_i^\top(权重 sis_i 跟当前预测的方差有关),于是每一步牛顿更新等价于解一个加权最小二乘问题,下一轮再根据新预测重新算权重,迭代几轮就收敛。这就是为什么统计软件里 glm() 默认都用 IRLS——它比梯度下降快得多,而且对指数族这一类凸问题能保证收敛。

线性回归是 IRLS 的最平凡特例:高斯分布的方差是常数,权重 sis_i 全是 1,于是 IRLS 一步到位,退化成 2.2 节那个闭式解 w^=(XX)1Xy\hat w=(X^\top X)^{-1}X^\top y。逻辑回归时权重 si=μi(1μi)s_i=\mu_i(1-\mu_i),每轮变化,所以要多迭代几轮。

6.什么时候用哪种 GLM

理论讲完了,落到选型上,关键就一句话:看你的标签长什么样。

  • 标签是任意实数(房价、温度、销量)→ 高斯 → 线性回归,输出直接是 η\eta
  • 标签是 0/1(违约/不违约、患病/健康)→ 伯努利 → 逻辑回归,输出是 σ(η)\sigma(\eta)
  • 标签是非负整数(某路口一小时事故数、某帖子转发数)→ 泊松 → 泊松回归,输出是 eηe^\eta
  • 标签是多个类别之一(手写数字 0–9)→ 多项式 → Softmax 回归。
  • 标签是正的连续值但方差随均值增长(保险索赔金额、寿命)→ Gamma 或逆高斯,对应各自的规范链接。

举个真实场景。小明去医院实习,医生要他根据病人的人口学特征预测"下一年门诊就诊次数"。这个次数是计数型(0,1,2,…),如果硬上线性回归,模型可能预测出负的次数,荒唐;硬上逻辑回归也不对,那是 0/1 二分类。正确的做法是泊松回归,输出 eηe^\eta 天然非负,正好匹配计数数据的脾气。再比如预测"某件商品的评价星级(1–5)",这是个有序的多分类,用顺序逻辑回归(ordinal logistic,GLM 的一个变体)就比普通 Softmax 更贴切。

判断流程其实就两步:先认出标签的取值范围和分布形态,再套对应的指数族成员。这套判断力,比死记"分类用逻辑回归、回归用线性回归"要靠谱得多,因为它背后有原理撑着。

7.练习

Q1. 为什么逻辑回归用 sigmoid 而不是别的把实数压到 (0,1)(0,1) 的函数?用 GLM 的语言回答。

因为逻辑回归假设标签服从伯努利分布,而伯努利分布的均值(即正类概率)作为自然参数 η\eta 的函数是 ϕ=11+eη=σ(η)\phi=\frac{1}{1+e^{-\eta}}=\sigma(\eta)。sigmoid 是伯努利分布的规范链接的逆函数,由分布唯一决定,不是随便挑的。

Q2. 把伯努利分布 p(y;ϕ)=ϕy(1ϕ)1yp(y;\phi)=\phi^y(1-\phi)^{1-y} 写成指数族标准形式,并指出 η\etaT(y)T(y)a(η)a(\eta) 分别是什么。

p(y;ϕ)=exp(ylogϕ1ϕ+log(1ϕ))p(y;\phi)=\exp\bigl(y\log\frac{\phi}{1-\phi}+\log(1-\phi)\bigr)。对照 b(y)exp(ηT(y)a(η))b(y)\exp(\eta T(y)-a(\eta))η=logϕ1ϕ\eta=\log\frac{\phi}{1-\phi}(logit),T(y)=yT(y)=ya(η)=log(1ϕ)a(\eta)=-\log(1-\phi)(用 ϕ=σ(η)\phi=\sigma(\eta) 还可以写成 a(η)=log(1+eη)a(\eta)=\log(1+e^\eta)),b(y)=1b(y)=1

Q3. 泊松回归的规范链接是什么?为什么预测转发次数要用泊松回归而不是线性回归?

规范链接是对数 η=logλ\eta=\log\lambda,逆函数 λ=eη\lambda=e^\eta 保证到达率恒正。转发次数是非负整数且常呈右偏分布,方差往往随均值增大——泊松分布正好匹配这些特征;线性回归可能预测出负数,且其常数方差的假设也不符。

Q4.(大厂面试题) 请说明 GLM 中"对数配分函数 a(η)a(\eta) 的导数等于均值的充分统计量",即 dadη=E[T(Y)]\frac{da}{d\eta}=\mathbb E[T(Y)],为什么成立,并解释它对训练的意义。

因为 p(y;η)dy=1\int p(y;\eta)dy=1,两边对 η\eta 求导:0=η[b(y)eηT(y)a(η)]dy=p(T(y)a(η))dy=E[T(Y)]a(η)0=\int\frac{\partial}{\partial\eta}[b(y)e^{\eta T(y)-a(\eta)}]dy=\int p\,(T(y)-a'(\eta))dy=\mathbb E[T(Y)]-a'(\eta),所以 a(η)=E[T(Y)]a'(\eta)=\mathbb E[T(Y)]。对大多数分布 T(y)=yT(y)=y,于是 a(η)=μa'(\eta)=\mu。训练上,它让负对数似然对 η\eta 的梯度变成简洁的 μy\mu-y,所有 GLM 梯度形式统一,也支撑了 IRLS 把每步更新化成加权最小二乘——这是 GLM 可用牛顿法高效求解的数学根基。

8.小结

这一节我们从"sigmoid 凭什么"出发,一路推出了 GLM。三句话记住它:标签服从指数族分布,预测子是线性的,均值通过规范链接由预测子决定。换分布就自动换链接、换输出、换任务——线性回归、逻辑回归、泊松回归、Softmax,都是这套框架的特例。

下一节我们要换个工具箱,去看看怎么度量样本之间的"距离",K 近邻和聚类都指望它。到时见。

相关标签
机器学习广义线性模型回归