从信息论的角度谈机器学习

本文先介绍下信息的本质是什么,再介绍下机器学习的本质是什么
接着介绍下机器学习的流程,以及其中的信息论原理。

信息是什么?

信息是消除不确定性的东西。
其中信息量是信息消除消除不确定性的度量。
-- 香农

举例1:世界杯比赛

信息冗余度

信息冗余度 是指一定数量的信号单元可能有的最大信息量与其包含的实际信息量之差

信息冗余度的作用是什么?举例:聊天中的比如,书中的有用的废话,
反例:栗子怎么卖?答:3斤5元; 如果回答 ,如果买3斤,那么就5元一斤;或者 买3斤一共5元,就清晰很多

信息的正交性

信噪比

噪声
定义没找到

信噪比

有噪声环境下的极限信息传输速率C(信道容量)可表达为

香农公式
C=Wlog_{2}(1+S/N)b/s

W为信道的带宽(以Hz为单位);

S/N为信道内信号和噪声的功率之比;

信息在传播过程中,噪声是普遍存在的,并且往往都随机的
任何在获取信息的过程都需要消除噪声。

举例2:一些人的演讲,你觉得废话很多,为什么?
知识点】:越是大家知道的问题或者答案,越没有信息量,越是白噪声,因为它没有消除任务不确定性。

信息传播

信道的大小,决定了通信的效率。

思考:人与人的交流,涉及到信道的带宽(受到互信息的影响),A发送消息给B时,需要考虑,A=>B的带宽的大小,比如PPT汇报时,可以增加冗余度(交叉信息)、降低速率等方式,提升信息交流的效果。


信息熵

E9D472C4-EFC9-431A-8AAC-DF872474A63D.png

其中,不确定性函数 f(x) = -log p(x) ,概率越小,不确定性越大

信息熵 是不确定函数的数学期望,代表了某个事件的统计信息量。

信息论之父克劳德·香农给出的信息熵的三个性质[1]:

  • 单调性,发生概率越高的事件,其携带的信息量越低;
  • 非负性,信息熵可以看作为一种广度量,非负性是一种合理的必然;
  • 累加性,即多随机事件同时发生存在的总不确定性的量度是可以表示为各事件不确定性的量度的和,这也是广度量的一种体现。
    -- 香农从数学上严格证明了满足上述三个条件的随机变量不确定性度量函数具有唯一形式

熵的定义公式中对数函数不局限于采用特定的底,不同的底对应了熵的不同度量单位。如果以 2 22 为底,熵的单位称作比特 (bit),如果以自然对数 e ee 为底,熵的单位称作纳特 (nat)。

从熵的定义中可以看出,熵是关于变量 X XX 概率分布的函数,而与 X XX 的取值没有关系,所以也可以将 X XX 的熵记作 H ( p ) H(p)H(p)

熵越大代表随机变量的不确定性越大,当变量可取值的种类一定时,其取每种值的概率分布越平均,其熵值越大。熵的取值范围为:

0 ≤ H ( p ) ≤ log ⁡ ( n )
0≤H(p)≤log(n)

n 表示取值的种类。

image.png

互信息(信息增益):知道X,给Y的信息量带来多少损失。

两个随机事件的关系,在信息论里的表示,(类比与概率论里有相关性系数)


284163DA-FE7B-4303-A43B-3CF727FD0D32.png

这种看不出来 ,换一种表示,

F6EAA80F-FD2C-4D01-BB71-DB6A198CBA2B.png

H(x) + H(y) - H((x,y))的数学期望

类比于概率和公式
P(x+y) = P(x) + P(y) - P(xy)

当两事件完全独立时,p ( x , y ) = p ( x ) ⋅ p ( y ) ,互信息计算为 0 ,这也是与常识判断相吻合的。

交叉熵

考虑一种情况,对于一个样本集,存在两个概率分布 p ( x ) 和 q ( x ) ,其中 p ( x ) 为真实分布,q ( x ) 为非真实分布。基于真实分布 p ( x ) 我们可以计算这个样本集的信息熵也就是编码长度的期望为:


