信息量
一个事件x的信息量是:
I
(
x
)
=
−
l
o
g
(
p
(
x
)
)
I(x)=-log(p(x))
I(x)=−log(p(x))
解读:如果一个事件发生的概率越大,那么信息量就越小。如果是1,也就是100%发生,那么信息量为0。
熵
就是对信息量求期望值。
H
(
X
)
=
E
[
I
(
x
)
]
=
−
∑
x
∈
X
p
(
x
)
log
p
(
x
)
H(X)=E[I(x)]=-\sum\limits_{x∈X}p(x)\log p(x)
H(X)=E[I(x)]=−x∈X∑p(x)logp(x)
举例: 如果10次考试9次不及格,一次及格。 假设事件为
x
A
x_A
xA代表及格事件,那么这个事件的熵为:
H
A
(
x
)
=
−
[
p
(
x
A
)
log
(
p
(
x
A
)
)
+
(
1
−
p
(
x
A
)
)
log
(
1
−
p
(
x
A
)
)
]
=
0.4690
H_A(x)=-[p(x_A)\log(p(x_A))+(1-p(x_A))\log(1-p(x_A))]=0.4690
HA(x)=−[p(xA)log(p(xA))+(1−p(xA))log(1−p(xA))]=0.4690
其实也和后续的逻辑回归的二分类的损失函数有类似。
KL散度
相对熵(relative entropy)又称为KL散度(Kullback-Leibler divergence),KL距离,是两个随机分布间距离的度量。记为DKL(p||q)。它度量当真实分布为p时,假设分布q的无效性。
D
K
L
(
p
∣
∣
q
)
=
E
p
[
log
p
(
x
)
q
(
x
)
]
=
∑
x
∈
X
p
(
x
)
log
p
(
x
)
q
(
x
)
=
∑
x
∈
X
[
p
(
x
)
log
p
(
x
)
−
p
(
x
)
log
q
(
x
)
]
=
−
H
(
p
)
−
∑
x
∈
X
p
(
x
)
log
q
(
x
)
=
−
H
(
p
)
+
E
p
[
−
log
q
(
x
)
]
D_{KL}(p||q)=E_p[\log \frac{p(x)}{q(x)}]\\ =\sum\limits_{x∈\mathcal{X}} p(x)\log \frac{p(x)}{q(x)} \\ =\sum\limits_{x∈\mathcal{X}} [p(x)\log p(x)-p(x)\log q(x)]\\ =-H(p)-\sum\limits_{x∈\mathcal{X}} p(x)\log q(x)\\ =-H(p)+E_p[-\log q(x)]
DKL(p∣∣q)=Ep[logq(x)p(x)]=x∈X∑p(x)logq(x)p(x)=x∈X∑[p(x)logp(x)−p(x)logq(x)]=−H(p)−x∈X∑p(x)logq(x)=−H(p)+Ep[−logq(x)]
当p=q的时候,散度为0.
交叉熵
假设有两个分布p,q,则它们在给定样本集上的交叉熵定义如下:
C
r
o
s
s
E
n
t
r
o
p
y
(
p
,
q
)
=
E
p
[
−
log
q
]
=
−
∑
x
∈
X
p
(
x
)
log
q
(
x
)
=
H
(
p
)
+
D
K
L
(
p
∣
∣
q
)
CrossEntropy(p,q)=E_p[-\log q]\\ =-\sum\limits_{x∈\mathcal{X}} p(x)\log q(x)\\ =H(p)+D_{KL}(p||q)
CrossEntropy(p,q)=Ep[−logq]=−x∈X∑p(x)logq(x)=H(p)+DKL(p∣∣q)
当p分布是已知,则熵是常量;于是交叉熵和KL散度则是等价的。最小化交叉熵等价于最小化KL距离。
对应到logistic regression
在逻辑回归中我们用交叉熵来定义损失函数的。那么来再推导一次。详细参考:
https://blog.csdn.net/iterate7/article/details/78992027
p:真实样本分布,服从参数为p的0-1分布,即X~B(1,p)
q:待估计的模型,服从参数为q的0-1分布,即X~B(1,q)
0-1分布,我们把其中一种事件的结果发生的概率定为p,那么另一种结果的概率就是1-p,两者的概率和是1.[贝努力分布]
C
r
o
s
s
E
n
t
r
o
p
y
(
p
,
q
)
=
−
∑
x
∈
X
p(x)
log
q(x)
=
−
[
P
p
(
x
=
1
)
log
P
q
(
x
=
1
)
+
P
p
(
x
=
0
)
log
P
q
(
x
=
0
)
]
=
−
[
p
log
q
+
(
1
−
p
)
log
(
1
−
q
)
]
=
−
[
y
log
h
θ
(
x
)
+
(
1
−
y
)
log
(
1
−
h
θ
(
x
)
)
]
CrossEntropy(p,q)\\=-\sum\limits_{x∈\mathcal{X}} \textbf{p(x)}\log \textbf{q(x)} \\ =-[P_p(x=1)\log P_q(x=1)+P_p(x=0)\log P_q(x=0)]\\ =-[p\log q+(1-p)\log (1-q)]\\ =-[\textbf{y}\log \textbf{h}_{\theta}(x)+(1-\textbf{y})\log (1-\textbf{h}_{\theta}(x))] \\
CrossEntropy(p,q)=−x∈X∑p(x)logq(x)=−[Pp(x=1)logPq(x=1)+Pp(x=0)logPq(x=0)]=−[plogq+(1−p)log(1−q)]=−[yloghθ(x)+(1−y)log(1−hθ(x))]
这里q则是假设函数。
对所有的训练样本平均值交叉熵为:
J
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
log
h
θ
(
x
(
i
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
]
J = -\frac{1}{m}\sum\limits_{i=1}^m[y^{(i)}\log h_{\theta}(x^{(i)})+(1-y^{(i)})\log (1-h_{\theta}(x^{(i)}))]
J=−m1i=1∑m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]
#总结
- 信息量代表的是一种不确定性;
- 熵代表的是不确定性的期望值;
- 确定的事件的熵为0;
- KL散度代表的是利用熵的概念来表示分布之间的距离;
- 交叉熵等价于KL散度;熵是常量,因为训练数据的分布已知。
- 在逻辑回归中用交叉熵作为损失函数的原因是:交叉熵可以等价于KL散度;交叉熵越小,则p和q分布差异越小,拟合更好。
- 用最大似然方法推导的损失函数和最大熵的方式结果是一致的,最大似然方法的推导可以参考:https://blog.csdn.net/iterate7/article/details/78992027
- 实际中,选用交叉熵易于计算。
引用
- https://blog.csdn.net/iterate7/article/details/78992027
- https://en.wikipedia.org/wiki/Cross_entropy
- https://www.zhihu.com/question/65288314/answer/244601417