第6章 逻辑斯蒂回归和最大熵模型
逻辑斯谛回归(LR)是经典的分类方法
1.逻辑斯谛回归模型是由以下条件概率分布表示的分类模型。逻辑斯谛回归模型可以用于二类或多类分类。
这里,x 为输入特征,w 为特征的权值。
逻辑斯谛回归模型源自逻辑斯谛分布,其分布函数F ( x )是S 形函数。逻辑斯谛回归模型是由输入的线性函数表示的输出的对数几率模型。
2.最大熵模型是由以下条件概率分布表示的分类模型。最大熵模型也可以用于二类或多类分类。
其中,Z w ( x )是规范化因子,f i为特征函数,w i 为特征的权值。
3.最大熵模型可以由最大熵原理推导得出。最大熵原理是概率模型学习或估计的一个准则。最大熵原理认为在所有可能的概率模型(分布)的集合中,熵最大的模型是最好的模型。
最大熵原理应用到分类模型的学习中,有以下约束最优化问题:
求解此最优化问题的对偶问题得到最大熵模型。
4.逻辑斯谛回归模型与最大熵模型都属于对数线性模型。
5.逻辑斯谛回归模型及最大熵模型学习一般采用极大似然估计,或正则化的极大似然估计。逻辑斯谛回归模型及最大熵模型学习可以形式化为无约束最优化问题。求解该最优化问题的算法有改进的迭代尺度法、梯度下降法、拟牛顿法。
最大熵模型
最大熵模型(maximun entropy model)由最大熵原理推导实现,而最大熵原理损失概率模型学习的一个准则。最大熵原理认为,学习概率模型是,所有可能的概率模型(分布)中,熵最大的模型是最好的模型。
最大熵原理也可以表述为在满足约束条件的模型集合中取熵最大的模型
假设满足所有约束条件的模型的集合为
KaTeX parse error: Got function '\tilde' with no arguments as subscript at position 29: …n P|E_P(f_i)=E_\̲t̲i̲l̲d̲e̲{P}({f_i})\}
定义在条件概率分布P ( X ∣ Y ) 上的条件熵为
则模型集合C中条件熵H ( P ) 最大的模型称为最大熵模型。式中的对数为自然对数。
最大熵模型的学习
最大熵模型的学习过程就是求解最大熵模型的过程。最大熵模型的学习可以形式化为约束最优的问题。最大熵模型的学习就等价与约束最优化问题
将约束最优化的原始问题转换为无约束最优化的对偶问题。通过求解对偶问题求解原始问题。
简单来说,约束最优化问题包含≤ 0 ,和= 0 两种约束条件,这是约束优化问题的一般形式
引入广义拉格朗日函数
α和β是拉格朗日乘子
在KKT的条件下,原始问题和对偶问题的最优值相等
前面三个条件是由解析函数的知识,对于各个变量的偏导数为0,后面四个条件就是原始问题的约束条件以及拉格朗日乘子需要满足的约束,第四个条件是KKT的对偶互补条件
在L ( P , w )对P 求偏导并令其为零解得
因为,然后得到模型
这里Z w ( x ) )先用来代替exp ( 1 − w 0 )是归一化因子
并不是因为概率为1推导出了Z w 的表达式,这样一个表达式是凑出来的,意思就是遍历y 的所有取值,求分子表达式的占比
极大似然估计
- 对偶函数的极大化等价于最大熵模型的极大似然估计
已知训练数据的经验分布P ~ ( X , Y ) 条件概率分布P ( Y ∣ X ) 的对数似然函数表示为
当条件分布概率P ( y ∣ x )是最大熵模型时
KaTeX parse error: Undefined control sequence: \ at position 625: … \end{aligned} \̲ ̲
推导过程用到了
模型学习的最优化算法
- 逻辑斯蒂回归模型、最大熵模型学习归结为以似然函数为目标函数的最优化问题,通常通过迭代算法求解
- 用最优化的观点来看,常用找最优解的方法有改建的迭代尺度法、梯度下降法、牛顿法或拟牛顿法。牛顿法和拟牛顿法一般收敛速度更快。
- 简单算法在这里不做描述了,因为之前也做了笔记,这里着重描述一下改进的迭代尺度算法
改进的迭代尺度算法(IIS)
输入:特征函数f 1 , f 2 , … , f n 经验分布P ~ ( X , Y ) ,模型P w ( y ∣ x )
输出:最优参数值w i ∗ 最优模型P w ∗
(1)对所有i ∈ { 1 , 2 , … , n } ,取初值w i = 0
(2)对每一i ∈ { 1 , 2 , … , n }
(a) 令 δ i 是方程
的解, 这里,
(b)更新 w i 值: w i ← w i + δ i w_{i}
(3)如果不是所有 w i 都收玫,重复步 (2)。
这一算法关键的一步是 ( a ) 即求解方程中的 δ i 如果 f # ( x , y )是常数, 即 对任何 x , y ,有 f # ( x , y ) = M , 那么 δ i 可以显式地表示成
如果 f # ( x , y )不是常数,那么必须通过数值计算求 δ i 简单有效的方法是牛顿法。
以 g ( δ i ) = 0表示方程, 牛顿法通过迭代求得 δ i ∗ 使得 g ( δ i ∗ ) = 0 。迭代公式是
只要适当选取初始值 δ i ( 0 ) 的方程有单根, 因此牛顿法恒收敛, 而且收敛速度很快。