广义线性模型与指数分布族

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Flying_sfeng/article/details/78009129

在机器学习领域,很多模型都是属于广义线性模型(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((yu)22σ2)12πexp((yu)22)12πexp(12y2)exp(uy12u2)

因此:
b(y)ηT(y)a(η)====12πexp(12y2)uy12u2=12η2

由以上分析,我们可以得到结论:高斯分布属于指数分布族的一类。

证明伯努利分布属于指数分布族:

p(y;ϕ)===ϕy(1ϕ)1yexp(ylogϕ+(1y)log(1ϕ))exp(ylogϕ1ϕ+log(1ϕ))

因此:
b(y)ηT(y)a(η)====1logϕ1ϕylog(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]=1p(y=1|x;θ)+0p(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=1k1i=1ϕi
我们定义 T(y)ϵRk1 为以下表达式:

T(1)=1000,T(2)=0100,T(3)=0010,...,T(k1)=0001,T(k)=0000

我们可以看到, T(y) 是一个 k1 维的向量,而不是一个实数。我们定义 (T(y))i T(y) 的第 i 个元素。
为了方便表示,我们使用 1{.} 作为指示性函数,当括号里的值为真时, 1{.}=1 ,否则 1{.}=0 。比如: 1{2=3}=0 1{3=41}=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...ϕ1k1i=11{y=i}kϕ(T(y))11ϕ(T(y))22...ϕ1k1i=1(T(y))ikexp((T(y))1logϕ1+(T(y))2logϕ2+...+(1i=1k1(T(y))i)logϕk)exp((T(y))1logϕ1ϕk+(T(y))2logϕ2ϕk+...+(T(y))k1logϕk1ϕk+logϕk)

因此:
b(y)ηT(y)a(η)====1logϕ1ϕklogϕ2ϕklogϕ1ϕk(T(y))1(T(y))2(T(y))k1log(ϕk)

由以上分析可得到,多项式分布属于指数分布族的一类。
而且,对于类别i,有 ηi=logϕiϕk ,所以, ϕi=ϕkeηi ,累加所有类别的概率为1,即: ki=1ϕi=ki=1ϕkeηi=1 ,所以 ϕk=1ki=1eηi ,因此 ϕi=eηikj=1eηj ,这便是softmax函数。
预测输出值
hθ(x)====E[y|x]1{y=1}|x;θ1{y=2}|x;θ1{y=k1}|x;θϕ1ϕ2ϕk1exp(θT1x)kj=1exp(θTjx)exp(θT2x)kj=1exp(θTjx)exp(θTk1x)kj=1exp(θTjx)

输出值为每个类别的概率,且 p(y=k|x;θ)=1k1i=1p(y=i|x;θ)
接下来,我们开看一下参数的优化:
对数似然函数:
l(θ)======logi=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}ki=1m1{y(i)=1}log ϕ1+1{y(i)=2}log ϕ2+...+1{y(i)=k}log ϕki=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)logj=1keθTjx)

对类别l的参数求导:
l(θ)θj==i=1m(1{y(i)=l}x(i)1kj=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(θTk1x)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回归查看详细内容)
Softmax回归模型参数化的特点
权重衰减

猜你喜欢

转载自blog.csdn.net/Flying_sfeng/article/details/78009129