为什么逻辑回归(logistic)可以表示概率?

参考资料:
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λuxeλvx  其中 v v v表示当前类别, k k k表示类别的总数,在二分类中为2。

  逻辑回归的似然方程可以理解为极大化预测出正确类别的概率,即:
∏ i = 1 m π ( x ( i ) ) y ( i ) \prod_{i=1}^{m} \pi(x(i))_{y(i)} i=1mπ(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=1mlog(π(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,jf(λ)=λu,ji=1mlog(π(x(i))y(i))=i=1mπ(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=1mπ(x(i))u1λu,jπ(x(i))u+y(i)=ui=1mπ(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=1mπ(x(i))u1x(i)jπ(x(i))u(1π(x(i))u)y(i)=ui=1mπ(x(i))y(i)1x(i)jπ(x(i))y(i)π(x(i))uyi=1mx(i)j(1π(x(i))u)y(i)=ui=1mx(i)jπ(x(i))uy(i)=ui=1mx(i)ji=1mx(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=1mπ(x(i))ux(i)j=y(i)=ui=1mx(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=1mπ(x(i))ux(i)j=i=1m 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=1ki=1mπ(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=1kπ(x)vi=1mπ(x(i))ux(i)j0 always =1 always =i=1m 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=1nv=1kλv,j(i=1mπ(x(i))vx(i)jA(v,y(i))x(i)j)+v=1ki=1mβi(π(x(i))v1)v=1ki=1mπ(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))uL=λux(i)+βilog(π(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 λux(i)+βilog(π(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λux(i)+βi1  结合之前的约束二,概率和为一,可以有如下条件:
∑ 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λvx(i)+βi1=1eβ=1/v=1keλvx(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λvxeλux  非常漂亮的推导,真是精准而优雅。

最后

  除此之外还有一种推导方式,就是篇头参考资料”从最大熵模型解释逻辑回归“的推导方式。这种方式严格遵守最大熵模型解的形式,但我并不清楚相对应的特征函数是怎么给出来的,特征函数有什么含义,所以我对这个推导的态度是存疑的。

  个人认为,逻辑回归可以从最大熵理论的角度进行推导,用了最大熵模型的求解思路,二者的优化目标也非常相似,但并不能说逻辑回归完全是最大熵模型(狭义上)的一个例子,因为我并不认可那个特征函数,没有数学上的解释。

  最后,贴一张刘建平大佬的观点,与我的观点相似。
在这里插入图片描述

(图片来源,篇头参考资料“最大熵模型原理小结——刘建平”)

猜你喜欢

转载自blog.csdn.net/zhaojc1995/article/details/114462504
今日推荐