信息量
与事件发生概率大小相关,发生概率越大,信息量越大。
设事件 x x x 发生的概率为 p ( x ) p(x) p(x) ,那么该事件的信息量为: I ( x ) = − l o g ( p ( x ) ) I(x) = -log(p(x)) I(x)=−log(p(x)) 。
熵
在信息论和概率统计中,熵表示随机变量不确定性的度量。设随机变量为 X X X ,即事件 X X X 发生的可能性共有 n n n 个,每个可能 x i x_i xi 发生的概率为 p ( x i ) p(x_i) p(xi) ,那么所有信息量的期望就是熵,计算公式为:
H ( X ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) H(X) = - \sum_{i=1}^{n} p(x_i) log (p(x_i)) H(X)=−i=1∑np(xi)log(p(xi))
若事件只有两个可能性,比如投掷硬币出现正反面,熵为:
H ( X ) = − p ( x ) l o g ( p ( x ) ) − ( 1 − p ( x ) ) l o g ( 1 − p ( x ) ) H(X) = -p(x) log (p(x)) - (1-p(x)) log(1-p(x)) H(X)=−p(x)log(p(x))−(1−p(x))log(1−p(x))
相对熵 (KL散度)
假设事件 X X X 有两个分布 P ( x ) P(x) P(x) 和 Q ( x ) Q(x) Q(x) ,比如真实分布和模型训练出来的分布,可以用 KL散度衡量两个分布之间的差异,即模型损失函数:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g p ( x i ) q ( x i ) D_{KL}(p||q) = \sum_{i=1}^{n} p(x_i) log \frac{p(x_i)}{q(x_i)} DKL(p∣∣q)=i=1∑np(xi)logq(xi)p(xi)
可以看出,当真实分布和模型训练出来的分布越接近时,相对熵越小,损失值越小。
交叉熵
化简一下相对熵:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g p ( x i ) q ( x i ) = ∑ i = 1 n p ( x i ) l o g p ( x i ) − ∑ i = 1 n p ( x i ) l o g q ( x i ) = − H ( X ) − ∑ i = 1 n p ( x i ) l o g q ( x i ) D_{KL}(p||q) = \sum_{i=1}^{n} p(x_i) log \frac{p(x_i)}{q(x_i)} = \sum_{i=1}^{n} p(x_i) log \ p(x_i) - \sum_{i=1}^{n} p(x_i) log \ q(x_i) = -H(X) - \sum_{i=1}^{n} p(x_i) log \ q(x_i) DKL(p∣∣q)=i=1∑np(xi)logq(xi)p(xi)=i=1∑np(xi)log p(xi)−i=1∑np(xi)log q(xi)=−H(X)−i=1∑np(xi)log q(xi) 可以看出相对熵恰好是由熵减去一部分组成,后面那部分就是交叉熵,
H ( p , q ) = − ∑ i = 1 n p ( x i ) l o g q ( x i ) H(p, q) = - \sum_{i=1}^{n} p(x_i) log \ q(x_i) H(p,q)=−i=1∑np(xi)log q(xi)
因为 $H(X) $ 是不变的,所以在衡量真实标签与预测值时,可以直接使用交叉熵作为损失函数。
二分类情况下,给定真实标签 y i y_i yi 和预测标签 p i p_i pi ,交叉熵损失函数为:
l o s s = − [ y l o g p + ( 1 − y ) l o g ( 1 − p ) ] loss = -[ylogp + (1-y)log(1-p)] loss=−[ylogp+(1−y)log(1−p)]