参考资料:
The equivalence of logistic regression and maximum entropymodels
从最大熵模型解释逻辑回归
最大熵模型原理小结——刘建平
1 前言
早期的博客中写过一篇逻辑回归的介绍,这篇博文中对逻辑回归的“输入为何能代表概率“这个问题做了浅层的探讨,但碍于当年太过年轻,对问题理解不够深刻,这次回过头来把这个问题重新梳理一遍。
这个问题还可以换种问法,那就是——逻辑回归sigmoid函数的形式到底是怎么来的。先说结论,逻辑回归的形式其实存在一个起源,并不是因为sigmoid函数本身的性质好就想当然套在了 ω x + b \omega x+b ωx+b上。通过最大熵模型的优化思路,可以从零到有的推导出逻辑回归的形式。而最大熵模型本身就是在对后验概率建模,所以逻辑回归的输出自然也可以代表概率。
综上,两点思路:
- 最大熵模型本身在对后验概率建模
- 根据最大熵模型的优化思路,可以推导出逻辑回归的形式
针对第一点,推荐一篇介绍最大熵模型的博客,写得非常不错,强烈建议学懂最大熵之后再看本文,否则会引起不适;第二点则是本文探讨的重点。
ok,let’s do it !
逻辑回归正向推导出的一个事实
这里对逻辑回归的基本原理不做赘述,不了解的朋友可以看我以前的博客。逻辑回归的基本形式可以表示为以下公式:
π
(
x
)
1
=
e
λ
⋅
x
e
λ
⋅
x
+
1
π
(
x
)
2
=
1
−
π
(
x
)
1
\begin{aligned} \pi(x)_{1} &=\frac{e^{\lambda \cdot x}}{e^{\lambda \cdot x}+1} \\ \pi(x)_{2} &=1-\pi(x)_{1} \end{aligned}
π(x)1π(x)2=eλ⋅x+1eλ⋅x=1−π(x)1 其中1、2代表二分类两种类别,
π
\pi
π代表计算概率的函数。我们可以将两个类别的形式统一,写成类似softmax的形式:
π
(
x
)
v
=
e
λ
v
⋅
x
∑
u
=
1
k
e
λ
u
⋅
x
\pi(x)_{v}=\frac{e^{\lambda_{v} \cdot x}}{\sum_{u=1}^{k} e^{\lambda_{u} \cdot x}}
π(x)v=∑u=1keλu⋅xeλv⋅x 其中
v
v
v表示当前类别,
k
k
k表示类别的总数,在二分类中为2。
逻辑回归的似然方程可以理解为极大化预测出正确类别的概率,即:
∏
i
=
1
m
π
(
x
(
i
)
)
y
(
i
)
\prod_{i=1}^{m} \pi(x(i))_{y(i)}
i=1∏mπ(x(i))y(i) 其中
m
m
m为样本总量,
y
(
i
)
y(i)
y(i)为第
i
i
i个样本的真实标签,
π
(
x
(
i
)
)
y
(
i
)
\pi(x(i))_{y(i)}
π(x(i))y(i)为将第
i
i
i个样本预测为真实标签的概率。针对所有
m
m
m个样本,我们希望最大化上式。累乘不好解,取对数变累加:
f
(
λ
)
=
∑
i
=
1
m
log
(
π
(
x
(
i
)
)
y
(
i
)
)
f(\lambda)=\sum_{i=1}^{m} \log \left(\pi(x(i))_{y(i)}\right)
f(λ)=i=1∑mlog(π(x(i))y(i))
λ
\lambda
λ为决定函数
π
\pi
π的参数,定义
λ
u
,
j
\lambda_{u,j}
λu,j为第
u
u
u类第
j
j
j维特征的系数。
我们知道逻辑回归求解的问题是一个凸优化问题,具有全局唯一最优解,取最优解时,针对任何
λ
\lambda
λ的偏导数都应该为0,基于这一点,求上式对
λ
u
,
j
\lambda_{u,j}
λu,j的偏导数。
∂
∂
λ
u
,
j
f
(
λ
)
=
∂
∂
λ
u
,
j
∑
i
=
1
m
log
(
π
(
x
(
i
)
)
y
(
i
)
)
=
∑
i
=
1
m
1
π
(
x
(
i
)
)
y
(
i
)
∂
∂
λ
u
,
j
π
(
x
(
i
)
)
y
(
i
)
\begin{aligned} \frac{\partial}{\partial \lambda_{u, j}} f(\lambda) &=\frac{\partial}{\partial \lambda_{u, j}} \sum_{i=1}^{m} \log \left(\pi(x(i))_{y(i)}\right) \\ &=\sum_{i=1}^{m} \frac{1}{\pi(x(i))_{y(i)}} \frac{\partial}{\partial \lambda_{u, j}} \pi(x(i))_{y(i)} \end{aligned}
∂λu,j∂f(λ)=∂λu,j∂i=1∑mlog(π(x(i))y(i))=i=1∑mπ(x(i))y(i)1∂λu,j∂π(x(i))y(i) 这里是针对某一种类别
u
u
u进行求导的,所以存在label为
u
u
u的样本,也存在label不为
u
u
u的样本,根据这个思路继续推导:
=
∑
i
=
1
y
(
i
)
=
u
m
1
π
(
x
(
i
)
)
u
∂
∂
λ
u
,
j
π
(
x
(
i
)
)
u
+
∑
i
=
1
y
(
i
)
≠
u
m
1
π
(
x
(
i
)
)
y
(
i
)
∂
∂
λ
u
,
j
π
(
x
(
i
)
)
y
(
i
)
\begin{aligned} =& \sum_{i=1 \atop y(i)=u}^{m} \frac{1}{\pi(x(i))_{u}} \frac{\partial}{\partial \lambda_{u, j}} \pi(x(i))_{u} \\ &+\sum_{i=1 \atop y(i) \neq u}^{m} \frac{1}{\pi(x(i))_{y(i)}} \frac{\partial}{\partial \lambda_{u, j}} \pi(x(i))_{y(i)} \end{aligned}
=y(i)=ui=1∑mπ(x(i))u1∂λu,j∂π(x(i))u+y(i)=ui=1∑mπ(x(i))y(i)1∂λu,j∂π(x(i))y(i) 上式中的两个偏导数可以表示为:
∂
∂
λ
v
,
j
π
(
x
)
v
=
x
j
π
(
x
)
v
(
1
−
π
(
x
)
v
)
∂
∂
λ
u
,
j
π
(
x
)
v
=
−
x
j
π
(
x
)
v
π
(
x
)
u
(when
u
≠
v
)
\begin{aligned} \frac{\partial}{\partial \lambda_{v, j}} \pi(x)_{v} &=x_{j} \pi(x)_{v}\left(1-\pi(x)_{v}\right) \\ \frac{\partial}{\partial \lambda_{u, j}} \pi(x)_{v} &=-x_{j} \pi(x)_{v} \pi(x)_{u} \text { (when } \left.u \neq v\right) \end{aligned}
∂λv,j∂π(x)v∂λu,j∂π(x)v=xjπ(x)v(1−π(x)v)=−xjπ(x)vπ(x)u (when u=v) 代入其中,继续推导得到:
=
∑
i
=
1
y
(
i
)
=
u
m
1
π
(
x
(
i
)
)
u
x
(
i
)
j
π
(
x
(
i
)
)
u
(
1
−
π
(
x
(
i
)
)
u
)
−
∑
i
=
1
y
(
i
)
≠
u
m
1
π
(
x
(
i
)
)
y
(
i
)
x
(
i
)
j
π
(
x
(
i
)
)
y
(
i
)
π
(
x
(
i
)
)
u
=
∑
i
=
1
y
m
x
(
i
)
j
(
1
−
π
(
x
(
i
)
)
u
)
−
∑
i
=
1
y
(
i
)
≠
u
m
x
(
i
)
j
π
(
x
(
i
)
)
u
=
∑
i
=
1
y
(
i
)
=
u
m
x
(
i
)
j
−
∑
i
=
1
m
x
(
i
)
j
π
(
x
(
i
)
)
u
\begin{aligned} =& \sum_{i=1 \atop y(i)=u}^{m} \frac{1}{\pi(x(i))_{u}} x(i)_{j} \pi(x(i))_{u}\left(1-\pi(x(i))_{u}\right) \\ &-\sum_{i=1 \atop y(i) \neq u}^{m} \frac{1}{\pi(x(i))_{y(i)}} x(i)_{j} \pi(x(i))_{y(i)} \pi(x(i))_{u} \\ =& \sum_{i=1 \atop y}^{m} x(i)_{j}\left(1-\pi(x(i))_{u}\right) \\ &-\sum_{i=1 \atop y(i) \neq u}^{m} x(i)_{j} \pi(x(i))_{u} \\ =& \sum_{i=1 \atop y(i)=u}^{m} x(i)_{j}-\sum_{i=1}^{m} x(i)_{j} \pi(x(i))_{u} \end{aligned}
===y(i)=ui=1∑mπ(x(i))u1x(i)jπ(x(i))u(1−π(x(i))u)−y(i)=ui=1∑mπ(x(i))y(i)1x(i)jπ(x(i))y(i)π(x(i))uyi=1∑mx(i)j(1−π(x(i))u)−y(i)=ui=1∑mx(i)jπ(x(i))uy(i)=ui=1∑mx(i)j−i=1∑mx(i)jπ(x(i))u 前面说过,偏导数应该为0,所以我们可以得到以下结论:
∑
i
=
1
m
π
(
x
(
i
)
)
u
x
(
i
)
j
=
∑
i
=
1
y
(
i
)
=
u
m
x
(
i
)
j
(
for all
u
,
j
)
\sum_{i=1}^{m} \pi(x(i))_{u} x(i)_{j}=\sum_{i=1 \atop y(i)=u}^{m} x(i)_{j}(\text { for all } u, j)
i=1∑mπ(x(i))ux(i)j=y(i)=ui=1∑mx(i)j( for all u,j) 这个结论对于任何一个
λ
\lambda
λ都适用。定义一个类似损失函数的函数
A
(
u
,
y
)
A(u,y)
A(u,y),当括号内相同时为1,不同时为0,上式可以更优雅的写为:
∑
i
=
1
m
π
(
x
(
i
)
)
u
x
(
i
)
j
=
∑
i
=
1
m
A
(
u
,
y
(
i
)
)
x
(
i
)
j
(
for all
u
,
j
)
\sum_{i=1}^{m} \pi(x(i))_{u} x(i)_{j}=\sum_{i=1}^{m} \mathrm{~A}(u, y(i)) x(i)_{j}(\text { for all } u, j)
i=1∑mπ(x(i))ux(i)j=i=1∑m A(u,y(i))x(i)j( for all u,j) 也就是说,我们要找的
π
\pi
π,应该极力靠近于这个函数A。(当然这是废话,函数A就代表着正确答案)
这是正向推导得到的一个事实,我们先放在这儿,一会儿要用。
从最大熵角度推导
最大熵模型讲究”知道的作为约束,不知道的千万别瞎假设“,以一种保守的态度保证熵最大,也就是不确定性最大。我们的预测对象是类别,我们要在保证label的熵是最大的情况下去猜测label的分布,可以用下式:
−
∑
v
=
1
k
∑
i
=
1
m
π
(
x
(
i
)
)
v
log
(
π
(
x
(
i
)
)
v
)
-\sum_{v=1}^{k} \sum_{i=1}^{m} \pi(x(i))_{v} \log \left(\pi(x(i))_{v}\right)
−v=1∑ki=1∑mπ(x(i))vlog(π(x(i))v) 这个式子也与最大熵模型的求解目标一致,这里我们不对
π
\pi
π做任何约束和假设。参照最大熵模型,列出目标函数以外存在的约束:
π
(
x
)
v
≥
0
always
∑
v
=
1
k
π
(
x
)
v
=
1
always
∑
i
=
1
m
π
(
x
(
i
)
)
u
x
(
i
)
j
=
∑
i
=
1
m
A
(
u
,
y
(
i
)
)
x
(
i
)
j
(
for all
u
,
j
)
\begin{aligned} \pi(x)_{v} & \geq 0 \text { always } \\ \sum_{v=1}^{k} \pi(x)_{v} &=1 \text { always } \\ \sum_{i=1}^{m} \pi(x(i))_{u} x(i)_{j} &=\sum_{i=1}^{m} \mathrm{~A}(u, y(i)) x(i)_{j}(\text { for all } u, j) \end{aligned}
π(x)vv=1∑kπ(x)vi=1∑mπ(x(i))ux(i)j≥0 always =1 always =i=1∑m A(u,y(i))x(i)j( for all u,j) 这几个约束都非常好理解,第一个意为如果想表示概率,那么必须大于0;第二个意为如果想表示概率和必须为1;第三个则是我们上一节正向推导出的一个事实。
注意:第三个约束所指的事实,它的推导过程与sigmoid函数没沾一点关系,所以不存在从sigmoid函数正推又反推的情况。
有约束优化的求解方式自然是拉格朗日乘子法,拉格朗日方程可以表示为:
L
=
∑
j
=
1
n
∑
v
=
1
k
λ
v
,
j
(
∑
i
=
1
m
π
(
x
(
i
)
)
v
x
(
i
)
j
−
A
(
v
,
y
(
i
)
)
x
(
i
)
j
)
+
∑
v
=
1
k
∑
i
=
1
m
β
i
(
π
(
x
(
i
)
)
v
−
1
)
−
∑
v
=
1
k
∑
i
=
1
m
π
(
x
(
i
)
)
v
log
(
π
(
x
(
i
)
)
v
)
\begin{aligned} L=& \sum_{j=1}^{n} \sum_{v=1}^{k} \lambda_{v, j}\left(\sum_{i=1}^{m} \pi(x(i))_{v} x(i)_{j}-\mathrm{A}(v, y(i)) x(i)_{j}\right) \\ &+\sum_{v=1}^{k} \sum_{i=1}^{m} \beta_{i}\left(\pi(x(i))_{v}-1\right) \\ &-\sum_{v=1}^{k} \sum_{i=1}^{m} \pi(x(i))_{v} \log \left(\pi(x(i))_{v}\right) \end{aligned}
L=j=1∑nv=1∑kλv,j(i=1∑mπ(x(i))vx(i)j−A(v,y(i))x(i)j)+v=1∑ki=1∑mβi(π(x(i))v−1)−v=1∑ki=1∑mπ(x(i))vlog(π(x(i))v) 既然我们的目标是找到
π
\pi
π的样子,那么我们对其求偏导并使得结果为0,可以得到:
∂
∂
π
(
x
(
i
)
)
u
L
=
λ
u
⋅
x
(
i
)
+
β
i
−
log
(
π
(
x
(
i
)
)
u
)
−
1
\frac{\partial}{\partial \pi(x(i))_{u}} L=\lambda_{u} \cdot x(i)+\beta_{i}-\log \left(\pi(x(i))_{u}\right)-1
∂π(x(i))u∂L=λu⋅x(i)+βi−log(π(x(i))u)−1
λ
u
⋅
x
(
i
)
+
β
i
−
log
(
π
(
x
(
i
)
)
u
)
−
1
=
0
\lambda_{u} \cdot x(i)+\beta_{i}-\log \left(\pi(x(i))_{u}\right)-1=0
λu⋅x(i)+βi−log(π(x(i))u)−1=0 把我们要找的目标拿出来放到等式左边,可以得到:
π
(
x
(
i
)
)
u
=
e
λ
u
⋅
x
(
i
)
+
β
i
−
1
\pi(x(i))_{u}=e^{\lambda_{u} \cdot x(i)+\beta_{i}-1}
π(x(i))u=eλu⋅x(i)+βi−1 结合之前的约束二,概率和为一,可以有如下条件:
∑
v
=
1
k
e
λ
v
⋅
x
(
i
)
+
β
i
−
1
=
1
e
β
=
1
/
∑
v
=
1
k
e
λ
v
⋅
x
(
i
)
−
1
\begin{array}{l} \sum_{v=1}^{k} e^{\lambda_{v} \cdot x(i)+\beta_{i}-1}=1 \\ e^{\beta}=1 / \sum_{v=1}^{k} e^{\lambda_{v} \cdot x(i)-1} \end{array}
∑v=1keλv⋅x(i)+βi−1=1eβ=1/∑v=1keλv⋅x(i)−1 将结果带回
π
(
x
(
i
)
)
u
\pi(x(i))_{u}
π(x(i))u的表达式,我们就得到了逻辑回归的形式:
π
(
x
)
u
=
e
λ
u
⋅
x
∑
v
=
1
k
e
λ
v
⋅
x
\pi(x)_{u}=\frac{e^{\lambda_{u} \cdot x}}{\sum_{v=1}^{k} e^{\lambda_{v} \cdot x}}
π(x)u=∑v=1keλv⋅xeλu⋅x 非常漂亮的推导,真是精准而优雅。
最后
除此之外还有一种推导方式,就是篇头参考资料”从最大熵模型解释逻辑回归“的推导方式。这种方式严格遵守最大熵模型解的形式,但我并不清楚相对应的特征函数是怎么给出来的,特征函数有什么含义,所以我对这个推导的态度是存疑的。
个人认为,逻辑回归可以从最大熵理论的角度进行推导,用了最大熵模型的求解思路,二者的优化目标也非常相似,但并不能说逻辑回归完全是最大熵模型(狭义上)的一个例子,因为我并不认可那个特征函数,没有数学上的解释。
最后,贴一张刘建平大佬的观点,与我的观点相似。
(图片来源,篇头参考资料“最大熵模型原理小结——刘建平”)