版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Flying_sfeng/article/details/78009129
在机器学习领域,很多模型都是属于广义线性模型(Generalized Linear Model,GLM),如线性回归,逻辑回归,Softmax回归等。这篇文章广义线性模型,并由它推导出线性回归,逻辑回归,Softmax回归的表达式。 广义线性模型是基于指数分布族的,所以我们先来看一下指数分布族的一般形式:
p ( y ; η ) = b ( y ) e x p ( η T T ( y ) − a ( η ) )
其中,
η
为自然参数,
T ( y )
为充分统计量(一般情况下,如高斯分布和伯努利分布中,
T ( y ) = y
);
a ( η )
为累积量函数;在一般情况下,
η
为实数(多项式分布中
η
为向量)。给定
T , a , b ,
通过参数
η
,我们可以得到指数分布族中的各类分布。
证明高斯分布属于指数分布族: 因为方差
σ 2
项对我们最终求
θ
和
h θ ( x )
没有影响,因此为了简化计算,我们令
σ = 1
.
p ( y ; u ) = = = 1 2 π − − √ σ e x p ( − ( y − u ) 2 2 σ 2 ) 1 2 π − − √ e x p ( − ( y − u ) 2 2 ) 1 2 π − − √ e x p ( − 1 2 y 2 ) ∗ e x p ( u y − 1 2 u 2 )
因此:
b ( y ) η T ( y ) a ( η ) = = = = 1 2 π − − √ e x p ( − 1 2 y 2 ) u y 1 2 u 2 = 1 2 η 2
由以上分析,我们可以得到结论:高斯分布属于指数分布族的一类。
证明伯努利分布属于指数分布族:
p ( y ; ϕ ) = = = ϕ y ( 1 − ϕ ) 1 − y e x p ( y l o g ϕ + ( 1 − y ) l o g ( 1 − ϕ ) ) e x p ( y l o g ϕ 1 − ϕ + l o g ( 1 − ϕ ) )
因此:
b ( y ) η T ( y ) a ( η ) = = = = 1 l o g ϕ 1 − ϕ y − l o g ( 1 − ϕ ) = l o g ( e η + 1 )
由以上分析,我们可以得到结论:伯努利分布属于指数分布族的一类。
同时,由
η = l o g ϕ 1 − ϕ
可以得到
ϕ = 1 1 + 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
线性相关,即
η = θ T x
(当
η
为变量时,
η i = θ T i x
)
个人总结:若模型的分布属于指数分布族,那么该模型可以由广义线性模型推导出来。
由广义线性模型推导出线性回归: 我们知道,在线性回归中,
y | x ; θ − N ( μ , σ 2 )
,即输出
y
满足均值为
μ
的高斯分布;由广义线性模型得到:
h θ ( x ) = = = = E [ y | x ] μ η θ T x
其中,第一个等式由假设2得到,第二个等式是高斯分布的数学期望,第三个等式由假设1得到,即由高斯分布属于指数分布族推导出来,第四个等式由假设3得到。
由广义线性模型推导出逻辑回归: 我们知道,在逻辑回归中,
y | x ; θ − B e r n o u l l i ( ϕ )
,其中
ϕ = p ( y = 1 | x ; θ )
,即输出
y
满足伯努利分布;由广义线性模型得到:
h θ ( x ) = = = = = E [ y | x ] p ( y = 1 | x ; θ ) ϕ 1 1 + e − η 1 1 + e − θ T x
其中,第一个等式由假设2得到,第二个等式是高斯分布的数学期望,第三个等式是我们的定义,第四个等式由假设1得到,即由伯努利分布属于指数分布族推导出来,第五个等式由假设3得到。
由广义线性模型推导出多项式回归: Softmax回归本质上是一个多分类问题。假设输出
y
有k类,即
y ϵ [ 1 , 2 , . . . , k ] .
我们对多项式回归输出的k个可能值参数化:
ϕ 1 , ϕ 2 , . . . , ϕ k
,表示每个输出值的概率大小。当然,因为概率和为1,所以这么多个参数是冗余的,即其中一个参数可以由其他所有参数推导出来,比如
ϕ k = 1 − ∑ k − 1 i = 1 ϕ i
我们定义
T ( y ) ϵ R k − 1
为以下表达式:
T ( 1 ) = ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 1 0 0 ⋮ 0 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ , T ( 2 ) = ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 0 1 0 ⋮ 0 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ , T ( 3 ) = ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 0 0 1 ⋮ 0 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ , . . . , T ( k − 1 ) = ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 0 0 0 ⋮ 1 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ , T ( k ) = ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 0 0 0 ⋮ 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 − 1 i = 1 1 { y = i } k ϕ ( T ( y ) ) 1 1 ϕ ( T ( y ) ) 2 2 . . . ϕ 1 − ∑ k − 1 i = 1 ( T ( y ) ) i k e x p ( ( T ( y ) ) 1 l o g ϕ 1 + ( T ( y ) ) 2 l o g ϕ 2 + . . . + ( 1 − ∑ i = 1 k − 1 ( T ( y ) ) i ) l o g ϕ k ) e x p ( ( T ( y ) ) 1 l o g ϕ 1 ϕ k + ( T ( y ) ) 2 l o g ϕ 2 ϕ k + . . . + ( T ( y ) ) k − 1 l o g ϕ k − 1 ϕ k + l o g ϕ k )
因此:
b ( y ) η T ( y ) a ( η ) = = = = 1 ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ l o g ϕ 1 ϕ k l o g ϕ 2 ϕ k ⋮ l o g ϕ 1 ϕ k ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ( T ( y ) ) 1 ( T ( y ) ) 2 ⋮ ( T ( y ) ) k − 1 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ − l o g ( ϕ k )
由以上分析可得到,多项式分布属于指数分布族的一类。
而且,对于类别i,有
η i = l o g ϕ i ϕ k
,所以,
ϕ i = ϕ k e η i
,累加所有类别的概率为1,即:
∑ k i = 1 ϕ i = ∑ k i = 1 ϕ k e η i = 1
,所以
ϕ k = 1 ∑ k i = 1 e η i
,因此
ϕ i = e η i ∑ k j = 1 e η j
,这便是softmax函数。
预测输出值
h θ ( x ) = = = = E [ y | x ] ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ 1 { y = 1 } | x ; θ 1 { y = 2 } | x ; θ ⋮ 1 { y = k − 1 } | x ; θ ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ϕ 1 ϕ 2 ⋮ ϕ k − 1 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ e x p ( θ T 1 x ) ∑ k j = 1 e x p ( θ T j x ) e x p ( θ T 2 x ) ∑ k j = 1 e x p ( θ T j x ) ⋮ e x p ( θ T k − 1 x ) ∑ k j = 1 e x p ( θ T j x ) ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥
输出值为每个类别的概率,且
p ( y = k | x ; θ ) = 1 − ∑ k − 1 i = 1 p ( y = i | x ; θ )
接下来,我们开看一下参数的优化:
对数似然函数:
l ( θ ) = = = = = = l o g ∏ i = 1 m p ( y ( i ) | x ( i ) ; θ ) ∑ i = 1 m l o g p ( y ( i ) | x ( i ) ; θ ) ∑ i = 1 m l o g ϕ 1 { y ( i ) = 1 } 1 ϕ 1 { y ( i ) = 2 } 2 . . . ϕ 1 { y ( i ) = k } k ∑ i = 1 m 1 { y ( i ) = 1 } l o g ϕ 1 + 1 { y ( i ) = 2 } l o g ϕ 2 + . . . + 1 { y ( i ) = k } l o g ϕ k ∑ i = 1 m 1 { y ( i ) = 1 } l o g e x p ( θ T 1 x ( i ) ) ∑ k j = 1 e x p ( θ T j x ( i ) ) + 1 { y ( i ) = 2 } l o g e x p ( θ T 2 x ( i ) ) ∑ k j = 1 e x p ( θ T j x ( i ) ) + . . . + 1 { y ( i ) = k } l o g e x p ( θ T k x ( i ) ) ∑ k j = 1 e x p ( θ T j x ( i ) ) ∑ i = 1 m ( 1 { y ( i ) = 1 } l o g e θ T 1 x ( i ) + 1 { y ( i ) = 2 } l o g e θ T 2 x ( i ) + . . . + 1 { y ( i ) = k } l o g e θ T k x ( i ) − l o g ∑ j = 1 k e θ T j x )
对类别l的参数求导:
∂ l ( θ ) ∂ θ j = = ∑ i = 1 m ( 1 { y ( i ) = l } ∗ x ( i ) − 1 ∑ k j = 1 e x p ( θ T j x ( i ) ) ∗ e x p ( θ T l x ) ∗ x ( i ) ) ∑ i = 1 m ( 1 { y ( i ) = l } ∗ x ( i ) − p ( y ( i ) = l | x ( i ) ; θ ) ∗ x ( i ) )
注意:
∂ l ( θ ) ∂ θ j
只是针对一个类别所做的偏导,我们还需要继续对类别的每个参数做偏导,最后对所有类别执行相同求导操作,这样才算完整地完成参数优化的一次迭代。接着,使用梯度上升法不断迭代,直到收敛。
最后,我们的预测输出值的表达式如下:
h θ ( x ) = ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ e x p ( θ T 1 x ) ∑ k j = 1 e x p ( θ T j x ) e x p ( θ T 2 x ) ∑ k j = 1 e x p ( θ T j x ) ⋮ e x p ( θ T k − 1 x ) ∑ k j = 1 e x p ( θ T j x ) ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥
取
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回归 查看详细内容)