本文基于「指数分布族」的理论,以「Logistic回归」为例,讲解推广线性模型的过程。
如果你还不了解指数分布族,请看:指数分布族
本文的md源码地址:AnBlogs
先讲解Logistc预测使用的概率模型「伯努利分布」,并把它写成「指数族分布」的形式,再看看预测是如何操作的。
如果你还不了解Logistic回归,请看:Logistic回归
「Logistic回归」解决一个二分类问题,二分类问题就是求对象分到某个类的概率,用伯努利分布描述。
p ( y ∣ μ ) = μ y ( 1 − μ ) 1 − y p(y|\mu)=\mu^{y}(1-\mu)^{1-y} p(y∣μ)=μy(1−μ)1−y
以上形式就是在说 p ( y = 1 ∣ μ ) = μ p(y=1|\mu)=\mu p(y=1∣μ)=μ,只是把 y = 0 , y = 1 y=0,y=1 y=0,y=1的情况融合在一起。
这里需要使用一点术语, μ \mu μ称为均值参数,意在它表达了分布的均值,或者可以直接叫做参数。
伯努利分布写成指数族分布形式如下:
p ( y ∣ μ ) = ( 1 − μ ) exp ( y ln μ 1 − μ ) , 1 Z = 1 − μ , ϕ ( y ) = y , θ = ln μ 1 − μ p(y|\mu)=(1-\mu)\exp(y\ln\frac{\mu}{1-\mu}),\frac{1}{Z}=1-\mu,\phi(y)=y,\theta=\ln\frac{\mu}{1-\mu} p(y∣μ)=(1−μ)exp(yln1−μμ),Z1=1−μ,ϕ(y)=y,θ=ln1−μμ
如果你对这个结论不了解,请看:指数分布族
这里给出了 μ → θ \mu\rightarrow\theta μ→θ的映射,称为 Ψ \Psi Ψ,也就是 θ = Ψ ( μ ) \theta=\Psi(\mu) θ=Ψ(μ)。这个映射是从原始参数到自然参数的映射。这里说「原始参数」是为了和「自然参数」相区分。
这个映射是可逆的,是Sigmoid函数:
μ = 1 1 + e − θ = A ′ ( θ ) , Ψ − 1 ( θ ) = s i g m ( θ ) \mu=\frac{1}{1+e^{-\theta}}=A'(\theta),\Psi^{-1}(\theta)=sigm(\theta) μ=1+e−θ1=A′(θ),Ψ−1(θ)=sigm(θ)
最终的指数族分布形式为:
p ( y ∣ μ ) = exp ( y θ − A ( θ ) ) , A ( θ ) = ln ( 1 + e θ ) p(y|\mu)=\exp(y\theta-A(\theta)),A(\theta)=\ln(1+e^\theta) p(y∣μ)=exp(yθ−A(θ)),A(θ)=ln(1+eθ)
我们通常通过 w T x w^Tx wTx的值估计目标 y y y分布的参数,进而求得分布。
比如在线性回归中, w T x w^Tx wTx直接确定了目标 y y y的均值,把方差当作常数,则目标 y y y的分布就确定了。在Logistic回归中, w T x w^Tx wTx的值带入Sigmoid函数,得到分布的参数 μ \mu μ。它们都是在建立「目标的分布的原始参数」和「特征的线性组合」之间的映射,这样的映射就是「连接函数」。
如果你还记得的话,Logistic回归的映射是这样的:
ln μ 1 − μ = θ = w T x \ln\frac{\mu}{1-\mu}=\theta=w^Tx ln1−μμ=θ=wTx
计作:
w T x = g ( μ ) = ln μ 1 − μ w^Tx=g(\mu)=\ln\frac{\mu}{1-\mu} wTx=g(μ)=ln1−μμ
这样写可能比较陌生,写出反函数你肯定知道了:
μ = g − 1 ( w T x ) = 1 1 + exp ( − w T x ) \mu=g^{-1}(w^Tx)=\frac{1}{1+\exp(-w^Tx)} μ=g−1(wTx)=1+exp(−wTx)1
这就是我们熟悉的Logistic回归!
选择这个 g g g,而不选择别的 g g g的原因,在于可以极大地简化指数族分布的形式:
θ = Ψ ( μ ) = Ψ ( g − 1 ( w T x ) ) = w T x ⇒ p ( y ∣ x , w ) = exp ( y ⋅ w T x − A ( w T x ) ) \theta=\Psi(\mu)=\Psi(g^{-1}(w^Tx))=w^Tx\Rightarrow p(y|x,w)=\exp(y\cdot w^Tx-A(w^Tx)) θ=Ψ(μ)=Ψ(g−1(wTx))=wTx⇒p(y∣x,w)=exp(y⋅wTx−A(wTx))
这样选择映射使得 y ⋅ w T x y\cdot w^Tx y⋅wTx形式出现,让问题变得简单。
对于其它的模型也是如此。我们适当选择「连接函数」,建立特征的线性组合和原始参数之间的映射,并且让这个映射尽量简化问题。如选择使得 θ = w T x \theta=w^Tx θ=wTx的连接函数,可以使得 y ⋅ w T x y\cdot w^Tx y⋅wTx出现,这样的连接函数和「原始参数」到「自然参数」的映射 Ψ \Psi Ψ具有相同形式。也可以选择更简洁的 μ = w T x \mu=w^Tx μ=wTx,具体视问题本身而定。
把以上结论推广到一般情况,操作其实非常固定。
「连接函数」是「均值参数」 μ \mu μ和「特征的线性组合」之间的映射。刚刚说的是「原始参数」,而不是「均值参数」。现在改口的原因有这些:
这个映射通常用 g g g表示,「正映射」规定为从「均值参数」到「特征的线性组合」,「逆映射」规定为从「特征的线性组合」到「均值参数」。
「均值参数」就是表达均值的参数(废话)。常用的分布都有「均值参数」,你可以随意回顾一下伯努利分布、正态分布、泊松分布,等等,以这些分布建立起来的模型可以很方便地选取连接函数。有些分布好像没有均值参数,如二项分布,他们其实是由更简单的分布建立起来的「二级结论」,如二项分布是由伯努利分布推出来的。
到这里,你应该明白,所谓「广义线性模型」,就是用「特征的线性组合」,通过「连接函数」,预测一个符合「指数族分布」的目标变量。
General Linear Model = Link Funtion + Exponential Family Distribution
特征的线性组合用 η \eta η表示:
η = w T x \eta=w^Tx η=wTx
连接函数则这样表示:
w T x = η = g ( μ ) w^Tx=\eta=g(\mu) wTx=η=g(μ)
「逆映射」 g − 1 g^{-1} g−1也叫「均值函数」(Mean Function),意味着函数的返回值是个「均值」。
μ = g − 1 ( η ) \mu=g^{-1}(\eta) μ=g−1(η)
对于Logistic回归,连接函数这样表示:
g ( μ ) = ln μ 1 − μ , g − 1 ( η ) = 1 1 + exp ( − η ) g(\mu)=\ln\frac{\mu}{1-\mu},g^{-1}(\eta)=\frac{1}{1+\exp(-\eta)} g(μ)=ln1−μμ,g−1(η)=1+exp(−η)1
选择以「简单」为首要考虑。在Logistc回归中,选择的连接函数令指数族形式中出现了 y ⋅ w T x y\cdot w^Tx y⋅wTx,没有 ln \ln ln等复杂的东西出现,这就是一个很好的选择。这样的选择在计算「梯度」和「海塞矩阵」的时候可以提供巨大方便,同时还可以完美地完成任务。
以上例子的均值参数 μ \mu μ都是「一个」数,一个常见的问题便是「均值参数是向量怎么办?」或者是「是多变量分布怎么办?」。这样的问题通常不会出现,因为传统机器学习预测问题只涉及「一个」预测,即便有多个预测, 也可以拆分成多个模型来处理。只有「一个」预测,也就只有「一个」均值参数啦!
这里以线性回归再举个例子。
如果你还不了解线性回归,请看:线性回归
线性回归预测的目标是连续取值的,故假定服从正态分布:
p ( y ∣ μ ) = 1 2 π σ 2 exp ( ( y − μ ) 2 2 σ 2 ) p(y|\mu)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp(\frac{(y-\mu)^2}{2\sigma^2}) p(y∣μ)=2πσ21exp(2σ2(y−μ)2)
写成指数族分布形式:
p ( y ∣ μ ) = 1 2 π σ 2 exp ( 1 σ 2 ( − 1 2 y 2 + μ y − 1 2 μ 2 ) ) p(y|\mu)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp(\frac{1}{\sigma^2}(-\frac{1}{2}y^2+\mu y-\frac{1}{2}\mu^2)) p(y∣μ)=2πσ21exp(σ21(−21y2+μy−21μ2))
各个成员:
θ = [ μ σ 2 , − 1 2 σ 2 ] , ϕ ( x ) = [ x , x 2 ] , A ( θ ) = 1 2 σ 2 μ 2 + 1 2 ln 2 π σ 2 \theta=[\frac{\mu}{\sigma^2},-\frac{1}{2\sigma^2}],\phi(x)=[x,x^2],A(\theta)=\frac{1}{2\sigma^2}\mu^2+\frac{1}{2}\ln2\pi\sigma^2 θ=[σ2μ,−2σ21],ϕ(x)=[x,x2],A(θ)=2σ21μ2+21ln2πσ2
选择「简单」的连接函数:
μ = g − 1 ( η ) = η \mu=g^{-1}(\eta)=\eta μ=g−1(η)=η
带入原来的模型,得到的就是我们熟悉的L2回归!
广义线性模型的优势之一,就是可以采用几乎相同的最大似然估计/最大后验估计。我们在指数族分布中已经计算过了指数族分布的最大似然估计和最大后验估计,请看:指数族分布
对于一行数据 x ( i ) , y ( i ) x^{(i)},y^{(i)} x(i),y(i),对应的似然的对数:
l ( i ) = ln p ( x ( i ) , y ( i ) ∣ w ) = θ ( i ) y ( i ) − A ( θ ( i ) ) l^{(i)}=\ln p(x^{(i)},y^{(i)}|w)=\theta^{(i)}y^{(i)}-A(\theta^{(i)}) l(i)=lnp(x(i),y(i)∣w)=θ(i)y(i)−A(θ(i))
如此简洁的形式,就是指数族分布的威力!
总的似然:
l ( w ) = ln ∏ i p ( x ( i ) , y ( i ) ∣ w ) = ∑ i l ( i ) l(w)=\ln\prod_ip(x^{(i)},y^{(i)}|w)=\sum_il^{(i)} l(w)=lni∏p(x(i),y(i)∣w)=i∑l(i)
采用习惯的上下标表达方式,上标表示行索引,下表表示列索引。如 w j w_j wj表示对应第 j j j个特征的线性组合的系数, η ( i ) \eta^{(i)} η(i)表示输入第 i i i行数据 x ( i ) x^{(i)} x(i)得到的 η ( i ) = w T x ( i ) \eta^{(i)}=w^Tx^{(i)} η(i)=wTx(i)的值,其它同理。
d l ( i ) d w j = d l ( i ) d θ ( i ) d θ ( i ) d μ ( i ) d μ ( i ) d η ( i ) d η ( i ) d w ( i ) = ( y ( i ) − μ ( i ) ) d θ ( i ) d μ ( i ) d μ ( i ) d η ( i ) x j ( i ) \frac{dl^{(i)}}{dw_j}=\frac{dl^{(i)}}{d\theta^{(i)}}\frac{d\theta^{(i)}}{d\mu^{(i)}}\frac{d\mu^{(i)}}{d\eta^{(i)}}\frac{d\eta^{(i)}}{dw^{(i)}}=(y^{(i)}-\mu^{(i)})\frac{d\theta^{(i)}}{d\mu^{(i)}}\frac{d\mu^{(i)}}{d\eta^{(i)}}x^{(i)}_j dwjdl(i)=dθ(i)dl(i)dμ(i)dθ(i)dη(i)dμ(i)dw(i)dη(i)=(y(i)−μ(i))dμ(i)dθ(i)dη(i)dμ(i)xj(i)
使用Cannonical连接函数 η = θ \eta=\theta η=θ,以上结论变为:
d l ( i ) d w j = ( y ( i ) − μ ( i ) ) x j ( i ) \frac{dl^{(i)}}{dw_j}=(y^{(i)}-\mu^{(i)})x^{(i)}_j dwjdl(i)=(y(i)−μ(i))xj(i)
正是Logisitc回归的结论!
这里不知如何翻译Cannonical,字面含义大概是「符合简单规则的、符合通行规则的」。经典力学中有Cannonical Form,翻译为「正则」。在此大概是「简单、显然」之类的意思,这个连接函数确实是最简单的一种形式。