机器学习

机器学习-信息熵

本文主要是介绍机器学习-信息熵,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

  • 熵   

    熵是信息论中的一个基本概念,也称香农熵或信息熵,它衡量了一个概率分布的随机性程度,或者说它包含的信息量的大小。

    考虑随机变量取某一特定值所包含的信息量大小,假设随机变量X取值x的概率为p(x), 取这个值的概率很小而它又发生了,则包含的信息量大。 考虑下面两个随机事件。

(1)明天要下雨

(2)奥巴马登上火星了

  显然后者所包含的信息量要大于前者,因为后者的概率要远小于前者但却发生了。

    如果定义一个函数h(x)来描述随机变量取值为x时的信息量大小,则h(x) 应为p(x)的单调减函数。但单调减函数有很多,如何确认呢?

     假设有两个相互独立的随机变量X和Y,他们取值为x和y的概率分别为p(x)何p(y)。因为相互独立,因此他们的联合概率为:

  p(x,y) = p(x)p(y)

     它们取值为(x,y)的信息量应该是X取值为x且Y取值为y的信息量之和,即h(x,y) = h(x) +h(y)。

因此要求h(x)能把p(x)的乘法转换为加法运算,可满足的基本函数为对数函数,可以把信息量定义为:

h(x) = -lnp(x)

     取负数是因为要满足h(x)为p(x)的单调减函数。而且由于0\leqslant p(x) \leqslant1 ,lnp(x)值为负的,加上负号后也保证了信息量h(x) \geq0

     上面只考虑了随机变量取某一个值时包含的信息量,随机变量可以取多个值,因此需要计算它取所有各种值时所包含的信息量。随机变量取每一个值有一个概率,因此可以计算它取各个值时信息量的数学期望,这个均值就是熵。

 H(p) = E_{p}[-ln p(x))] = - \sum_{i=1}^{n}p_{i}lnp_{i} 

对于离散型随机变量,当它服从均匀分布时(各概率都一样,随机性最强),熵有极大值。取某一个值的概率为1,取其他值的概率为0时,熵有极小值(此时随机变量退化成确定的变量)。

  • 联合熵

    联合熵是熵对于多维概率分布的推广,它描述了一组随机变量的不确定性,以二维随机变量为例:

   H(X,Y) = - \sum_{x}\sum_{y}p(x,y)lnp(x,y)

  • 交叉熵

    交叉熵与熵类似,但它定义于两个概率分布之上,反映了它们之间的差异程度。对于离散型随机变量X,p(x) 和q(x) 是两个概率分布的概率质量函数,交叉熵定义为:

H(p,q) = E_{p}[-lnq(x)] = -\sum_{x}p(x)lnq(x)

    交叉熵同样是数学期望,衡量了两个概率分布的差异。其值越大,两个概率分布的差异越大;其值越小,则两个概率分布的差异越小。

     交叉熵广泛应用于分类问题的神经网络训练中,用于定义损失函数。

  以softmax处理多分类为例,在进行类别预测时,会使用softmax进行归一化,得到每个类别的概率y*:

y^{*} = \frac{e^{w_{i}x}}{\sum_{i=1}^{k}e^{w_{i}x}}

训练样本的真实标签为One-Hot编码的向量,如果样本属于第i类,则向量的第i分量为1,其他的值均为0,将这个标签记为y.则样本的概率质量函数可以统一写成:

\prod_{i=1}^{k}(y*)^{y_{i}}

可使用最大似然估计确定参数模型,因此似然函数为:

\prod_{j=1}^{l}\prod_{j=1}^{k}( \frac{e^{w_{i}x}}{\sum_{i=1}^{k}e^{w_{i}x}})^{y_{ij}}

其中yij 为第i个训练样本标签向量的第j个分量。对上式取对数(乘法不好算,转加法),添加负号(求极大值转求极小值(最小化损失函数)),可得如下损失函数:

L(\Theta ) = - \sum_{i=1}^{l}\sum_{j=1}^{k}{y_{ij}( \frac{e^{w_{i}x}}{\sum_{i=1}^{k}e^{w_{i}x}})}

目标函数称为交叉损失函数,与交叉熵的定义一致,反映了预测值y*与真实值y的差距,二者均为多项分布。这里对所有训练样本的交叉熵求和,实现时也可以使用均值。

  • KL散度(相对熵)

KL散度也称相对熵,同样用于衡量两个分布之间的差异。其值越大,则两个概率分布的差异越大;当两个概率分布完全相等时,KL散度为0。

  对应两个离散型概率分布p和q,它们之间的KL散度定义为:

D_{KL}(p||q) = \sum_{x}p(x)ln\frac{p(x)}{q(x)}

与交叉熵的关系

D_{KL}(p||q) = \sum_{x}p(x)ln\frac{p(x)}{q(x)} = -\sum_{x}p(x)lnq(x) + \sum_{x}p(x)lnp(x) = H(p,q) - H(p)

 因此KL散度是交叉熵与熵之差。在机器学习中,通常要以概率分布p(x)为目标,拟合一个概率分布q(x)来近似它。此时H(p)是不变的,可以之间用交叉熵H(p,q)来作为优化目标。

  • JS散度

    JS散度衡量两个概率分布之间的差异。对于两个概率分布p和q,它们的JS散度定义为:

D_{JS}(p||q) = \frac{1}{2}D_{KL}(p||m) + \frac{1}{2}D_{KL}(q||m)   

m(x) = \frac{1}{2}(p(x)+q(x))

  • 互信息 

    互信息定义了两个随机变量的依赖程度。对于两个离散型随机变量X和Y,它们之间的互信息定义为:

I(X,Y) = \sum_{x}\sum_{y}p(x,y)ln\frac{p(x,y)}{p(x)p(y)}

其中p(x,y)为联合概率,p(x)和p(y)分别为X和Y的边缘概率。互信息反映了联合概率与边缘概率之积的差异程度。如果两个随机变量相互独立,则p(x,y) =p(x)p(y),因此它们越接近相互独立。

   互信息定义于两个随机变量之间,反映了两个随机变量的依赖程度,即相关性程度。她可用于机器学习中的特征选择及目标函数构造。

与熵的关系:

H(X,Y) = H(X)+H(Y)-I(X,Y)

  • 条件熵

    条件熵定义于两个随机变量之间,用于衡量在已知一个随机变量的取值的条件下另一个随机变量的信息量。其公式为:

H(Y|X)=-\sum_{x}\sum_{y}p(x,y)ln\frac{p(x,y)}{p(x)}

与熵的关系

I(X,Y) = H(x)-H(X|Y)

参考:《机器学习的数学》

这篇关于机器学习-信息熵的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!