softmax与交叉熵损失函数
KL散度
KL散度又叫相对熵=交叉熵-原分布信息熵,其衡量了一个分布与另一个分布之间的差异
D
(
P
∣
∣
Q
)
=
∑
p
(
x
)
log
p
(
x
)
q
(
x
)
D(P||Q) = \sum p(x)\log \frac{p(x)}{q(x)}
D(P∣∣Q)=∑p(x)logq(x)p(x)
其值始终大于零,且分布Q和分布P越相似,则值越小
在信息论编码理论中,一个分布P可以用其最短编码长度 H ( P ) = − ∑ p ( x ) log ( p ( x ) ) H(P )=-\sum p(x)\log(p(x)) H(P)=−∑p(x)log(p(x)) 来计算得到,是其信息量表征的一种方式(详情请看编码理论),若是想使用其他的概率分布估计的编码长度来对分布P进行编码,则有 H ( p , q ) = − ∑ p ( x ) log q ( x ) H(p,q) = -\sum p(x) \log q(x) H(p,q)=−∑p(x)logq(x) 分布Q就是我们用来估计分布P的分布
先看交叉熵损失函数
交叉熵损失函数经常用于分类损失,在网络学习过程中,我们假设训练集经验分布为P,模型预测分布为Q,则可以用KL散度来度量Q对于P的拟合程度。
D
(
P
∣
∣
Q
)
=
H
(
P
,
Q
)
−
H
(
P
)
D(P||Q) = H(P,Q) - H(P)
D(P∣∣Q)=H(P,Q)−H(P)
因为 H(P )为定值,所以其当交叉熵最小时,两个分布就拟合的最好,由此得到了交叉熵损失函数
softmax 函数
从最大熵原理推导softmax类函数
上面已经说明:当我们用一个分布Q去估计另一个分布时,期望这两个分布的相对熵趋于零。但是不同的分布可能导致相同的交叉熵损失,这时我们要应用最大熵原理来选择所含信息量最大的那一个,意思是我们在拟合原有数据集的同时想让新得到的分布具有尽可能大的熵(即编码期望最长的,也可以理解为对一件事情,我们有已知的部分,有未知的部分,我们假设未知的部分各种可能性的概率相同,这就是最大熵原理)。
假设f(x,y)是联合分布域上的示性函数 p ( y i ∣ x i ) = 1 < = = > f ( x i , y i ) = 1 p(y_i|x_i)=1 <==> f(x_i,y_i)=1 p(yi∣xi)=1<==>f(xi,yi)=1 ,表征了训练集的属性.设模型为P(Y|X),则我们希望由训练集的P(X,Y)和P(X),来推导得出P(Y|X)
假设推导出的模型能够很好的表示训练集,则有 ∑ x , y p ~ ( x ) p ( y ∣ x ) f ( x , y ) = ∑ x , y p ~ ( x , y ) f ( x , y ) \sum_{x,y}\tilde{p}(x)p(y|x)f(x,y) = \sum_{x,y}\tilde{p}(x,y)f(x,y) ∑x,yp~(x)p(y∣x)f(x,y)=∑x,yp~(x,y)f(x,y) 带有上标撇的是训练集的分布
下面给出最大熵模型P(Y|X)的定义:
H
(
P
)
=
−
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
log
P
(
y
∣
x
)
H(P) = -\sum_{x,y}\tilde{P}(x)P(y|x) \log{P(y|x)}
H(P)=−x,y∑P~(x)P(y∣x)logP(y∣x)
∑
y
P
(
y
∣
x
)
=
1
\sum_y P(y|x) = 1
y∑P(y∣x)=1
∑
x
,
y
p
~
(
x
)
p
(
y
∣
x
)
f
(
x
,
y
)
=
∑
x
,
y
p
~
(
x
,
y
)
f
(
x
,
y
)
i
=
1
,
2
,
,
,
n
\sum_{x,y}\tilde{p}(x)p(y|x)f(x,y) = \sum_{x,y}\tilde{p}(x,y)f(x,y) i=1,2,,,n
x,y∑p~(x)p(y∣x)f(x,y)=x,y∑p~(x,y)f(x,y)i=1,2,,,n
引入拉格让日乘子求解,会得到对应的 P ( y ∣ x ) = exp ( ∑ w i f i ) n o r m a l i z e d P(y|x) = \frac{\exp(\sum w_i f_i)}{normalized} P(y∣x)=normalizedexp(∑wifi),即是softmax函数形式