在机器学习中,我们经常提到熵的概念。例如我们经常使用交叉熵衡量目标(target)与预测值(real)之间的差距,使用KL散度(也称作相对熵)衡量两个概率分布之间的距离。交叉熵和相对熵这些概念其实都来自于信息论,并且自我认为机器学习本身也是对样本信息的学习,另外最近在研究GAN模型和VAE模型(也就是我们常说的生成模型)时,经常会使用到,所以有必要将其单独拿出来作为我学习的一个记录。
要了解交叉熵和相对熵,必须从信息论里面的简单的知识开始。
1、信息(information)
这个是熵和信息增益的基础概念,我觉得对于这个概念的理解更应该把他认为是一用名称,就比如‘鸡‘(加引号意思是说这个是名称)是用来修饰鸡(没加引号是说存在的动物即鸡),‘狗’是用来修饰狗的,但是假如在鸡还未被命名为'鸡'的时候,鸡被命名为‘狗’,狗未被命名为‘狗’的时候,狗被命名为'鸡',那么现在我们看到狗就会称其为‘鸡’,见到鸡的话会称其为‘狗’,同理,信息应该是对一个抽象事物的命名,无论用不用‘信息’来命名这种抽象事物,或者用其他名称来命名这种抽象事物,这种抽象事物是客观存在的。
2、信息量
首先考虑一个离散的随机变量x,当我们观察到这个变量的一个具体值的时候,我们接收到多少信息呢?
我们暂时把信息看做在学习x的值时候的”惊讶程度”(这样非常便于理解且有意义).当我们知道一件必然会发生的事情发生了,比如往下掉的苹果.我们并不惊讶,因为反正这件事情会发生,因此可以认为我们没有接收到信息.但是要是一件平时觉得不可能发生的事情发生了,那么我们接收到的信息要大得多.因此,我们对于信息内容的度量就将依赖于其发生的可能性也即概率分布p(x).
假设是一个离散型随机变量,其取值集合为
,概率分布函数
,则定义事件
的信息量为:
我们把这个公式叫做信息量的公式,前面的负号确保了信息一定是正数或者是0.(低概率事件带来高的信息量).
说明:上面是以2为对数的底,实际上,这个底是能够是其他的数字的.常用的是2和e这两个底.底是2的时候,单位为bit..底是e的时候,单位为nat.
有时候也将其成为自信息(self-information)。可以推广一下。
联合自信息:
条件自信息:
通俗一点来说的话,就是概率论中很简单的推广就行了。有概率基础的话,这个很容易理解。这里因为实际上面使用二维的更多一点就以二维为例子,推广到多维的话也是可以的。
3、信息熵
熵(entropy):上面的是指在某个概率分布之下,某个事件的概率值对应的信息量的公式.那么我们知道每个事件对应的概率值也知道每个事件发生的可能性(即概率),也就知道整个概率分布对应的信息量的平均值.这个平均值就叫做随机变量x的熵。
通常,我们使用熵来衡量所有信息量的期望,即:
这个公式的意思就是,随机变量x是服从p这个分布的,也就是在在p分布下面的平均自信息。也就得到了信息熵。信息熵的本质可以看做是某个分布的自信息的期望。
注意:
1.熵只依赖于X的分布,与X的取值无关,因此服从某个分布的X的熵也可以等价于这个分布的熵.
2.定义0log0=0(因为可能出现某个取值概率为0的情况)
3.熵越大,随机变量的不确定性就越大(因为之前说了,越是不确定,信息量就越大,要是平均信息量很大,那么也可以代表这个变量的不确定性越大)
举一个特殊的例子,比如投掷硬币只有两种可能,字朝上或花朝上。买彩票只有两种可能,中奖或不中奖。我们称之为0-