@(关于机器学习的其他)[KL散度][信息熵][交叉熵]
1、信息量
信息量用一个信息所需要的编码长度来定义,而一个信息的编码长度跟其出现的概率呈负相关,因为一个短编码的代价也是巨大的,因为会放弃所有以其为前缀的编码方式,比如字母”a”用单一个0作为编码的话,那么为了避免歧义,就不能有其他任何0开头的编码词了.所以一个词出现的越频繁,则其编码方式也就越短,同时付出的代价也大.
其实也就可以说一件事情发生概率很小的话,那么当他发生的时候所代表的信息量也更大
I=log2(1p(x))=−log2(p(x)) I = l o g 2 ( 1 p ( x ) ) = − l o g 2 ( p ( x ) )
2、信息熵
而信息熵则代表一个分布的信息量,或者编码的平均长度
- 信息熵代表的是随机变量或整个系统的不确定性,熵越大,随机变量或系统的不确定性就越大。也就是信息量的一个总期望值也叫均值
- 根据真实分布,我们能够找到一个最优策略,以最小的代价消除系统的不确定性,而这个代价大小就是信息熵
- 信息熵衡量了系统的不确定性,而我们要消除这个不确定性,所要付出的【最小努力】(猜题次数、编码长度等)的大小就是信息熵
H(p)=∑xp(x)log2(1p(x))=∑xp(x)log2(p(x)) H ( p ) = ∑ x p ( x ) l o g 2 ( 1 p ( x ) ) = ∑ x p ( x ) l o g 2 ( p ( x ) )
3、交叉熵cross-entropy
交叉熵本质上可以看成,用一个猜测的分布的编码方式去编码其真实的分布,得到的平均编码长度或者信息量
交叉熵,用来衡量在给定的真实分布 p p 下,使用非真实分布 所指定的策略消除系统的不确定性所需要付出的努力的大小
交叉熵越低,这个策略就越好,最低的交叉熵也就是使用了真实分布所计算出来的信息熵,因为此时 ,交叉熵 = 信息熵。这也是为什么在机器学习中的分类算法中,我们总是最小化交叉熵,因为交叉熵越低,就证明由算法所产生的策略最接近最优策略,也间接证明我们算法所算出的非真实分布越接近真实分布。
Hp(q)=∑xp(x)log2(1q(x)) H p ( q ) = ∑ x p ( x ) l o g 2 ( 1 q ( x ) )
3.1 交叉熵 cross-entropy在机器学习领域的作用
交叉熵cross-entropy在机器学习领域中经常作为最后的损失函数
为什么要用cross-entropy呢,根据上面的解释,他本质上相当于衡量两个分布之间的距离,因为只有当猜测的分布约接近于真实分布,则其值越小,下确界为真是分布计算的信息熵大小。
L=−∑iyilog(p(xi))+(1−yi)log(1−p(xi)) L = − ∑ i y i l o g ( p ( x i ) ) + ( 1 − y i ) l o g ( 1 − p ( x i ) )
在LR中用cross-entry比平方误差方法好在:
1. 在LR中,如果用平方损失函数,则损失函数是一个非凸的,而用cross-entropy的话就是一个凸函数
2. 用cross-entropy做LR求导的话,得到的导数公式如下
∂L∂θj