交叉熵
熵与交叉熵的定义:
信息论中熵的定义:
,其中$X$表示一个分布,$x_i$为该分布中的样本,$p(x_i)$即该样本的概率。
在信息论中,熵是表示信息不确定性的度量。熵越大,表明信息的不确定性越大。
两个分布$p$、$q$的交叉熵定义如下:
多分类问题中的交叉熵损失函数
在神经网路多分类任务时,最后一层采用$soft\max$层输出预测概率。
输出概率向量表示为$p$,训练$ont-hot$标签向量为$L$,交叉熵定义为$H(L,p)$。
则分类的损失函数定义为
因为$L_i$、$q_i$表示一个样本,所以计算交叉熵即计算$-L_ilog(q_i)$。
1
2
3
4import numpy as np
p = np.array([0.2,0.5,0.3])
target = np.array([1,0,0])
H = -1 * np.sum(target * np.log(p)) / 3当分类为二分类时,最后一层通常采用$sigmod$函数(逻辑斯蒂”回归”)。
即为交叉熵损失函数的一个特殊形式。
采用交叉熵损失函数的原因是该损失函数为凸函数,从而可以进行凸优化。
KL(Kullback–Leibler)散度(Divergence)和JS(Jensen–Shannon)散度
KL散度用来衡量两个概率分布$P$、$Q$的差异。
注意:$D_{KL}(P||Q) \not= D_{KL}(Q||P)$。KL散度是不对称的!
JS散度定义如下:
JS散度是对称的。