前言
深度学习开发环境配置好以后,想要重温一下基础统计机器学习的知识,所以借助李航老师的《统计机器学习》,看到Logistic回归与最大熵模型的时候有些问题,模型的输入是特征
x
x
x,模型的输出是类别
y
y
y,模型的损失函数是什么不是很理解。在基本的分类问题中,当模型的函数是
y
=
sign
(
w
x
+
b
)
y=\textbf{sign}(wx+b)
y=sign(wx+b)时,输出与真实类别标签的误差所对应的损失函数就是错误分类的个数,但是不便于求导;所以我们修改模型为
y
=
w
x
+
b
y=wx+b
y=wx+b,模型的输出与真实的类别标签之间的误差对应的损失函数就是距离与类别的乘积。到了logistic回归这里,损失函数的定义我有些分不清。心里面告诉自己是交叉熵,模型输出的是概率分布,损失函数是交叉熵,但是书上的内容跟我想的又不一样,好在后面看明白了,所以赶紧记录下来。
参考:
[1] 李航著和李航, author, 统计学习方法, Di 1 ban. Beijing: 清华大学出版社, 2012.
Logistic回归模型
模型函数为:
y
=
exp
(
w
x
+
b
)
1
+
exp
(
w
x
+
b
)
y=\frac{\exp(wx+b)}{1+\exp(wx+b)}
y=1+exp(wx+b)exp(wx+b),当输入
x
x
x后,输出属于类别1的概率
y
y
y,此时属于类别2的概率自然为:
1
−
y
1-y
1−y,此时样本数据发生的可能性为:
P
=
∏
x
y
y
i
∗
(
1
−
y
)
1
−
y
i
P=\prod_{x} y^{y_i}*(1-y)^{1-y_i}
P=x∏yyi∗(1−y)1−yi
但是我们很容易想到,这个乘积非常之小,不便于计算机运算,所以取个对数。
log
P
=
∑
x
[
y
i
log
y
+
(
1
−
y
i
)
log
(
1
−
y
)
]
\log P=\sum_{x} [y_i\log y+(1-y_i)\log (1-y)]
logP=x∑[yilogy+(1−yi)log(1−y)]
上面不就是交叉熵的定义吗?
∑
P
真实
log
(
P
估计
)
\sum P_{真实}\log(P_{估计})
∑P真实log(P估计),有人会说熵的定义明明是
−
p
log
p
-p\log p
−plogp,这里还少一个负号,别忘了,我们求得是极大似然估计,所以上面要求
max
P
\max P
maxP,因此也就是:
max
log
P
\max \log P
maxlogP,也就是:
max
∑
x
[
y
i
log
y
+
(
1
−
y
i
)
log
(
1
−
y
)
]
\max \sum_{x} [y_i\log y+(1-y_i)\log (1-y)]
max∑x[yilogy+(1−yi)log(1−y)],而我们在深度学习开发中,常见的梯度更新公式是:
w
=
w
−
l
r
∗
w
.
g
r
a
d
w=w-lr*w.grad
w=w−lr∗w.grad,也就是向着函数值减少的方向更新参数,所以为了能使用这个梯度更新公式,所以我们要把目标函数改为最小化:
min
−
P
=
min
−
log
P
=
min
−
∑
x
[
y
i
log
y
+
(
1
−
y
i
)
log
(
1
−
y
)
]
\min -P=\min -\log P=\min -\sum_{x} [y_i\log y+(1-y_i)\log (1-y)]
min−P=min−logP=min−∑x[yilogy+(1−yi)log(1−y)],这就是交叉熵的定义。
所以从极大似然估计到交叉熵的损失函数,我们把统计机器学习的极大似然估计这个看似不是损失函数定义的东西转化为了损失函数交叉熵。
可以简记为:最大似然估计转化为最小交叉熵估计。交叉熵比较的就是模型输出的分布与样本标签的分布之间的差别。
上面的最小交叉熵模型也可以因此称为最大似然模型。
最大熵模型
最大熵模型是在已知概率分布满足的条件以后,估计概率分布。说实话这个简述虽然类比拉格朗日乘子法的确很好理解,但是对于我真正理解最大熵模型一点用都没有。
从上述公式中可以看出,一模一样的极大似然估计的计算公式,取对数以后所得到的对数似然函数竟然跟最大熵模型的对偶函数,所以极大似然估计就等于最大熵模型的对偶函数的极大化。
所以极大似然估计模型既是上面说的最小交叉熵模型,也是下面说的最大熵模型。
也就是当我们计算极大似然估计时,因为概率的乘积很小,不方便计算机运算,那么我们可以通过取对数把它转化为最小交叉熵模型以及最大熵模型。取为最小交叉熵模型或者最大熵模型以后就方便计算了。
使用Logistic回归分类模型
#导入模块
import torch
from matplotlib import pyplot as plt
torch.set_default_tensor_type(torch.cuda.FloatTensor)
# 生成数据
torch.manual_seed(5)
w_0=torch.randn(3)
b_0=torch.randn(1)
x_0=torch.randn(15,3)
y_0=torch.where(torch.mv(x_0,w_0)+b_0>=0,1,-1)
print(f"w_0,b_0,x_0,y_0:{w_0,b_0,x_0,y_0}")
lr=torch.tensor(0.01)
w1=torch.randn(3,requires_grad=True)
b1=torch.randn(1,requires_grad=True)
temp1=torch.where(y_0<0,1,0)
temp2=torch.where(y_0>=0,1,0)
p=torch.exp(torch.mv(x_0,w1)+b1)/(1+torch.exp(torch.mv(x_0,w1)+b1))
p=(1-temp1*p)*temp1+temp2*p
prod=(-torch.log(p)).sum()
flag=prod.data+1
while True:
p=torch.exp(torch.mv(x_0,w1)+b1)/(1+torch.exp(torch.mv(x_0,w1)+b1))
p=(1-temp1*p)*temp1+temp2*p
prod=(-torch.log(p)).sum()
prod.backward()
w1.data=w1.data-lr*w1.grad.data
b1.data=b1.data-lr*b1.grad.data
if(flag-prod.data<0.01):
print(prod.data)
break
flag=prod.data
print(f"w1,b1,prod:{w1,b1,prod}")
print(f"w1,b1,prod:{w1,b1,prod}")
print(torch.exp(torch.mv(x_0,w1)+b1)/(1+torch.exp(torch.mv(x_0,w1)+b1)))
print(y_0)
#创建会有不同id,运算也会有不同id,除了赋值,其他的都会产生不同id。同时只有.data是在id不变的情况下运算的。
#创建时候的id变化、运算时候的id变化。
总结
无论是Logistic模型还是后面的最大熵模型都是输入
x
x
x给出对应的条件类别分布概率,从而可以用极大似然估计求解,同时为了解决极大似然函数的值太小的问题,取对数来对数值进行放大。就可以得到交叉熵估计。最小化交叉熵就可以了。
下面是最大熵模型函数。
这个模型只要设计好模型的参数也是可以直接使用的,其中的
f
i
(
x
,
y
)
f_i(x,y)
fi(x,y)是实值特征函数,它结合上前面的
w
i
w_i
wi,也就是说
算法重新推
理解一个算法最好的方法就是重新推一遍。
条件概率分布所满足的条件是:
∀
k
,
∑
i
=
1
n
∑
j
=
1
m
P
(
x
i
)
^
P
(
y
j
∣
x
i
)
f
k
(
x
i
,
y
j
)
=
∑
i
=
1
n
∑
j
=
1
m
P
(
x
i
,
y
j
)
^
f
k
(
x
i
,
y
j
)
\forall k,\sum_{i=1}^{n}\sum_{j=1}^{m} \widehat{P(x_i)}P(y_{j}|x_{i})f_k(x_i,y_j)=\sum_{i=1}^{n}\sum_{j=1}^{m}\widehat{P(x_i,y_j)}f_k(x_i,y_j)
∀k,i=1∑nj=1∑mP(xi)
P(yj∣xi)fk(xi,yj)=i=1∑nj=1∑mP(xi,yj)
fk(xi,yj)
除了这个条件外还有:
∀
i
,
∑
j
=
1
m
P
(
y
j
∣
x
i
)
=
1
\forall i,\sum_{j=1}^{m}P(y_j|x_i)=1
∀i,j=1∑mP(yj∣xi)=1
目标函数是:
max
H
=
−
∑
i
=
1
n
P
(
x
i
)
^
∑
j
=
1
m
P
(
y
j
∣
x
i
)
log
P
(
y
j
∣
x
i
)
\max H=-\sum_{i=1}^{n}\widehat{P(x_i)}\sum_{j=1}^{m}P(y_j|x_i)\log P(y_j|x_i)
maxH=−i=1∑nP(xi)
j=1∑mP(yj∣xi)logP(yj∣xi)
变为极小化:
min
H
=
∑
i
=
1
n
P
(
x
i
)
^
∑
j
=
1
m
P
(
y
j
∣
x
i
)
log
P
(
y
j
∣
x
i
)
\min H=\sum_{i=1}^{n}\widehat{P(x_i)}\sum_{j=1}^{m}P(y_j|x_i)\log P(y_j|x_i)
minH=i=1∑nP(xi)
j=1∑mP(yj∣xi)logP(yj∣xi)
所以得到的带有拉格朗日乘数的就是:
L
=
∑
i
=
1
n
P
(
x
i
)
^
∑
j
=
1
m
P
(
y
j
∣
x
i
)
log
P
(
y
j
∣
x
i
)
−
∑
k
=
1
t
w
k
[
∑
i
=
1
n
∑
j
=
1
m
P
(
x
i
)
^
P
(
y
j
∣
x
i
)
f
k
(
x
i
,
y
j
)
−
∑
i
=
1
n
∑
j
=
1
m
P
(
x
i
,
y
j
)
^
f
k
(
x
i
,
y
j
)
]
−
∑
i
=
1
n
w
0
i
[
∑
j
=
1
m
P
(
y
j
∣
x
i
)
−
1
]
\begin{align*} L=&\sum_{i=1}^{n}\widehat{P(x_i)}\sum_{j=1}^{m}P(y_j|x_i)\log P(y_j|x_i)-\\ &\sum_{k=1}^{t}w_k[\sum_{i=1}^{n}\sum_{j=1}^{m} \widehat{P(x_i)}P(y_{j}|x_{i})f_k(x_i,y_j)-\sum_{i=1}^{n}\sum_{j=1}^{m}\widehat{P(x_i,y_j)}f_k(x_i,y_j)]-\\ &\sum_{i=1}^{n}w_{0i}[\sum_{j=1}^{m}P(y_j|x_i)-1]\\ \end{align*}
L=i=1∑nP(xi)
j=1∑mP(yj∣xi)logP(yj∣xi)−k=1∑twk[i=1∑nj=1∑mP(xi)
P(yj∣xi)fk(xi,yj)−i=1∑nj=1∑mP(xi,yj)
fk(xi,yj)]−i=1∑nw0i[j=1∑mP(yj∣xi)−1]
这样整个目标函数就确定下来了,接下来就是对其进行求偏导,之前我怎么也想不通是怎么求偏导,甚至还以为是泛函,走了一点弯路,后来才明白,他把每个条件概率,都看做了变量,比如:
P
(
y
1
∣
x
1
)
,
P
(
y
2
∣
x
1
)
,
P
(
y
m
∣
x
n
)
P(y_1|x_1),P(y_2|x_1),P(y_m|x_n)
P(y1∣x1),P(y2∣x1),P(ym∣xn),其中对变量进行求导只要我们把上述累加形式的目标函数展开就可以发现:
L
=
P
(
x
1
)
^
[
P
(
y
1
∣
x
1
)
log
(
P
(
y
1
∣
x
1
)
)
+
⋯
+
P
(
y
m
∣
x
1
)
log
(
P
(
y
m
∣
x
1
)
)
]
+
⋯
+
P
(
x
n
)
^
[
P
(
y
1
∣
x
n
)
log
(
P
(
y
1
∣
x
n
)
)
+
⋯
+
P
(
y
m
∣
x
n
)
log
(
P
(
y
m
∣
x
n
)
)
]
−
w
1
[
P
(
x
1
)
^
P
(
y
1
∣
x
1
)
f
1
(
x
1
,
y
1
)
+
⋯
+
P
(
x
1
)
^
P
(
y
m
∣
x
1
)
f
1
(
x
1
,
y
m
)
+
⋯
+
P
(
x
n
)
^
P
(
y
1
∣
x
n
)
f
1
(
x
n
,
y
1
)
+
⋯
+
P
(
x
n
)
^
P
(
y
m
∣
x
n
)
f
1
(
x
n
,
y
m
)
]
−
⋯
−
w
t
[
P
(
x
1
)
^
P
(
y
1
∣
x
1
)
f
t
(
x
1
,
y
1
)
+
⋯
+
P
(
x
1
)
^
P
(
y
m
∣
x
1
)
f
t
(
x
1
,
y
m
)
+
⋯
+
P
(
x
n
)
^
P
(
y
1
∣
x
n
)
f
t
(
x
n
,
y
1
)
+
⋯
+
P
(
x
n
)
^
P
(
y
m
∣
x
n
)
f
t
(
x
n
,
y
m
)
]
−
w
01
[
P
(
y
1
∣
x
1
)
+
⋯
+
P
(
y
m
∣
x
1
)
−
1
]
−
w
02
[
P
(
y
1
∣
x
2
)
+
⋯
+
P
(
y
m
∣
x
2
)
−
1
]
−
w
0
n
[
P
(
y
1
∣
x
n
)
+
⋯
+
P
(
y
m
∣
x
n
)
−
1
]
+
∑
k
=
1
t
w
k
∑
i
=
1
n
∑
j
=
1
m
P
(
x
i
,
y
j
)
^
f
k
(
x
i
,
y
j
)
\begin{align*} L=&\widehat{P(x_1)}[P(y_1|x_1)\log(P(y_1|x_1))+\cdots+P(y_m|x_1)\log(P(y_m|x_1))]+\cdots+\\ &\widehat{P(x_n)}[P(y_1|x_n)\log(P(y_1|x_n))+\cdots+P(y_m|x_n)\log(P(y_m|x_n))]-\\ &w_1[\widehat{P(x_1)}P(y_1|x_1)f_1(x_1,y_1)+\cdots+\widehat{P(x_1)}P(y_m|x_1)f_1(x_1,y_m)+\cdots+\\ &\widehat{P(x_n)}P(y_1|x_n)f_1(x_n,y_1)+\cdots+\widehat{P(x_n)}P(y_m|x_n)f_1(x_n,y_m)]-\cdots-\\ &w_t[\widehat{P(x_1)}P(y_1|x_1)f_t(x_1,y_1)+\cdots+\widehat{P(x_1)}P(y_m|x_1)f_t(x_1,y_m)+\cdots+\\ &\widehat{P(x_n)}P(y_1|x_n)f_t(x_n,y_1)+\cdots+\widehat{P(x_n)}P(y_m|x_n)f_t(x_n,y_m)]-\\ &w_{01}[P(y_1|x_1)+\cdots+P(y_m|x_1)-1]-w_{02}[P(y_1|x_2)+\cdots+P(y_m|x_2)-1]-\\ &w_{0n}[P(y_1|x_n)+\cdots+P(y_m|x_n)-1]+\sum_{k=1}^t w_k\sum_{i=1}^n\sum_{j=1}^m\widehat{P(x_i,y_j)}f_k(x_i,y_j) \end{align*}
L=P(x1)
[P(y1∣x1)log(P(y1∣x1))+⋯+P(ym∣x1)log(P(ym∣x1))]+⋯+P(xn)
[P(y1∣xn)log(P(y1∣xn))+⋯+P(ym∣xn)log(P(ym∣xn))]−w1[P(x1)
P(y1∣x1)f1(x1,y1)+⋯+P(x1)
P(ym∣x1)f1(x1,ym)+⋯+P(xn)
P(y1∣xn)f1(xn,y1)+⋯+P(xn)
P(ym∣xn)f1(xn,ym)]−⋯−wt[P(x1)
P(y1∣x1)ft(x1,y1)+⋯+P(x1)
P(ym∣x1)ft(x1,ym)+⋯+P(xn)
P(y1∣xn)ft(xn,y1)+⋯+P(xn)
P(ym∣xn)ft(xn,ym)]−w01[P(y1∣x1)+⋯+P(ym∣x1)−1]−w02[P(y1∣x2)+⋯+P(ym∣x2)−1]−w0n[P(y1∣xn)+⋯+P(ym∣xn)−1]+k=1∑twki=1∑nj=1∑mP(xi,yj)
fk(xi,yj)
然后我们对各个变量求偏导,比如:
∂
L
∂
P
(
y
1
∣
x
1
)
=
P
(
x
1
)
^
[
log
(
P
(
y
1
∣
x
1
)
)
+
1
]
−
w
1
P
(
x
1
)
^
f
1
(
x
1
,
y
1
)
−
w
t
P
(
x
1
)
^
f
t
(
x
1
,
y
1
)
−
w
01
\begin{align*} \frac{\partial{L}}{\partial{P(y_1|x_1)}}=&\widehat{P(x_1)}[\log(P(y_1|x_1))+1]-w_1\widehat{P(x_1)}f_1(x_1,y_1)-\\ &w_t\widehat{P(x_1)}f_t(x_1,y_1)-w_{01} \end{align*}
∂P(y1∣x1)∂L=P(x1)
[log(P(y1∣x1))+1]−w1P(x1)
f1(x1,y1)−wtP(x1)
ft(x1,y1)−w01
其他的也是类似:
∂
L
∂
P
(
y
s
∣
x
r
)
=
P
(
x
r
)
^
[
log
(
P
(
y
s
∣
x
r
)
)
+
1
]
−
w
1
P
(
x
r
)
^
f
1
(
x
r
,
y
s
)
−
w
t
P
(
x
r
)
^
f
t
(
x
r
,
y
s
)
−
w
0
r
\begin{align*} \frac{\partial{L}}{\partial{P(y_s|x_r)}}=&\widehat{P(x_r)}[\log(P(y_s|x_r))+1]-w_1\widehat{P(x_r)}f_1(x_r,y_s)-\\ &w_t\widehat{P(x_r)}f_t(x_r,y_s)-w_{0r} \end{align*}
∂P(ys∣xr)∂L=P(xr)
[log(P(ys∣xr))+1]−w1P(xr)
f1(xr,ys)−wtP(xr)
ft(xr,ys)−w0r
令他们等于零,可以得到:
P
(
y
1
∣
x
1
)
=
exp
(
w
01
P
(
x
1
)
^
+
w
t
f
t
(
x
1
,
y
1
)
+
⋯
+
w
1
f
1
(
x
1
,
y
1
)
−
1
)
P(y_1|x_1)=\exp(\frac{w_{01}}{\widehat{P(x_1)}}+w_tf_t(x_1,y_1)+\cdots+w_1f_1(x_1,y_1)-1)
P(y1∣x1)=exp(P(x1)
w01+wtft(x1,y1)+⋯+w1f1(x1,y1)−1)
P ( y s ∣ x r ) = exp ( w 0 r P ( x r ) ^ + w t f t ( x r , y s ) + ⋯ + w 1 f 1 ( x r , y s ) − 1 ) P(y_s|x_r)=\exp(\frac{w_{0r}}{\widehat{P(x_r)}}+w_tf_t(x_r,y_s)+\cdots+w_1f_1(x_r,y_s)-1) P(ys∣xr)=exp(P(xr) w0r+wtft(xr,ys)+⋯+w1f1(xr,ys)−1)
将上述结果带入上式:
L
=
P
(
x
1
)
^
[
P
(
y
1
∣
x
1
)
log
(
P
(
y
1
∣
x
1
)
)
+
⋯
+
P
(
y
m
∣
x
1
)
log
(
P
(
y
m
∣
x
1
)
)
]
+
⋯
+
P
(
x
n
)
^
[
P
(
y
1
∣
x
n
)
log
(
P
(
y
1
∣
x
n
)
)
+
⋯
+
P
(
y
m
∣
x
n
)
log
(
P
(
y
m
∣
x
n
)
)
]
−
w
1
[
P
(
x
1
)
^
P
(
y
1
∣
x
1
)
f
1
(
x
1
,
y
1
)
+
⋯
+
P
(
x
1
)
^
P
(
y
m
∣
x
1
)
f
1
(
x
1
,
y
m
)
+
⋯
+
P
(
x
n
)
^
P
(
y
1
∣
x
n
)
f
1
(
x
n
,
y
1
)
+
⋯
+
P
(
x
n
)
^
P
(
y
m
∣
x
n
)
f
1
(
x
n
,
y
m
)
]
−
⋯
−
w
t
[
P
(
x
1
)
^
P
(
y
1
∣
x
1
)
f
t
(
x
1
,
y
1
)
+
⋯
+
P
(
x
1
)
^
P
(
y
m
∣
x
1
)
f
t
(
x
1
,
y
m
)
+
⋯
+
P
(
x
n
)
^
P
(
y
1
∣
x
n
)
f
t
(
x
n
,
y
1
)
+
⋯
+
P
(
x
n
)
^
P
(
y
m
∣
x
n
)
f
t
(
x
n
,
y
m
)
]
−
w
01
[
P
(
y
1
∣
x
1
)
+
⋯
+
P
(
y
m
∣
x
1
)
−
1
]
−
w
02
[
P
(
y
1
∣
x
2
)
+
⋯
+
P
(
y
m
∣
x
2
)
−
1
]
−
w
0
n
[
P
(
y
1
∣
x
n
)
+
⋯
+
P
(
y
m
∣
x
n
)
−
1
]
+
∑
k
=
1
t
w
k
∑
i
=
1
n
∑
j
=
1
m
P
(
x
i
,
y
j
)
^
f
k
(
x
i
,
y
j
)
=
P
(
x
1
)
^
[
P
(
y
1
∣
x
1
)
(
w
01
P
(
x
1
)
^
+
w
t
f
t
(
x
1
,
y
1
)
+
⋯
+
w
1
f
1
(
x
1
,
y
1
)
−
1
)
+
⋯
+
P
(
y
m
∣
x
1
)
(
w
01
P
(
x
1
)
^
+
w
t
f
t
(
x
1
,
y
m
)
+
⋯
+
w
1
f
1
(
x
1
,
y
m
)
−
1
)
]
+
⋯
+
P
(
x
n
)
^
[
P
(
y
1
∣
x
n
)
(
w
0
n
P
(
x
n
)
^
+
w
t
f
t
(
x
n
,
y
1
)
+
⋯
+
w
1
f
1
(
x
n
,
y
1
)
−
1
)
+
⋯
+
P
(
y
m
∣
x
n
)
(
w
0
n
P
(
x
n
)
^
+
w
t
f
t
(
x
n
,
y
m
)
+
⋯
+
w
1
f
1
(
x
n
,
y
m
)
−
1
)
]
−
w
1
[
P
(
x
1
)
^
P
(
y
1
∣
x
1
)
f
1
(
x
1
,
y
1
)
+
⋯
+
P
(
x
1
)
^
P
(
y
m
∣
x
1
)
f
1
(
x
1
,
y
m
)
+
⋯
+
P
(
x
n
)
^
P
(
y
1
∣
x
n
)
f
1
(
x
n
,
y
1
)
+
⋯
+
P
(
x
n
)
^
P
(
y
m
∣
x
n
)
f
1
(
x
n
,
y
m
)
]
−
⋯
−
w
t
[
P
(
x
1
)
^
P
(
y
1
∣
x
1
)
f
t
(
x
1
,
y
1
)
+
⋯
+
P
(
x
1
)
^
P
(
y
m
∣
x
1
)
f
t
(
x
1
,
y
m
)
+
⋯
+
P
(
x
n
)
^
P
(
y
1
∣
x
n
)
f
t
(
x
n
,
y
1
)
+
⋯
+
P
(
x
n
)
^
P
(
y
m
∣
x
n
)
f
t
(
x
n
,
y
m
)
]
−
w
01
[
P
(
y
1
∣
x
1
)
+
⋯
+
P
(
y
m
∣
x
1
)
−
1
]
−
w
02
[
P
(
y
1
∣
x
2
)
+
⋯
+
P
(
y
m
∣
x
2
)
−
1
]
−
w
0
n
[
P
(
y
1
∣
x
n
)
+
⋯
+
P
(
y
m
∣
x
n
)
−
1
]
+
∑
k
=
1
t
w
k
∑
i
=
1
n
∑
j
=
1
m
P
(
x
i
,
y
j
)
^
f
k
(
x
i
,
y
j
)
=
∑
i
=
1
n
w
0
i
+
∑
k
=
1
t
w
k
∑
i
=
1
n
∑
j
=
1
m
P
(
x
i
,
y
j
)
^
f
k
(
x
i
,
y
j
)
−
P
(
x
1
)
^
∑
i
=
1
m
P
(
y
i
∣
x
1
)
−
⋯
−
P
(
x
n
)
^
∑
i
=
1
m
P
(
y
i
∣
x
n
)
\begin{align*} L=&\widehat{P(x_1)}[P(y_1|x_1)\log(P(y_1|x_1))+\cdots+P(y_m|x_1)\log(P(y_m|x_1))]+\cdots+\\ &\widehat{P(x_n)}[P(y_1|x_n)\log(P(y_1|x_n))+\cdots+P(y_m|x_n)\log(P(y_m|x_n))]-\\ &w_1[\widehat{P(x_1)}P(y_1|x_1)f_1(x_1,y_1)+\cdots+\widehat{P(x_1)}P(y_m|x_1)f_1(x_1,y_m)+\cdots+\\ &\widehat{P(x_n)}P(y_1|x_n)f_1(x_n,y_1)+\cdots+\widehat{P(x_n)}P(y_m|x_n)f_1(x_n,y_m)]-\cdots-\\ &w_t[\widehat{P(x_1)}P(y_1|x_1)f_t(x_1,y_1)+\cdots+\widehat{P(x_1)}P(y_m|x_1)f_t(x_1,y_m)+\cdots+\\ &\widehat{P(x_n)}P(y_1|x_n)f_t(x_n,y_1)+\cdots+\widehat{P(x_n)}P(y_m|x_n)f_t(x_n,y_m)]-\\ &w_{01}[P(y_1|x_1)+\cdots+P(y_m|x_1)-1]-w_{02}[P(y_1|x_2)+\cdots+P(y_m|x_2)-1]-\\ &w_{0n}[P(y_1|x_n)+\cdots+P(y_m|x_n)-1]+\sum_{k=1}^t w_k\sum_{i=1}^n\sum_{j=1}^m\widehat{P(x_i,y_j)}f_k(x_i,y_j)\\ =&\widehat{P(x_1)}[P(y_1|x_1)(\frac{w_{01}}{\widehat{P(x_1)}}+w_tf_t(x_1,y_1)+\cdots+w_1f_1(x_1,y_1)-1)+\cdots+\\ &P(y_m|x_1)(\frac{w_{01}}{\widehat{P(x_1)}}+w_tf_t(x_1,y_m)+\cdots+w_1f_1(x_1,y_m)-1)]+\cdots+\\ &\widehat{P(x_n)}[P(y_1|x_n)(\frac{w_{0n}}{\widehat{P(x_n)}}+w_tf_t(x_n,y_1)+\cdots+w_1f_1(x_n,y_1)-1)+\cdots+\\ &P(y_m|x_n)(\frac{w_{0n}}{\widehat{P(x_n)}}+w_tf_t(x_n,y_m)+\cdots+w_1f_1(x_n,y_m)-1)]-\\ &w_1[\widehat{P(x_1)}P(y_1|x_1)f_1(x_1,y_1)+\cdots+\widehat{P(x_1)}P(y_m|x_1)f_1(x_1,y_m)+\cdots+\\ &\widehat{P(x_n)}P(y_1|x_n)f_1(x_n,y_1)+\cdots+\widehat{P(x_n)}P(y_m|x_n)f_1(x_n,y_m)]-\cdots-\\ &w_t[\widehat{P(x_1)}P(y_1|x_1)f_t(x_1,y_1)+\cdots+\widehat{P(x_1)}P(y_m|x_1)f_t(x_1,y_m)+\cdots+\\ &\widehat{P(x_n)}P(y_1|x_n)f_t(x_n,y_1)+\cdots+\widehat{P(x_n)}P(y_m|x_n)f_t(x_n,y_m)]-\\ &w_{01}[P(y_1|x_1)+\cdots+P(y_m|x_1)-1]-w_{02}[P(y_1|x_2)+\cdots+P(y_m|x_2)-1]-\\ &w_{0n}[P(y_1|x_n)+\cdots+P(y_m|x_n)-1]+\sum_{k=1}^t w_k\sum_{i=1}^n\sum_{j=1}^m\widehat{P(x_i,y_j)}f_k(x_i,y_j)\\ =&\sum_{i=1}^nw_{0i}+\sum_{k=1}^t w_k\sum_{i=1}^n\sum_{j=1}^m\widehat{P(x_i,y_j)}f_k(x_i,y_j)-\widehat{P(x_1)}\sum_{i=1}^mP(y_i|x_1)-\cdots-\\ &\widehat{P(x_n)}\sum_{i=1}^m P(y_i|x_n) \end{align*}
L===P(x1)
[P(y1∣x1)log(P(y1∣x1))+⋯+P(ym∣x1)log(P(ym∣x1))]+⋯+P(xn)
[P(y1∣xn)log(P(y1∣xn))+⋯+P(ym∣xn)log(P(ym∣xn))]−w1[P(x1)
P(y1∣x1)f1(x1,y1)+⋯+P(x1)
P(ym∣x1)f1(x1,ym)+⋯+P(xn)
P(y1∣xn)f1(xn,y1)+⋯+P(xn)
P(ym∣xn)f1(xn,ym)]−⋯−wt[P(x1)
P(y1∣x1)ft(x1,y1)+⋯+P(x1)
P(ym∣x1)ft(x1,ym)+⋯+P(xn)
P(y1∣xn)ft(xn,y1)+⋯+P(xn)
P(ym∣xn)ft(xn,ym)]−w01[P(y1∣x1)+⋯+P(ym∣x1)−1]−w02[P(y1∣x2)+⋯+P(ym∣x2)−1]−w0n[P(y1∣xn)+⋯+P(ym∣xn)−1]+k=1∑twki=1∑nj=1∑mP(xi,yj)
fk(xi,yj)P(x1)
[P(y1∣x1)(P(x1)
w01+wtft(x1,y1)+⋯+w1f1(x1,y1)−1)+⋯+P(ym∣x1)(P(x1)
w01+wtft(x1,ym)+⋯+w1f1(x1,ym)−1)]+⋯+P(xn)
[P(y1∣xn)(P(xn)
w0n+wtft(xn,y1)+⋯+w1f1(xn,y1)−1)+⋯+P(ym∣xn)(P(xn)
w0n+wtft(xn,ym)+⋯+w1f1(xn,ym)−1)]−w1[P(x1)
P(y1∣x1)f1(x1,y1)+⋯+P(x1)
P(ym∣x1)f1(x1,ym)+⋯+P(xn)
P(y1∣xn)f1(xn,y1)+⋯+P(xn)
P(ym∣xn)f1(xn,ym)]−⋯−wt[P(x1)
P(y1∣x1)ft(x1,y1)+⋯+P(x1)
P(ym∣x1)ft(x1,ym)+⋯+P(xn)
P(y1∣xn)ft(xn,y1)+⋯+P(xn)
P(ym∣xn)ft(xn,ym)]−w01[P(y1∣x1)+⋯+P(ym∣x1)−1]−w02[P(y1∣x2)+⋯+P(ym∣x2)−1]−w0n[P(y1∣xn)+⋯+P(ym∣xn)−1]+k=1∑twki=1∑nj=1∑mP(xi,yj)
fk(xi,yj)i=1∑nw0i+k=1∑twki=1∑nj=1∑mP(xi,yj)
fk(xi,yj)−P(x1)
i=1∑mP(yi∣x1)−⋯−P(xn)
i=1∑mP(yi∣xn)
求使得上式达到最大值的
w
0
i
,
w
k
w_{0i},w_k
w0i,wk参数,然后带入上面的
P
(
y
s
∣
x
r
)
P(y_s|x_r)
P(ys∣xr)就是最大熵模型。
上式的表达式为:
L
=
∑
i
=
1
n
w
0
i
+
∑
k
=
1
t
w
k
∑
i
=
1
n
∑
j
=
1
m
P
(
x
i
,
y
j
)
^
f
k
(
x
i
,
y
j
)
−
P
(
x
1
)
^
∑
i
=
1
m
P
(
y
i
∣
x
1
)
−
⋯
−
P
(
x
n
)
^
∑
i
=
1
m
P
(
y
i
∣
x
n
)
=
∑
i
=
1
n
w
0
i
+
∑
k
=
1
t
w
k
∑
i
=
1
n
∑
j
=
1
m
P
(
x
i
,
y
j
)
^
f
k
(
x
i
,
y
j
)
−
P
(
x
1
)
^
∑
i
=
1
m
exp
(
w
01
P
(
x
1
)
^
+
w
t
f
t
(
x
1
,
y
i
)
+
⋯
+
w
1
f
1
(
x
1
,
y
i
)
−
1
)
−
⋯
−
P
(
x
n
)
^
∑
i
=
1
m
exp
(
w
0
n
P
(
x
n
)
^
+
w
t
f
t
(
x
n
,
y
i
)
+
⋯
+
w
1
f
1
(
x
n
,
y
i
)
−
1
)
=
\begin{align*} L=&\sum_{i=1}^nw_{0i}+\sum_{k=1}^t w_k\sum_{i=1}^n\sum_{j=1}^m\widehat{P(x_i,y_j)}f_k(x_i,y_j)-\widehat{P(x_1)}\sum_{i=1}^mP(y_i|x_1)-\cdots-\\ &\widehat{P(x_n)}\sum_{i=1}^m P(y_i|x_n)\\ =&\sum_{i=1}^nw_{0i}+\sum_{k=1}^t w_k\sum_{i=1}^n\sum_{j=1}^m\widehat{P(x_i,y_j)}f_k(x_i,y_j)-\\ &\widehat{P(x_1)}\sum_{i=1}^m\exp(\frac{w_{01}}{\widehat{P(x_1)}}+w_tf_t(x_1,y_i)+\cdots+w_1f_1(x_1,y_i)-1)-\cdots-\\ &\widehat{P(x_n)}\sum_{i=1}^m\exp(\frac{w_{0n}}{\widehat{P(x_n)}}+w_tf_t(x_n,y_i)+\cdots+w_1f_1(x_n,y_i)-1)\\ =& \end{align*}
L===i=1∑nw0i+k=1∑twki=1∑nj=1∑mP(xi,yj)
fk(xi,yj)−P(x1)
i=1∑mP(yi∣x1)−⋯−P(xn)
i=1∑mP(yi∣xn)i=1∑nw0i+k=1∑twki=1∑nj=1∑mP(xi,yj)
fk(xi,yj)−P(x1)
i=1∑mexp(P(x1)
w01+wtft(x1,yi)+⋯+w1f1(x1,yi)−1)−⋯−P(xn)
i=1∑mexp(P(xn)
w0n+wtft(xn,yi)+⋯+w1f1(xn,yi)−1)
把上式改为求最小值的形式
$$\begin{align*}
\frac{\partial{L}}{\partial P}=&\sum_{i=1}^{n}\widehat{P(x_i)}\sum_{j=1}^{m}(\log P(y_j|x_i)+1)-\\
&\sum_{k=1}^{t}w_k[\sum_{i=1}^{n}\sum_{j=1}^{m} \widehat{P(x_i)}f_k(x_i,y_j)]-\\
&\sum_{i=1}^{n}w_{0i}[\sum_{j=1}^{m}]\\
=&\sum_{i=1}^{n}\widehat{P(x_i)}[\sum_{j=1}^{m}(\log P(y_j|x_i)+1)-\sum_{k=1}^{t}w_k\sum_{j=1}^{m} f_k(x_i,y_j)-w_{0i}\sum_{j=1}^{m}]\\
=&\sum_{i=1}^{n}\sum_{j=1}^{m}\widehat{P(x_i)}[(\log P(y_j|x_i)+1)-\sum_{k=1}^{t}w_k f_k(x_i,y_j)-w_{0i}]\\
\end{align*}$$
泛函没有学过,所以对这种以函数为自变量的不是很熟悉,只是从感觉上进行化简的。
所以有:
P ( y j ∣ x i ) = exp ( − 1 + ∑ k = 1 t w k f k ( x i , y j ) + w 0 i ) = exp ( ∑ k = 1 t w k f k ( x i , y j ) ) exp ( 1 − w 0 i ) \begin{align*} P(y_j|x_i)=&\exp(-1+\sum_{k=1}^{t}w_k f_k(x_i,y_j)+w_{0i})\\ =&\frac{\exp(\sum_{k=1}^{t}w_k f_k(x_i,y_j))}{\exp(1-w_{0i})} \end{align*} P(yj∣xi)==exp(−1+k=1∑twkfk(xi,yj)+w0i)exp(1−w0i)exp(∑k=1twkfk(xi,yj))
由于:
∑
j
=
1
m
exp
(
∑
k
=
1
t
w
k
f
k
(
x
i
,
y
j
)
)
exp
(
1
−
w
0
i
)
=
1
\sum_{j=1}^{m}\frac{\exp(\sum_{k=1}^{t}w_k f_k(x_i,y_j))}{\exp(1-w_{0i})}=1
j=1∑mexp(1−w0i)exp(∑k=1twkfk(xi,yj))=1
所以有:
exp
(
1
−
w
0
i
)
=
∑
j
=
1
m
exp
(
∑
k
=
1
t
w
k
f
k
(
x
i
,
y
j
)
)
\exp(1-w_{0i})=\sum_{j=1}^{m}\exp(\sum_{k=1}^{t}w_k f_k(x_i,y_j))
exp(1−w0i)=j=1∑mexp(k=1∑twkfk(xi,yj))