本课程来自深度之眼,部分截图来自课程视频以及李航老师的《统计学习方法》第二版。
公式输入请参考: 在线Latex公式
前言
学习第6章逻辑斯谛回归与最大熵模型
任务简介:理解逻辑斯蒂回归的模型形式和求解方法,了解最大熵模型的思想和求解方法。
详细说明:第6章介绍的逻辑斯蒂回归与最大熵模型都属于对数线性模型,都用来解决分类问题。通过学习第1节,需要掌握逻辑斯蒂回归的模型形式和似然函数,理解最大熵模型的思想和求解方法;通过学习第2节,了解改进的迭代尺度算法的思想。
学习目标:
0.导读视频。
1.掌握二项逻辑斯蒂和多项逻辑斯蒂模型的模型形式和似然函数。
2.掌握二项逻辑斯蒂求解中的梯度下降法。
3.理解最大熵模型的思想,了解拉格朗日对偶性。
4.理解最大熵模型中的改进的迭代尺度算法。
5.掌握逻辑斯谛回归与最大熵的算法实现。
导入
先回顾之前的感知机
f
(
x
)
=
sign
(
w
⋅
x
+
b
)
f(x)=\text{sign}(w\cdot x+b)
f(x)=sign(w⋅x+b)
1.只输出-1和+1是不是太生硬了?这样的判别方式真的有效吗?
2.超平面左侧0.001距离的点和超平面右侧0.001距离的点真的有天壤之别吗?(如下图所示)
我们观察感知机函数图形可知:
1.感知机通过梯度下降更新参数,但在sign函数中,x=0是间断点,不可微。
2.感知机由于sign不是连续可微的,因此在梯度下降时脱去了壳子sign函数。
逻辑斯蒂回归
定义
P
(
Y
=
1
∣
x
)
=
exp
(
w
⋅
x
)
1
+
exp
(
w
⋅
x
)
P
(
Y
=
0
∣
x
)
=
1
1
+
exp
(
w
⋅
x
)
(1)
P(Y=1|x)=\cfrac{\exp(w\cdot x)}{1+\exp(w\cdot x)}\\P(Y=0|x)=\cfrac{1}{1+\exp(w\cdot x)}\tag1
P(Y=1∣x)=1+exp(w⋅x)exp(w⋅x)P(Y=0∣x)=1+exp(w⋅x)1(1)
其好处在于
1.整个值域连续可微
2.由于
a
a
+
b
+
b
a
+
b
=
1
\cfrac{a}{a+b}+\cfrac{b}{a+b}=1
a+ba+a+bb=1每一项值域都是[0,1],因此可以把这两项可以看做是条件概率。整个模型就是吃样本,得概率
参数估计p93
逻辑斯谛回归模型学习时,对于给定的训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)},,其中,
x
i
∈
R
n
,
y
∈
{
0
,
1
}
x_i\in R^n,y\in \{0,1\}
xi∈Rn,y∈{0,1},可以应用极大似然估计法估计模型参数,从而得到逻辑斯谛回归模型。假设
P
(
Y
=
1
∣
x
)
=
π
(
x
)
,
P
(
Y
=
0
∣
x
)
=
1
−
π
(
x
)
P(Y=1|x)=\pi(x),P(Y=0|x)=1-\pi(x)
P(Y=1∣x)=π(x),P(Y=0∣x)=1−π(x)
根据之前之前抛硬币的例子,可以写成上式对应的似然函数:
∏
i
=
1
N
[
π
(
x
i
)
]
y
i
[
1
−
π
(
x
i
)
]
1
−
y
i
\prod_{i=1}^N[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}
i=1∏N[π(xi)]yi[1−π(xi)]1−yi
取对数得到对数似然函数:
L
(
w
)
=
∑
i
=
1
N
log
[
π
(
x
i
)
]
y
i
[
1
−
π
(
x
i
)
]
1
−
y
i
=
∑
i
=
1
N
[
log
[
π
(
x
i
)
]
y
i
+
log
[
1
−
π
(
x
i
)
]
1
−
y
i
]
=
∑
i
=
1
N
[
y
i
log
π
(
x
i
)
+
(
1
−
y
i
)
log
(
1
−
π
(
x
i
)
)
]
=
∑
i
=
1
N
[
y
i
log
π
(
x
i
)
+
log
(
1
−
π
(
x
i
)
)
−
y
i
log
(
1
−
π
(
x
i
)
)
]
=
∑
i
=
1
N
[
y
i
log
π
(
x
i
)
1
−
π
(
x
i
)
+
log
(
1
−
π
(
x
i
)
)
]
(2)
L(w)=\sum_{i=1}^N\log[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}\\ =\sum_{i=1}^N\left [\log[\pi(x_i)]^{y_i}+\log[1-\pi(x_i)]^{1-y_i}\right ]\\ =\sum_{i=1}^N\left [y_i\log\pi(x_i) +(1-y_i)\log(1-\pi(x_i))\right ]\\ =\sum_{i=1}^N\left [y_i\log\pi(x_i) +\log(1-\pi(x_i))-y_i\log(1-\pi(x_i))\right ]\\ =\sum_{i=1}^N\left [y_i\log\cfrac{\pi(x_i)}{1-\pi(x_i)} +\log(1-\pi(x_i))\right ]\tag2
L(w)=i=1∑Nlog[π(xi)]yi[1−π(xi)]1−yi=i=1∑N[log[π(xi)]yi+log[1−π(xi)]1−yi]=i=1∑N[yilogπ(xi)+(1−yi)log(1−π(xi))]=i=1∑N[yilogπ(xi)+log(1−π(xi))−yilog(1−π(xi))]=i=1∑N[yilog1−π(xi)π(xi)+log(1−π(xi))](2)
这里我们看一下把假设的两个式子相除,然后把定义的(1)代入:
P
(
Y
=
1
∣
x
)
P
(
Y
=
0
∣
x
)
=
π
(
x
)
1
−
π
(
x
)
=
exp
(
w
⋅
x
)
1
+
exp
(
w
⋅
x
)
⋅
1
+
exp
(
w
⋅
x
)
1
=
exp
(
w
⋅
x
)
\cfrac{P(Y=1|x)}{P(Y=0|x)}=\cfrac{\pi(x)}{1-\pi(x)}=\cfrac{\exp(w\cdot x)}{1+\exp(w\cdot x)}\cdot \cfrac{1+\exp(w\cdot x)}{1}\\ =\exp(w\cdot x)
P(Y=0∣x)P(Y=1∣x)=1−π(x)π(x)=1+exp(w⋅x)exp(w⋅x)⋅11+exp(w⋅x)=exp(w⋅x)
将上式以及逻辑斯蒂定义代入2可得:
L
(
w
)
=
∑
i
=
1
N
[
y
i
log
[
exp
(
w
⋅
x
i
)
]
+
log
1
1
+
exp
(
w
⋅
x
i
)
]
=
∑
i
=
1
N
[
y
i
log
[
exp
(
w
⋅
x
i
)
]
+
log
[
1
+
exp
(
w
⋅
x
i
)
]
−
1
]
=
∑
i
=
1
N
[
y
i
(
w
⋅
x
i
)
−
log
(
1
+
exp
(
w
⋅
x
i
)
)
]
L(w)=\sum_{i=1}^N\left [y_i\log[\exp(w\cdot x_i)]+\log\cfrac{1}{1+\exp(w\cdot x_i)}\right ]\\ =\sum_{i=1}^N\left [y_i\log[\exp(w\cdot x_i)]+\log[1+\exp(w\cdot x_i)]^{-1}\right ]\\ =\sum_{i=1}^N\left [y_i(w\cdot x_i)-\log(1+\exp(w\cdot x_i))\right ]
L(w)=i=1∑N[yilog[exp(w⋅xi)]+log1+exp(w⋅xi)1]=i=1∑N[yilog[exp(w⋅xi)]+log[1+exp(w⋅xi)]−1]=i=1∑N[yi(w⋅xi)−log(1+exp(w⋅xi))]
得到似然函数后,再来求最大似然,就是要使得似然函数最大化,要求偏导:
∂
L
(
w
)
∂
w
=
∑
i
=
1
N
y
i
⋅
x
i
−
1
1
+
exp
(
w
⋅
x
i
)
exp
(
w
⋅
x
i
)
⋅
x
i
=
∑
i
=
1
N
y
i
⋅
x
i
−
exp
(
w
⋅
x
i
)
⋅
x
i
1
+
exp
(
w
⋅
x
i
)
\cfrac{\partial L(w)}{\partial w}=\sum_{i=1}^Ny_i\cdot x_i-\cfrac{1}{1+\exp(w\cdot x_i)}\exp(w\cdot x_i)\cdot x_i\\ =\sum_{i=1}^Ny_i\cdot x_i-\cfrac{\exp(w\cdot x_i)\cdot x_i}{1+\exp(w\cdot x_i)}
∂w∂L(w)=i=1∑Nyi⋅xi−1+exp(w⋅xi)1exp(w⋅xi)⋅xi=i=1∑Nyi⋅xi−1+exp(w⋅xi)exp(w⋅xi)⋅xi
总结
1.逻辑斯蒂以输出概率的形式解决了极小距离带来的+1和-1的天壤之别。同时概率也可作为模型输出的置信程度。
2.逻辑斯蒂使得了最终的模型函数连续可微。训练目标与预测目标达成了一致。
3.逻辑斯蒂采用了极大似然估计来估计参数。
最大熵
在我们猜测概率时,不确定的部分我们认为是等可能的,就好像骰子一样,我们知道有6个面,因此认为每个面的概率是1/6,也就是等可能。
换句话说,就是趋向于均匀分布,最大熵使用的就是一个这么朴素的道理:
凡是我们知道的,就把它考虑进去,凡是不知道的,通通均匀分布。
例如,一个骰子,1朝上的概率是1/2,那剩下的面出现的概率就是1/10。
回顾熵的公式为:
H
(
P
)
=
−
∑
x
P
(
x
)
log
P
(
x
)
H(P)=-\sum_xP(x)\log P(x)
H(P)=−x∑P(x)logP(x)
假设我们目标是要求
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X),将这个目标代入熵的公式:
H
(
P
)
=
−
∑
x
P
(
y
∣
x
)
log
P
(
y
∣
x
)
H(P)=-\sum_xP(y|x)\log P(y|x)
H(P)=−x∑P(y∣x)logP(y∣x)
然后要最大化熵,这样才可以得到均匀分布,此时先对熵做些调整,定义条件熵:
H
(
y
∣
x
)
=
H
(
P
)
=
−
∑
x
P
~
(
x
)
P
(
y
∣
x
)
log
P
(
y
∣
x
)
H(y|x)=H(P)=-\sum_x\tilde P(x)P(y|x)\log P(y|x)
H(y∣x)=H(P)=−x∑P~(x)P(y∣x)logP(y∣x)
约束条件
根据训练集包含的所有样本及对应的标签。可以计算:
P
~
(
X
=
x
,
Y
=
y
)
=
v
(
X
=
x
,
Y
=
y
)
N
P
~
(
X
=
x
)
=
v
(
X
=
x
)
N
\tilde P(X=x,Y=y)=\cfrac{v(X=x,Y=y)}{N}\\ \tilde P(X=x)=\cfrac{v(X=x)}{N}
P~(X=x,Y=y)=Nv(X=x,Y=y)P~(X=x)=Nv(X=x)
上面v代表求符合括号中的条件的样本个数,分母是总样本个数。
然后再定义特征函数:
f
(
x
,
y
)
=
{
1
,
if
x
与
y
满
足
某
一
事
实
0
,
if
x
与
y
不
满
足
某
一
事
实
f(x,y)=\begin{cases} &1, \text{ if }x与y满足某一事实 \\ &0, \text{ if }x与y不满足某一事实 \end{cases}
f(x,y)={1, if x与y满足某一事实0, if x与y不满足某一事实
特征函数
f
(
x
,
y
)
f(x,y)
f(x,y)关于经验分布
P
~
(
x
,
y
)
\tilde P(x,y)
P~(x,y)的期望值:
E
P
~
(
f
)
=
∑
x
,
y
P
~
(
x
,
y
)
f
(
x
,
y
)
=
∑
x
,
y
P
~
(
x
)
P
~
(
y
∣
x
)
f
(
x
,
y
)
E_{\tilde P}(f)=\sum_{x,y}\tilde P(x,y)f(x,y)=\sum_{x,y}\tilde P(x)\tilde P(y|x)f(x,y)
EP~(f)=x,y∑P~(x,y)f(x,y)=x,y∑P~(x)P~(y∣x)f(x,y)
而对于真实世界而言,特征函数
f
(
x
,
y
)
f(x,y)
f(x,y)关于模型的期望值为:
E
P
(
f
)
=
∑
x
,
y
P
(
x
,
y
)
f
(
x
,
y
)
=
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
f
(
x
,
y
)
E_{P}(f)=\sum_{x,y} P(x,y)f(x,y)=\sum_{x,y}\tilde P(x)P(y|x)f(x,y)
EP(f)=x,y∑P(x,y)f(x,y)=x,y∑P~(x)P(y∣x)f(x,y)
关于上面两个期望可以这样理解,真实数据的概率分布是
P
(
x
,
y
)
P(x,y)
P(x,y),我们通过抽样出来的样本得到的概率分布是
P
~
(
x
,
y
)
\tilde P(x,y)
P~(x,y),我们希望
P
~
(
x
,
y
)
≈
P
(
x
,
y
)
\tilde P(x,y)\approx P(x,y)
P~(x,y)≈P(x,y),在联合概率分布展开后
P
(
x
,
y
)
=
P
(
x
)
P
(
y
∣
x
)
P(x,y)=P(x)P(y|x)
P(x,y)=P(x)P(y∣x),真实数据的条件概率
P
(
y
∣
x
)
P(y|x)
P(y∣x)是我们要去估计的东西,于是有了上面两个式子。因此最后的约束就是所有的特征函数得到的期望都相等,另外一个是概率求和为1:
max
P
∈
C
H
(
P
)
=
−
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
log
P
(
y
∣
x
)
s
.
t
.
E
P
~
(
f
i
)
−
E
P
(
f
i
)
=
0
i
=
1
,
2
,
⋯
,
n
∑
y
P
(
y
∣
x
)
=
1
\underset{P\in C}{\max}H(P)=-\sum_{x,y}\tilde P(x)P(y|x)\log P(y|x)\\ s.t.\quad E_{\tilde P}(f_i)-E_{P}(f_i)=0 \quad i=1,2,\cdots,n\\ \sum_yP(y|x)=1
P∈CmaxH(P)=−x,y∑P~(x)P(y∣x)logP(y∣x)s.t.EP~(fi)−EP(fi)=0i=1,2,⋯,ny∑P(y∣x)=1
将负号去掉变成最小化问题:
min
P
∈
C
−
H
(
P
)
=
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
log
P
(
y
∣
x
)
s
.
t
.
E
P
~
(
f
i
)
−
E
P
(
f
i
)
=
0
i
=
1
,
2
,
⋯
,
n
∑
y
P
(
y
∣
x
)
=
1
\underset{P\in C}{\min}-H(P)=\sum_{x,y}\tilde P(x)P(y|x)\log P(y|x)\\ s.t.\quad E_{\tilde P}(f_i)-E_{P}(f_i)=0 \quad i=1,2,\cdots,n\\ \sum_yP(y|x)=1
P∈Cmin−H(P)=x,y∑P~(x)P(y∣x)logP(y∣x)s.t.EP~(fi)−EP(fi)=0i=1,2,⋯,ny∑P(y∣x)=1
C是模型集合。
求解过程
用拉格朗日乘子法,先把约束条件加到函数中:
L
(
P
,
w
)
≡
−
H
(
P
)
+
w
0
(
1
−
∑
y
P
(
y
∣
x
)
)
+
∑
i
=
1
n
w
i
(
E
P
~
(
f
i
)
−
E
P
(
f
i
)
)
L(P,w)\equiv-H(P)+w_0\left(1-\sum_yP(y|x)\right)+\sum_{i=1}^nw_i(E_{\tilde P}(f_i)-E_{P}(f_i))
L(P,w)≡−H(P)+w0(1−y∑P(y∣x))+i=1∑nwi(EP~(fi)−EP(fi))
由于
L
(
P
,
w
)
L(P,w)
L(P,w)是凸函数因此下面等式成立:
min
P
∈
C
max
w
L
(
P
,
w
)
=
max
w
min
P
∈
C
L
(
P
,
w
)
\underset{P\in C}{\min}\underset{w}{\max}L(P,w)=\underset{w}{\max}\underset{P\in C}{\min}L(P,w)
P∈CminwmaxL(P,w)=wmaxP∈CminL(P,w)
后面思路就是先求函数对
P
P
P的偏导,再求解
w
w
w
总结
1.最大熵强调不提任何假设,以嫡最大为目标。
2.将终极目标代入熵的公式后,将其最大化。
3.在训练集中寻找现有的约束,计算期望,将其作为约束。使用拉格朗日乘子法得到
P
(
y
∣
x
)
P(y|x)
P(y∣x),之后使用优化算法得到
P
(
y
∣
x
)
P(y|x)
P(y∣x)中的参数
w
w
w。