逻辑斯谛回归(logistic regression)是机器学习中的经典分类方法,可用于二类或多类分类;最大熵原理是概率学习或估计的一个准则,最大熵原理认为在所有可能的概率模型的集合中,熵最大的模型是最好的模型。将其推广到分类问题得到最大熵模型(maximun entropy model)。
本文先分别介绍逻辑斯谛回归和最大熵模型,最后证明逻辑斯谛回归是最大熵模型的一种特殊情况。
对于二分类,逻辑斯谛回归模型可以表示为:
π ( x ) 1 = e λ x e λ x + 1 (1.1) \pi(x)_1 = \frac{e^{\lambda x}}{e^{\lambda x} + 1} \tag{1.1} π(x)1=eλx+1eλx(1.1)
π ( x ) 2 = 1 e λ x + 1 (1.2) \pi(x)_2 = \frac{1}{e^{\lambda x} + 1} \tag{1.2} π(x)2=eλx+11(1.2)
其中, λ ∈ R n \lambda \in \mathbb{R}^n λ∈Rn,为模型参数。从上面公式可以看出, π ( x ) 1 ∈ ( 0 , 1 ) \pi(x)_1 \in (0,1) π(x)1∈(0,1) , π ( x ) 2 = 1 − π ( x ) 1 \pi(x)_2 = 1 -\pi(x)_1 π(x)2=1−π(x)1 ,而且该模型完全是由 λ \lambda λ 参数决定的。 π ( x ) 1 \pi(x)_1 π(x)1 是 sigmoid 函数(代表一类函数,其函数图形为 S S S 形曲线,在无特意指明的情况下一般默认为公式 ( 1.1 ) (1.1) (1.1) 在 λ = 1 \lambda = 1 λ=1 时的情况)。
几率(odds)表示某件事发生的概率(记作 p p p)与该事件不发生的概率的比值: p 1 − p \frac{p}{1-p} 1−pp,该事件的对数几率(log odds)或 logit 函数为:
l o g i t ( p ) = log p 1 − p (1.3) logit(p) = \log\frac{p}{1-p} \tag{1.3} logit(p)=log1−pp(1.3)
可看出 logit 函数可将 0 至 1 之间的值(概率)映射到整个实数域 ( − ∞ , + ∞ ) (-\infty,+\infty) (−∞,+∞)。而 sigmoid 函数可将整个实数域的值映射到 0 至 1 之间:
s i g m o i d ( x ) = e x e x + 1 (1.4) sigmoid(x) = \frac{e^x}{e^x+1} \tag{1.4} sigmoid(x)=ex+1ex(1.4)
将 sigmoid 函数作为输入带入到 logit 函数中时,可发现这两个函数互为反函数。
l o g i t ( s i g m o i d ( x ) ) = log e x / ( e x + 1 ) 1 / ( e x + 1 ) = x (1.5) \begin{aligned} logit(sigmoid(x)) &= \log\frac{e^x/(e^x+1)}{1/(e^x+1)} \\ &=x \end{aligned} \tag{1.5} logit(sigmoid(x))=log1/(ex+1)ex/(ex+1)=x(1.5)
将逻辑斯谛回归的 ( 1.1 ) (1.1) (1.1) 公式带入到 logit 函数中,有:
l o g i t ( π ( x ) 1 ) = λ ⋅ x (1.6) logit(\pi(x)_1) = \lambda \cdot x \tag{1.6} logit(π(x)1)=λ⋅x(1.6)
所以说,在逻辑斯谛回归模型中,输出类别为 1 的对数几率是输入 x x x 的线性函数。线性函数值越接近正无穷,判断为类别 1 的概率越大,值越接近负无穷,则概率越低。这也是逻辑斯谛回归模型如此命名的原因。
将逻辑斯谛回归推广至多类(k类)分类,可表示为:
π ( x ) v = e λ v x ∑ u = 1 k e λ u x (1.7) \pi(x)_v = \frac{e^{\lambda_v x}}{\sum_{u=1}^{k} e^{\lambda_u x}} \tag{1.7} π(x)v=∑u=1keλuxeλvx(1.7)
在这里, λ \lambda λ 是一个 k × n k \times n k×n 的矩阵,一行对应一种类别的参数。如果令 k = 2 k=2 k=2,且 λ 2 \lambda _2 λ2 为一个零向量,就可得到之前所讲的二分类逻辑斯谛回归。
此时 π ( ) \pi() π() 应满足:
前面两点不需要特别关注,因为这是公式 ( 1.7 ) (1.7) (1.7) 本身具有的特性,无关 λ \lambda λ 的取值。第三点是逻辑斯谛回归的核心目标,需要找到合适的 λ \lambda λ 来实现。
前言中有说到,最大熵原理是概率学习或估计的一个准则,最大熵原理认为在所有可能的概率模型的集合中,熵最大的模型是最好的模型。将其推广到分类问题得到最大熵模型(maximum entropy models)。
在信息论里,熵(entropy)是对不确定性的测量,熵越高则不确定性越高。假设离散随机变量 X X X 的概率分布为 P ( X ) P(X) P(X),则其熵为:
H ( P ) = − ∑ x P ( x ) log P ( x ) (2.1) H(P) = -\sum_x P(x)\log P(x) \tag{2.1} H(P)=−x∑P(x)logP(x)(2.1)
假设满足所有约束条件的模型集合为 P P P, 最大熵原理建议选取 P P P 中熵最大的模型。使用 E p = E p ^ E_p=E_{\hat{p}} Ep=Ep^ 泛指模型所需满足的约束条件,最大熵模型 p ∗ p^* p∗ 可定义为:
P = { p ∣ E p = E p ^ } p ∗ = arg max p ∈ P H ( p ) (2.2) \begin{aligned} P &= \{p|E_p=E_{\hat{p}}\} \\ \\ p^* &= \arg \max_{p \in P} H(p) \end{aligned} \tag{2.2} Pp∗={p∣Ep=Ep^}=argp∈PmaxH(p)(2.2)
不知道读者们是否有困惑(我刚接触的时候就有):对于分类问题,模型不是在训练数据上的分类确定性越高(熵越低)越好吗?为什么最大熵原理却推荐选择满足限制条件的熵最大的模型?
其实,这么做主要是为了避免选择在训练数据上过拟合(over-fitting)的模型。我们都知道,在训练数据上过拟合的模型,在遇到未见过的新数据时泛化能力较差,而模型的泛化能力是我们最关心的一点。
直观地,最大熵原理认为要选择的概率模型首先必须满足已有的事实,即约束条件。在没有更多的信息的情况下,那些不确定的部分都是“等可能的”。
接下来证明逻辑斯谛回归是最大熵模型的一个特例。先回顾一下逻辑斯谛回归在多类问题上的公式:
π ( x ) v = e λ v x ∑ u = 1 k e λ u x (3.1) \pi(x)_v = \frac{e^{\lambda_v x}}{\sum_{u=1}^{k} e^{\lambda_u x}} \tag{3.1} π(x)v=∑u=1keλuxeλvx(3.1)
根据公式 ( 3.1 ) (3.1) (3.1) 可以求得该函数对参数 λ \lambda λ 的偏导数:
∂ π ( x ) v ∂ λ v , j = ∂ π ( x ) v ∂ e λ v x ∂ e λ v x ∂ λ v , j = x j π ( x ) v ( 1 − π ( x ) v ) ∂ π ( x ) v ∂ λ u , j = ∂ π ( x ) v ∂ e λ u x ∂ e λ u x ∂ λ u , j = − x j π ( x ) v π ( x ) u ( when u ≠ v ) (3.2) \begin{aligned} \frac{\partial \pi(x)_v}{\partial\lambda_{v,j}} &= \frac{\partial \pi(x)_v}{\partial e^{\lambda_v x}}\frac{\partial e^{\lambda_v x}}{\partial\lambda_{v,j}}=x_j\pi(x)_v(1-\pi(x)_v) \\ \\ \frac{\partial \pi(x)_v}{\partial\lambda_{u,j}} &= \frac{\partial \pi(x)_v}{\partial e^{\lambda_u x}}\frac{\partial e^{\lambda_u x}}{\partial\lambda_{u,j}}=-x_j\pi(x)_v\pi(x)_u \quad (\text{when }u \neq v) \end{aligned} \tag{3.2} ∂λv,j∂π(x)v∂λu,j∂π(x)v=∂eλvx∂π(x)v∂λv,j∂eλvx=xjπ(x)v(1−π(x)v)=∂eλux∂π(x)v∂λu,j∂eλux=−xjπ(x)vπ(x)u(when u=v)(3.2)
第一节有说过,对于多类问题上的逻辑斯谛回归,我们希望 π ( x ( i ) ) y ( i ) \pi(x(i))_{y(i)} π(x(i))y(i) 在所有训练样本上都尽可能大,即让如下式子尽可能大:
∏ i = 1 m π ( x ( i ) ) y ( i ) (3.3) \prod_{i=1}^m \pi(x(i))_{y(i)} \tag{3.3} i=1∏mπ(x(i))y(i)(3.3)
等价于最大化如下的对数似然:
f ( λ ) = ∑ i = 1 m log ( π ( x ( i ) ) y ( i ) ) (3.4) f(\lambda) = \sum_{i=1}^m\log (\pi(x(i))_{y(i)}) \tag{3.4} f(λ)=i=1∑mlog(π(x(i))y(i))(3.4)
所以,我们需要找到一个 λ \lambda λ ,使得 f ( λ ) f(\lambda) f(λ) 最大,故计算 f ( λ ) f(\lambda) f(λ) 对 λ \lambda λ 的偏导数,并令其等于零。
∂ ∂ λ 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 ) = ∑ 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 ) = ∑ 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 ( i ) = u 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 (3.5) \begin{aligned} \frac{\partial}{\partial\lambda_{u,j}} f(\lambda) &= \frac{\partial}{\partial\lambda_{u,j}} \sum_{i=1}^m\log (\pi(x(i))_{y(i)})\\ &= \sum_{i=1}^m \frac{1}{\pi(x(i))_{y(i)}} \frac{\partial}{\partial\lambda_{u,j}}\pi(x(i))_{y(i)}\\ &= \sum_{i=1,y(i)=u}^m \frac{1}{\pi(x(i))_{u}} \frac{\partial}{\partial\lambda_{u,j}}\pi(x(i))_{u} \\ &\qquad+ \sum_{i=1,y(i)\neq u}^m \frac{1}{\pi(x(i))_{y(i)}} \frac{\partial}{\partial\lambda_{u,j}}\pi(x(i))_{y(i)}\\ &= \sum_{i=1,y(i)=u}^m \frac{1}{\pi(x(i))_{u}} x(i)_j\pi(x(i))_u(1-\pi(x(i))_u) \\ &\qquad- \sum_{i=1,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,y(i)=u}^m x(i)_j(1-\pi(x(i))_u) - \sum_{i=1,y(i)\neq u}^m x(i)_j\pi(x(i))_u\\ &=\sum_{i=1,y(i)=u}^m x(i)_j - \sum_{i=1}^m x(i)_j\pi(x(i))_u \end{aligned} \tag{3.5} ∂λ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)=i=1,y(i)=u∑mπ(x(i))u1∂λu,j∂π(x(i))u+i=1,y(i)=u∑mπ(x(i))y(i)1∂λu,j∂π(x(i))y(i)=i=1,y(i)=u∑mπ(x(i))u1x(i)jπ(x(i))u(1−π(x(i))u)−i=1,y(i)=u∑mπ(x(i))y(i)1x(i)jπ(x(i))y(i)π(x(i))u=i=1,y(i)=u∑mx(i)j(1−π(x(i))u)−i=1,y(i)=u∑mx(i)jπ(x(i))u=i=1,y(i)=u∑mx(i)j−i=1∑mx(i)jπ(x(i))u(3.5)
令该偏导数为零,得:
∑ i = 1 m π ( x ( i ) ) u x ( i ) j = ∑ i = 1 , y ( i ) = u m x ( i ) j ( for all u , j ) = ∑ i = 1 m A ( u , y ( i ) ) x ( i ) j ( for all u , j ) (3.6) \begin{aligned} \sum_{i=1}^m \pi(x(i))_u x(i)_j &= \sum_{i=1,y(i)=u}^m x(i)_j \quad(\text{for all }u,j)\\ &=\sum_{i=1}^m A(u,y(i))x(i)_j \quad(\text{for all }u,j) \end{aligned} \tag{3.6} i=1∑mπ(x(i))ux(i)j=i=1,y(i)=u∑mx(i)j(for all u,j)=i=1∑mA(u,y(i))x(i)j(for all u,j)(3.6)
A A A 为指示函数,上面的公式隐含如下信息:在训练样本中,类别为 u 的所有样本的第 j j j 值个元素的总和等于模型 π ( x ( i ) ) u \pi(x(i))_u π(x(i))u 在所有训练样本(无关类别)的第 j j j 个元素上的概率质量(probability mass)之和。而且,还说明,最优的 λ \lambda λ 应使概率函数 π ( x ( i ) ) u \pi(x(i))_u π(x(i))u 的执行效果尽可能地接近指示函数 A ( u , y ( i ) ) A(u,y(i)) A(u,y(i))。
通过以上的推导,我们可以把逻辑斯谛回归中 π ( ) \pi() π() 应满足的条件重新写一下:
现在,我们可以把上节中 π ( ) \pi() π() 应满足的条件加入到最大熵模型的定义中(公式 ( 2.2 ) (2.2) (2.2)), 而 π ( ) \pi() π() 的熵可写作:
− ∑ u = 1 k ∑ i = 1 m π ( x ( i ) u ) log ( π ( x ( i ) ) u ) (3.7) -\sum_{u=1}^k\sum_{i=1}^m \pi(x(i)_u)\log (\pi(x(i))_u) \tag{3.7} −u=1∑ki=1∑mπ(x(i)u)log(π(x(i))u)(3.7)
对于公式 ( 2.2 ) (2.2) (2.2) 条件极值的求解,可以使用拉格朗日乘数法,将目标函数与所有加权的约束条件相加,即:
L = ∑ j = 1 n ∑ u = 1 k λ u , j ( ∑ i = 1 m π ( x ( i ) ) u x ( i ) j − A ( u , y ( i ) ) x ( i ) j ) + ∑ u = 1 k ∑ i = 1 m β i ( π ( x ( i ) ) u − 1 ) − ∑ u = 1 k ∑ i = 1 m π ( x ( i ) u ) log ( π ( x ( i ) ) u ) (3.8) \begin{aligned} L = &\sum_{j=1}^n \sum_{u=1}^k \lambda_{u,j}\left(\sum_{i=1}^m\pi(x(i))_ux(i)_j-A(u,y(i))x(i)_j\right)\\ &+ \sum_{u=1}^k \sum_{i=1}^{m} \beta_i(\pi(x(i))_u-1)\\ &- \sum_{u=1}^k \sum_{i=1}^{m} \pi(x(i)_u)\log (\pi(x(i))_u) \end{aligned} \tag{3.8} L=j=1∑nu=1∑kλu,j(i=1∑mπ(x(i))ux(i)j−A(u,y(i))x(i)j)+u=1∑ki=1∑mβi(π(x(i))u−1)−u=1∑ki=1∑mπ(x(i)u)log(π(x(i))u)(3.8)
上面的 λ \lambda λ 和 β \beta β 是未定权重(参数), π ( ) \pi() π() 也是未知的概率函数。我们的目标是在所有的函数空间中找到一个 π ( ) \pi() π() ,以最大化 L L L,故令 L L L 对于 π ( x ( i ) u ) \pi(x(i)_u) π(x(i)u) 的偏导数等于零(对于所有的 i , u i,u i,u)。
∂ ∂ π ( x ( i ) ) u L = ∑ j = 1 n λ u , j x ( i ) j + β i − log ( π ( x ( i ) ) u ) − 1 = λ u x ( i ) + β i − log ( π ( x ( i ) ) u ) − 1 = 0 (3.9) \begin{aligned} \frac{\partial}{\partial\pi(x(i))_u} L &= \sum_{j=1}^n \lambda_{u,j}x(i)_j + \beta_i-\log (\pi(x(i))_u) - 1 \\ &= \lambda_u x(i) + \beta_i-\log (\pi(x(i))_u) - 1 \\ &= 0 \end{aligned} \tag{3.9} ∂π(x(i))u∂L=j=1∑nλu,jx(i)j+βi−log(π(x(i))u)−1=λux(i)+βi−log(π(x(i))u)−1=0(3.9)
将上式简化可得:
π ( x ( i ) ) u = e λ u x ( i ) + β i − 1 (3.10) \pi(x(i))_u = e^{\lambda_u x(i) + \beta_i -1} \tag{3.10} π(x(i))u=eλux(i)+βi−1(3.10)
又因为 ∑ u = 1 k π ( x ( i ) ) u = 1 \sum_{u=1}^k \pi(x(i))_u = 1 ∑u=1kπ(x(i))u=1 ,则有:
e β = 1 / ∑ u = 1 k e λ u x ( i ) − 1 (3.11) \begin{aligned} e^{\beta} &= 1/ \sum_{u=1}^k e^{\lambda_u x(i)-1} \end{aligned} \tag{3.11} eβ=1/u=1∑keλux(i)−1(3.11)
将 β \beta β 带入到公式 ( 3.10 ) (3.10) (3.10) 中,简化可得:
π ( x ) u = e λ u ⋅ x ∑ v = 1 k e λ v ⋅ x (3.12) \begin{aligned} \pi(x)_u = \frac{e^{\lambda_u \cdot x}}{\sum_{v=1}^k e^{\lambda_v \cdot x}} \end{aligned} \tag{3.12} π(x)u=∑v=1keλv⋅xeλu⋅x(3.12)
这不正是多类问题上的逻辑斯谛回归公式 ( 1.7 ) (1.7) (1.7) 或 ( 3.1 ) (3.1) (3.1) 吗?
以上,我们可以看出,逻辑斯谛回归是最大熵模型的一个特例,只需将逻辑斯谛回归模型所隐含的模型约束条件引入到最大熵模型中即可导出逻辑斯谛回归模型。最大熵原理是概率模型学习的一种通用准则,可有效避免模型的过拟合。逻辑斯谛回归和最大熵模型都是对数线性模型。
该博客首发于我的个人博客网站。
若发现文中有错误,望指出,共同学习☕️。