首先先强烈推荐一篇外文博客Visual Information Theory这个博客的博主colah是个著名的计算机知识科普达人,之前非常著名的那篇LSTM讲解的文章也是他写的。这篇文章详细讲解了信息论中许多基本概念的来龙去脉,而且非常的直观用了大量的图片,和形象化的解释。
信息量
信息量用一个信息所需要的编码长度来定义,而一个信息的编码长度跟其出现的概率呈负相关,因为一个短编码的代价也是巨大的,因为会放弃所有以其为前缀的编码方式,比如字母”a”用单一个0作为编码的话,那么为了避免歧义,就不能有其他任何0开头的编码词了.所以一个词出现的越频繁,则其编码方式也就越短,同时付出的代价也大.
I=log2(1p(x))=−log2(p(x))
信息熵
而信息熵则代表一个分布的信息量,或者编码的平均长度
H(p)=∑xp(x)log2(1p(x))=−∑xp(x)log2(p(x))
即信息量的均值
交叉熵 cross-entropy
交叉熵本质上可以看成,用一个猜测的分布的编码方式去编码其真实的分布,得到的平均编码长度或者信息量
Hp(q)=∑xq(x)log2(1p(x))
如上面的式子,用猜的的p分布,去编码原本真是为q的分布,得到的信息量
交叉熵 cross-entropy在机器学习领域的作用
交叉熵cross-entropy在机器学习领域中经常作为最后的损失函数
为什么要用cross-entropy呢,他本质上相当于衡量两个编码方式之间的差值,因为只有当猜测的分布约接近于真实分布,则其值越小。
比如根据自己模型得到的A的概率是80%,得到B的概率是20%,真实的分布是应该得到A,则意味着得到A的概率是100%,所以
L=−∑iyilog(p(xi))+(1−yi)log(1−p(xi))
在LR中用cross-entry比平方误差方法好在:
- 在LR中,如果用平方损失函数,则损失函数是一个非凸的,而用cross-entropy的话就是一个凸函数
- 用cross-entropy做LR求导的话,得到的导数公式如下
∂L∂θj=−∑i(yi−p(