0707BD11-8F63-4B56-B583-6CC6B57EA873.png

在信息论中,这个量指的是:用「错误」的编码方式 q(而不是 p)去编码服从「正确」 分布q的事件,所需要的 bit 数。

回顾一下负对数项表征了所含的信息量,如果我们用非真实分布 q ( x ) q(x)q(x) 来代表样本集的信息量的话,那么:

0707BD11-8F63-4B56-B583-6CC6B57EA873.png

因为其中表示信息量的项来自于非真实分布 q ( x ) ,而对其期望值的计算采用的是真实分布 p ( x ) ,所以称其为交叉熵 (Cross Entropy)。

结论
交叉熵 >= 信息熵

从这个例子中,我们可以看到交叉熵比原本真实的信息熵要大。直观来看,当我们对分布估计不准确时,总会引入额外的不必要信息期望(可以理解为引入了额外的偏差),再加上原本真实的信息期望,最终的信息期望值要比真实系统分布所需的信息期望值要大。

很多机器学习算法会使用

相对熵

相对熵 (Relative Entropy) 也称 KL 散度,设 p ( x ) 、q ( x ) 是离散随机变量 X XX 的两个概率分布,则 p 对 q 的相对熵为


DA0F5EB0-DC6F-47AC-BBE2-DE8C65408F06.png

相对熵既然是熵,也是满足大于等于 0 的,证明如下:


4FA4CE9E-F7E8-4D45-BFEE-2B81ECF4C5EA.png

和信息熵的关系:


5820ECF1-832E-4E2A-B8DB-7CB0BD8C8EF2.png

KL散度大于0,D
KL(p∥q)≥0,所以 H ( p , q ) ≥ H ( p ) , H(p,q) - H(p)≥0
同时,也更容易的看出来相对熵表示的其实是当我们用一个非真实的分布表示系统时,其得到的信息量期望值相比采用真实分布表示时候多出的部分。

在机器学习中,训练数据的分布已经固定下来,那么真实分布的熵 H ( p ) 是一个定值。最小化相对熵 KL (p∥q) 等价于最小化交叉熵 H ( p , q ) 。

JS散度

由于KL散度是非对称的,使用不够方便,各种信息论大佬做了优化,


8B1F2DAE-22BF-44D6-9944-CA68B9A9896F.png

这个也是GAN网络使用的目标函数

image.png

机器学习是什么?

机器学习是运用大数据技术做统计分析,对外来做预测的系统性方法。

机器学习的流程

定义问题

  1. 确定样本数据x [& y] 有没有y 可分为监督学习和非监督学习,目前大部分的算法都是监督学习
  2. 确定目标 loss(x) = f(x)
    这里的f(x) 在分类问题上一般引入的就是 交叉熵 或者 KL散度,本质上是用一个分布p(真实分布)和另一个分布q(样本分布)的关系,来定义问题。
    交叉熵越小,p 和 q的分布越接近,越可以用f(q)代表f(p)
  3. 确定衡量标准: 准确率 召回率 F1-Score 等等

数据分组(for 监督学习)

分为训练集、验证集、测试集
训练集(train set) —— 用于模型拟合的数据样本(真实信息 + 噪声),我们要做的就是在有噪声影响下,获取真实信息。
验证集(validation set)—— 是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。 通常用来在模型迭代训练时,用以验证当前模型泛化能力(准确率,召回率等),以决定是否停止继续训练。
本质上是通过信息的冗余,或者正交信息来了解模型的正确性。
测试集 —— 用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。

为什么要把数据分那么多份?

训练

训练这个词,其实可以说成 拟合+调参+验证的过程

step 1: 拟合(减少偏差)
step 2: 泛化(减少方差),防止过拟合
step 3: 正则化

image.png

训练过程:


image.png

所有算法,万变不离其中。

参考

链接1
链接2
链接3
链接4

你可能感兴趣的:(从信息论的角度谈机器学习)