在机器学习领域,很多模型都是属于广义线性模型(Generalized Linear Model,GLM),如线性回归,逻辑回归,Softmax回归等。这篇文章广义线性模型,并由它推导出线性回归,逻辑回归,Softmax回归的表达式。
广义线性模型是基于指数分布族的,所以我们先来看一下指数分布族的一般形式:
p(y;η)=b(y)exp(ηTT(y)−a(η))
其中,η 为自然参数,T(y) 为充分统计量(一般情况下,如高斯分布和伯努利分布中,T(y)=y);a(η) 为累积量函数;在一般情况下,η 为实数(多项式分布中η 为向量)。给定T,a,b, 通过参数η,我们可以得到指数分布族中的各类分布。
证明高斯分布属于指数分布族:
因为方差σ2项对我们最终求θ 和 hθ(x) 没有影响,因此为了简化计算,我们令σ=1.
p(y;u)===12π−−√σexp(−(y−u)22σ2)12π−−√exp(−(y−u)22)12π−−√exp(−12y2)∗exp(uy−12u2)
因此:
b(y)ηT(y)a(η)====12π−−√exp(−12y2)uy12u2=12η2
由以上分析,我们可以得到结论:高斯分布属于指数分布族的一类。
证明伯努利分布属于指数分布族:
p(y;ϕ)===ϕy(1−ϕ)1−yexp(ylogϕ+(1−y)log(1−ϕ))exp(ylogϕ1−ϕ+log(1−ϕ))
因此:
b(y)ηT(y)a(η)====1logϕ1−ϕy−log(1−ϕ)=log(eη+1)
由以上分析,我们可以得到结论:伯努利分布属于指数分布族的一类。
同时,由η=logϕ1−ϕ 可以得到ϕ=11+e−η ,这就是我们熟悉的sigmoid函数。
为了推导广义线性模型,我们先做以下三个假设:
1. 给定x,θ, 输出y 满足参数为η 的指数族分布
2. h(x)=E[y|x] (线性回归和逻辑回归都满足该式子,例如逻辑回归中,h(x)=p(y=1|x;θ) ,数学期望E[y|x]=1∗p(y=1|x;θ)+0∗p(y=0|x;θ) ,因此h(x)=E[y|x])
3. 自然参数η 与输入特征变量x 线性相关,即η=θTx (当η 为变量时,ηi=θTix )
个人总结:若模型的分布属于指数分布族,那么该模型可以由广义线性模型推导出来。
由广义线性模型推导出线性回归:
我们知道,在线性回归中,y|x;θ−N(μ,σ2) ,即输出y 满足均值为μ 的高斯分布;由广义线性模型得到:
hθ(x)====E[y|x]μηθTx
其中,第一个等式由假设2得到,第二个等式是高斯分布的数学期望,第三个等式由假设1得到,即由高斯分布属于指数分布族推导出来,第四个等式由假设3得到。
由广义线性模型推导出逻辑回归:
我们知道,在逻辑回归中,y|x;θ−Bernoulli(ϕ) ,其中ϕ=p(y=1|x;θ) ,即输出y 满足伯努利分布;由广义线性模型得到:
hθ(x)=====E[y|x]p(y=1|x;θ)ϕ11+e−η11+e−θTx
其中,第一个等式由假设2得到,第二个等式是高斯分布的数学期望,第三个等式是我们的定义,第四个等式由假设1得到,即由伯努利分布属于指数分布族推导出来,第五个等式由假设3得到。
由广义线性模型推导出多项式回归:
Softmax回归本质上是一个多分类问题。假设输出y 有k类,即yϵ[1,2,...,k].
我们对多项式回归输出的k个可能值参数化:ϕ1,ϕ2,...,ϕk ,表示每个输出值的概率大小。当然,因为概率和为1,所以这么多个参数是冗余的,即其中一个参数可以由其他所有参数推导出来,比如ϕk=1−∑k−1i=1ϕi
我们定义T(y)ϵRk−1 为以下表达式:
T(1)=⎡⎣⎢⎢⎢⎢⎢⎢⎢100⋮0⎤⎦⎥⎥⎥⎥⎥⎥⎥,T(2)=⎡⎣⎢⎢⎢⎢⎢⎢⎢010⋮0⎤⎦⎥⎥⎥⎥⎥⎥⎥,T(3)=⎡⎣⎢⎢⎢⎢⎢⎢⎢001⋮0⎤⎦⎥⎥⎥⎥⎥⎥⎥,...,T(k−1)=⎡⎣⎢⎢⎢⎢⎢⎢⎢000⋮1⎤⎦⎥⎥⎥⎥⎥⎥⎥,T(k)=⎡⎣⎢⎢⎢⎢⎢⎢⎢000⋮0⎤⎦⎥⎥⎥⎥⎥⎥⎥
我们可以看到,T(y) 是一个k−1 维的向量,而不是一个实数。我们定义(T(y))i 为T(y) 的第i 个元素。
为了方便表示,我们使用1{.} 作为指示性函数,当括号里的值为真时,1{.}=1 ,否则1{.}=0 。比如:1{2=3}=0 ,1{3=4−1}=1。根据以上定义,我们可以得到下式:(T(y))i=1{y=i} ,且E[(T(y))i]=p(y=i)=ϕi.
多项式分布:
p(y|x;θ)=====ϕ1{y=1}1ϕ1{y=2}2...ϕ1{y=k}kϕ1{y=1}1ϕ1{y=2}2...ϕ1−∑k−1i=11{y=i}kϕ(T(y))11ϕ(T(y))22...ϕ1−∑k−1i=1(T(y))ikexp((T(y))1logϕ1+(T(y))2logϕ2+...+(1−∑i=1k−1(T(y))i)logϕk)exp((T(y))1logϕ1ϕk+(T(y))2logϕ2ϕk+...+(T(y))k−1logϕk−1ϕk+logϕk)
因此:
b(y)ηT(y)a(η)====1⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢logϕ1ϕklogϕ2ϕk⋮logϕ1ϕk⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢(T(y))1(T(y))2⋮(T(y))k−1⎤⎦⎥⎥⎥⎥⎥−log(ϕk)
由以上分析可得到,多项式分布属于指数分布族的一类。
而且,对于类别i,有ηi=logϕiϕk ,所以,ϕi=ϕkeηi ,累加所有类别的概率为1,即:∑ki=1ϕi=∑ki=1ϕkeηi=1 ,所以ϕk=1∑ki=1eηi ,因此ϕi=eηi∑kj=1eηj ,这便是softmax函数。
预测输出值
hθ(x)====E[y|x]⎡⎣⎢⎢⎢⎢⎢1{y=1}|x;θ1{y=2}|x;θ⋮1{y=k−1}|x;θ⎤⎦⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢ϕ1ϕ2⋮ϕk−1⎤⎦⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢exp(θT1x)∑kj=1exp(θTjx)exp(θT2x)∑kj=1exp(θTjx)⋮exp(θTk−1x)∑kj=1exp(θTjx)⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
输出值为每个类别的概率,且p(y=k|x;θ)=1−∑k−1i=1p(y=i|x;θ)
接下来,我们开看一下参数的优化:
对数似然函数:
l(θ)======log∏i=1mp(y(i)|x(i);θ)∑i=1mlog p(y(i)|x(i);θ)∑i=1mlog ϕ1{y(i)=1}1ϕ1{y(i)=2}2...ϕ1{y(i)=k}k∑i=1m1{y(i)=1}log ϕ1+1{y(i)=2}log ϕ2+...+1{y(i)=k}log ϕk∑i=1m1{y(i)=1}log exp(θT1x(i))∑kj=1exp(θTjx(i))+1{y(i)=2}log exp(θT2x(i))∑kj=1exp(θTjx(i))+...+1{y(i)=k}log exp(θTkx(i))∑kj=1exp(θTjx(i))∑i=1m(1{y(i)=1}log eθT1x(i)+1{y(i)=2}log eθT2x(i)+...+1{y(i)=k}log eθTkx(i)−log∑j=1keθTjx)
对类别l的参数求导:
∂l(θ)∂θj==∑i=1m(1{y(i)=l}∗x(i)−1∑kj=1exp(θTjx(i))∗exp(θTlx)∗x(i))∑i=1m(1{y(i)=l}∗x(i)−p(y(i)=l|x(i);θ)∗x(i))
注意:∂l(θ)∂θj 只是针对一个类别所做的偏导,我们还需要继续对类别的每个参数做偏导,最后对所有类别执行相同求导操作,这样才算完整地完成参数优化的一次迭代。接着,使用梯度上升法不断迭代,直到收敛。
最后,我们的预测输出值的表达式如下:
hθ(x)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢exp(θT1x)∑kj=1exp(θTjx)exp(θT2x)∑kj=1exp(θTjx)⋮exp(θTk−1x)∑kj=1exp(θTjx)⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
取hθ(x) 中概率最大的那一项作为输出值。例如:假设预测样本预测值为hθ(x)=[0.1,0,0.05,0.6,0.05,0.05,0.1,0.05,0,0] ,那么该测试样本被判定为4.
值得注意的是,softmax函数存在参数冗余的问题,因此优化得到的最优参数不是唯一的。我自己在搭建卷积神经网络,使用softmax函数时就出现这个问题,导致得不到想要的结果。解决方法是在损失函数处添加权重衰减项。(具体的我就不自己写了,码了这么多公式实在不想再写了。当一回伸手党,直接贴图。有兴趣的同学可以到 Softmax回归查看详细内容)
