本文主要是介绍机器学习基础-22:信息论和信息熵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
信息论和信息熵
机器学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读!
熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。在信息论里则叫信息量,即熵是对不确定性的度量。从控制论的角度来看,应叫不确定性。信息论的创始人香农在其著作《通信的数学理论》中提出了建立在概率统计模型上的信息度量。他把信息定义为“用来消除不确定性的东西”。在信息世界,熵越高,则能传输越多的信息,熵越低,则意味着传输的信息越少。
1 认识信息熵
当我们不知道某事物具体状态,却知道它有几种可能性时,显然,可能性种类愈多,不确定性愈大。不确定性愈大的事物,我们最后确定了、知道了,这就是说我们从中得到了愈多的信息,也就是信息量大。所以,熵、不确定性、信息量,这三者是同一个数值。
- 二进制: 非此即彼,信息论以这种事物的信息量为单位,即比特。
- 四进制:用二分法,分为2组,我们要非此即彼地确定2次,才能确定其状态,所以含有2比特信息量。
- 十进制数:十进制数字有10个,每位数字的信息量: Log(10)/Log(2)=1/0.301=3.32。
- 十六进制的每位数字的信息量是4。
- 如果可能性数目有2的n次方 ( N = 2 n ) (N=2^n) (N=2n):那就是n比特,即信息量等于可能性数目N的‘以2为底的对数’: H = l o g 2 ( N ) = L o g ( N ) / L o g ( 2 ) H=log2(N)=Log(N)/Log(2) H=log2(N)=Log(N)/Log(2)。N=3种可能性时,信息量H=log2(3)=Log(3)/Log(2)=1.585。
2 信息熵的定义
如果有一枚理想的硬币,其出现正面和反面的机会相等,则抛硬币事件的熵等于其能够达到的最大值。我们无法知道下一个硬币抛掷的结果是什么,因此每一次抛硬币都是不可预测的。因此,使用一枚正常硬币进行若干次抛掷,这个事件的熵是一比特,因为结果不外乎两个——正面或者反面,可以表示为0,1编码,而且两个结果彼此之间相互独立。若进行n次独立实验,则熵为n,因为可以用长度为n的比特流表示。[1]但是如果一枚硬币的两面完全相同,那个这个系列抛硬币事件的熵等于零,因为结果能被准确预测。现实世界里,我们收集到的数据的熵介于上面两种情况之间。
另一个稍微复杂的例子是假设一个随机变量X,取三种可能值
x 1 , x 2 , x 3 x_1, x_2, x_3 x1,x2,x3,概率分别为 1 2 , 1 4 , 1 4 \frac{1}{2}, \frac{1}{4}, \frac{1}{4} 21,41,41,那么编码平均比特长度是: 1 2 × 1 + 1 4 × 2 + 1 4 × 2 = 3 2 \frac{1}{2} \times 1 + \frac{1}{4} \times 2 + \frac{1}{4} \times 2 = \frac{3}{2} 21×1+41×2+41×2=23。其熵为3/2。
因此熵实际是对随机变量的比特量和顺次发生概率相乘再总和的数学期望。
熵在信息论中的定义推导过程如下:a
信源的不确定性:信源发出的消息不肯定性越大,收信者获取的信息量就越大。如果信源发送的消息是确切的,则对收信者来说没有任何价值(没有信息量)。衡量不确定性的方法就是考察信源X的概率空间。X包含的状态越多,状态Xi的概率pi越小,则不确定性越大,所含有的信息量越大。
不确定程度用H(X)表示,简称不确定度, 用概率的倒数的对数来度量不肯定程度。一般写成H(X) = log(1/p) = -log§.
自信息量:一个事件(消息)本身所包含的信息量,由事件的不确定性决定的。
即随机事件Xi发生概率为P(xi),则随机事件的自信息量定义为:
表示事件Xi发生后能提供的信息量。事件不同,则他的信息量也不同,所以自信息量是一个随机变量。不能用来表征整个信源的不肯定性。可以用平均自信息量来表征整个信源的不肯定性。
定义信息量为概率的负对数,是很合理的。试考虑一个两种可能性的事物,仅当可能性相等时,不确定性最大,最后我们知道了某一可能性确实发生了,也得到最大的信息量。如果其中某一个可能性很大(另一个必然很小),不确定性就很小。如果可能性大到1,也就是必然要发生的,因为1的对数为0,我们从知道它的发生这件事得到的信息也为0。
- 非负性
- 随机性,是随机变量
- 单调性,概率大自信息量小
- 随机事件的不确定性在数量上等于它的自信息量。
- 单位 以2为底,记作lb,单位比特(bit);以e为底,记作ln,单位奈特(nat);以10为底,记作lg,单位哈脱来(hat)。
信息熵:随机变量自信息量I(xi)的数学期望(平均自信息量),用H(X)表示,即为熵的定义:
即一个值域为{x1, …, xn}的随机变量 X 的熵值 H 定义为:
H ( X ) = E ( I ( X ) ) H(X) = \operatorname{E}(I(X)) H(X)=E(I(X)),
其中,E 代表了期望函数,而 I(X) 是 X 的信息量(又称为信息本体)。I(X) 本身是个随机变量。如果 p 代表了 X 的机率质量函数(probability mass function),则熵的公式可以表示为:
H ( X ) = ∑ i = 1 n p ( x i )   I ( x i ) = − ∑ i = 1 n p ( x i ) log b p ( x i ) H(X) = \sum_{i=1}^n {p(x_i)\,I(x_i)} = -\sum_{i=1}^n {p(x_i) \log_b p(x_i)} H(X)=∑i=1np(xi)I(xi)=−∑i=1np(xi)logbp(xi)
在这里 b 是对数所使用的底,通常是 2, 自然常数 e,或是10。当b = 2,熵的单位是bit;当b = e,熵的单位是 nat;而当 b = 10,熵的单位是 dit。
pi = 0时,对于一些i值,对应的被加数0 logb 0的值将会是0,这与极限一致。
lim p → 0 + p log p = 0 \lim_{p\to0+}p\log p = 0 limp→0+plogp=0.
3 范例
如果有一个系统S内存在多个事件 S = E 1 , . . . , E n S = {E1,...,En} S=E1,...,En,每个事件的机率分布 P = p 1 , . . . , p n P = {p1, ..., pn} P=p1,...,pn,则每个事件本身的信息量为:
I e = − log 2 p i I_e = -\log_2 {p_i} Ie=−log2pi (对数以2为底,单位是比特(bit))
I e = − ln p i I_e = -\ln {p_i} Ie=−lnpi (对数以e为底,单位是纳特/nats)
如英语有26个字母,假如每个字母在文章中出现次数平均的话,每个字母的讯息量为:
I e = − log 2 1 26 = 4.7 I_e = -\log_2 {1\over 26} = 4.7 Ie=−log2261=4.7
而汉字常用的有2500个,假如每个汉字在文章中出现次数平均的话,每个汉字的信息量为:
I e = − log 2 1 2500 = 11.3 I_e = -\log_2 {1\over 2500} = 11.3 Ie=−log225001=11.3
实际上每个字母和每个汉字在文章中出现的次数并不平均,比方说较少见字母(如z)和罕用汉字就具有相对高的信息量。但上述计算提供了以下概念:使用书写单元越多的文字,每个单元所包含的讯息量越大。
熵是整个系统的平均消息量,即:
H s = ∑ i = 1 n p i I e = − ∑ i = 1 n p i log 2 p i H_s = \sum_{i=1}^n p_i I_e = -\sum_{i=1}^n p_i \log_2 p_i Hs=i=1∑npiIe=−i=1∑npilog2pi
这个平均消息量就是消息熵。因为和热力学中描述热力学熵的玻耳兹曼公式形式一样,所以也称为“熵”。
英语文本数据流的熵比较低,因为英语很容易读懂,也就是说很容易被预测。即便我们不知道下一段英语文字是什么内容,但是我们能很容易地预测,比如,字母e总是比字母z多,或者qu字母组合的可能性总是超过q与任何其它字母的组合。如果未经压缩,一段英文文本的每个字母需要8个比特来编码,但是实际上英文文本的熵大概只有4.7比特。如果压缩是无损的,即通过解压缩可以百分之百地恢复初始的消息内容,那么压缩后的消息携带的信息和未压缩的原始消息是一样的多。而压缩后的消息可以通过较少的比特传递,因此压缩消息的每个比特能携带更多的信息,也就是说压缩信息的熵更加高。熵更高意味着比较难于预测压缩消息携带的信息,原因在于压缩消息里面没有冗余,即每个比特的消息携带了一个比特的信息。香农的信息理论揭示了,任何无损压缩技术不可能让一比特的消息携带超过一比特的信息。消息的熵乘以消息的长度决定了消息可以携带多少信息。
如果两个系统具有同样大的消息量,如一篇用不同文字写的同一文章,由于是所有元素消息量的加和,那么中文文章应用的汉字就比英文文章使用的字母要少。所以汉字印刷的文章要比其他应用总体数量少的字母印刷的文章要短。即使一个汉字占用两个字母的空间,汉字印刷的文章也要比英文字母印刷的用纸少。
4 信息增益
已经有了熵作为衡量训练样例集合纯度的标准,现在可以定义属性分类训练数据的效力的度量标准。这个标准被称为“信息增益(information gain)”。简单的说,一个属性的信息增益就是由于使用这个属性分割样例而导致的期望熵降低(或者说,样本按照某属性划分时造成熵减少的期望)。在信息增益中,衡量标准是看特征能够为分类系统带来多少信息,带来的信息越多,该特征越重要。对一个特征而言,系统有它和没它时信息量将发生变化,而前后信息量的差值就是这个特征给系统带来的信息量
更精确地讲,一个属性A相对样例集合S的信息增益Gain(S,A)被定义为:
5 熵的特性
1、熵均大于等于零,即,H_s \ge 0
2、设N是系统S内的事件总数,则熵H_s \le log_2N。当且仅当p1=p2=…=pn时,等号成立,此时系统S的熵最大。
3、联合熵:H(X,Y) \le H(X) + H(Y),当且仅当X,Y在统计学上相互独立时等号成立。
4、条件熵:H(X|Y) = H(X,Y) - H(Y) \le H(X),当且仅当X,Y在统计学上相互独立时等号成立。
系列文章
- 深度学习原理与实践(开源图书)-总目录
- 机器学习原理与实践(开源图书)-总目录
- Github: 机器学习&深度学习理论与实践(开源图书)
参考文献
- [1] Ian Goodfellow, Yoshua Bengio. Deep Learning. MIT Press. 2016.
- [2] 焦李成等. 深度学习、优化与识别. 清华大学出版社. 2017.
- [3] 佩德罗·多明戈斯. 终极算法-机器学习和人工智能如何重塑世界. 中信出版社. 2018.
- [4] 雷.库兹韦尔. 人工智能的未来-揭示人类思维的奥秘. 浙江人民出版社. 2016.
这篇关于机器学习基础-22:信息论和信息熵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!