基础数学知识


看到几本关于深度学习,计算机视觉的书。其中一些与专业相关的矩阵,概率基础知识讲得非常有趣。并且这些都是关于机器学习一些绕不过去的基本应用知识。
以下内容部分参考书籍《深度学习与计算机视觉》叶韵 机械工业出版社,书籍《数学之美》吴军,还有维基百科等网络内容。

矩阵

讲到矩阵,大略就是图形学里面图形变换的那些例子。这也是我对矩阵最早直观理解的相关内容。
然后涉及到线性可分和线性不可分,这两个名词已经大概描绘出了这个概念的几何图形。几何上来说,一个n维的线性组合wx+b,代表了n维空间的一个超平面。存在此超平面把点集合X0和X1分开,就是线性可分。
线性不可分就是无法分割,最经典的是一类点集包围着另一类点集。线性可分时,进行仿射变换(线性变换+平移)后,对应的空间和分界线保持不变。也就是说,仿射变换不改变线性可分不可分的性质。
如果低纬度下线性不可分,通过线性变换到更高维度,高纬度下还是一个线性不可分的平面,但是此时,多了一个维度,通过非线性变换来得到这个维度的(比如三维里z轴)的值,在高维里可以实现线性可分。一般为了效果更好,先进行一定的仿射变换。
所以当遇到线性不可分的样本,就可以考虑先仿射变换,再非线性变换。如果还不行就可以考虑更高维或者无限维,SVM核函数的思想就是这个!

概率

条件概率和独立

“独立”就是互相不受影响的两件事。它们两个同时发生的概率就是它们各自概率的乘积。
条件概率的举例非常有趣:假如你住二楼,到了傍晚就会看到广场上有大妈在跳舞。天气晴朗的时候,大妈们性质昂扬,有90%的几率跳舞(10%是考虑到可能会有其他活动阻止了她们)。雨雪天气的时候,大妈们也可能风雨无阻,出现的几率是50%。也就是P(跳舞|不下雨)=0.9,P(跳舞|下雨)=0.5。这就是天气条件下的大妈跳舞概率。
如果这时候我们知道今天 P(下雨)=0.4,
计算今天能看到大妈们雨中舞蹈的概率是P(下雨,跳舞)=P(跳舞|下雨)P(下雨)=0.50.4=0.2。只有20%看到大妈们雨中舞蹈。
再计算今天大妈们来跳舞的概率P(跳舞)=P(跳舞|下雨)P(下雨)+P(跳舞|不下雨)P(不下雨)=0.2+0.9*0.6=0.74。即75%能看到大妈们的舞蹈。

贝叶斯

还是上面的场景,这时候如果你在外地,给家里打电话,得知妈妈在楼下跳舞,计算这个情况家里是在下雨的概率。(虽然跳舞不会影响是否下雨,但我们可以得出一个推断。我们的条件概率不一定代表因果关系。)P(下雨|跳舞)=P(跳舞|下雨)*P(下雨)/P(跳舞)=0.2/0.74=0.27。家里有27%的概率在下雨,比没有“妈妈在跳舞”这个条件下的下雨概率40%有减少。 这就是著名的贝叶斯公式的一个常用形态!

熵

这个内容参考大神吴军的《数学之美》。
“熵”本来是物理学概念,衡量分布的无序程度。越乱,熵越大。在我们信息论中,“信息熵”解决了信息的度量问题,并且量化出信息的作用。
(我们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。……直到1948年,Shannon在他著名的论文“通信的数学原理”中提出了“信息熵”的概念,才解决了信息的度量问题,并且量化出信息的作用。)
信息的信息量与其不确定性有着直接的关系。
对于任何一个随机变量X,他的信息量,也就是信息熵如下:

H(X) = -∑P(x)logP(x)

变量X的不确定性越大,信息熵也就越大。也就是说,如果要把这件事搞清楚,所需要知道的信息量就越多。换句话说,信息熵就是信息的不确定性。
下面详细说明(来自:数学之美——信息的度量 公式需要点击查看):

自信息量 是用来描述某一条信息(自己)的大小。

公式如下:

图1

先举个简单的例子,比如英文中的 26 个字母,假设每个字母出现的概率是相等的。那么其中一个字母的自信息量大小就是

图2

这个公式以 2 为底数,单位为bit,含义是用多少为二进制数能衡量该信息的大小。
我们也可以用其他进制来作为底数,仅仅是单位不同。

信息熵公式:

图3

从公式我们能看出 熵是接收的每条消息中包含的信息的平均量,也被称为平均自信息量。

这个公式怎么理解呢,比如我们要衡量一篇英语文章的信息熵,对于任意一篇文章来说,每个字母出现的频率是不同的,所以

H = -(P1logP1 + P2logP2 + … + P26*logP26)

Pi 表示每个英文字母出现的概率,英语的平均信息熵是 4.03 比特,而中文的信息熵高达 9.65 比特。所以说
为什么很厚的一本英文书翻译成中文后变薄了很多。

条件熵

从上面我们知道了信息熵是用来衡量信息的不确定程度。信息熵越大,说明信息的不确定程度越大,信息熵越小,说明信息的不确定程度越小。
然而,在实际当中,我们常常希望信息熵越小越好,这样我们就能 少费点力气 来确定信息。
举个最简单的栗子:机器翻译,将英语文章翻译为汉语时,最令人头疼的就是 一词多义问题 。比如 Bush 一词是美国总统布什的名字,但它同时也具有灌木丛的意思。在机器翻译中,机器如何判断将 Bush 一词翻译成布什总统还是灌木丛?此刻信息的不确定性较大,就说明信息熵较大。
那么如何减小信息熵呢,最简单的方法就是增加上下文。前面提到的只是一元模型,为降低信息的不确定性也就是减小信息熵的大小,我们引入二元模型或更高阶的模型。

来看看 二元模型——条件熵,结合了条件概率内容。条件熵表示在已知第二个随机变量 X 下第一个随机变量 Y 信息熵的大小。条件上用 H(Y|X) 表示。

在随机变量 X 的基础上我们引入随机变量 Y,假设 Y 和 X 有一定的关系。那么 Y 的信息熵会相对减小。
还是刚才的例子,机器不知道将 Bush 翻译成灌木丛还是总统布什,如果我们先引入 美国,总统 等这类单词作为信息的上下文,如果这些出现,就将 Bush 翻译为总统布什,那么翻译正确的概率就大多了,也就是说信息的不确定性在减小,信息熵也就随之减小。类比,如果是搜索引擎呢,我们搜索 计算机技术 这个关键字出来的结果很多很多,我们也不知道哪个是自己想要的,因为信息的不确定性太大了。那么如果搜索引擎提供给用户上下文让用户进行选择,消除一些不确定性。比如计算机技术中的 编程语言,数据库,操作系统 等相关搜索,那么用户会更容易得到自己想要的搜索结果,用户体验会更好(当然现在的搜索引擎就是这么做的)。这也就是 条件熵 起的作用。

然而只有当随机变量 X 和随机变量 Y 有关系时才能减小不确定性。机器翻译中我们加入 食物 关键字能减小 Bush 翻译的不确定性吗?当然不能。
那么如何衡量两个信息的相关程度,我们引入 互信息。

互信息

维基百科:在概率论和信息论中,两个随机变量的互信息(Mutual Information,简称MI)或转移信息(transinformation)是变量间相互依赖性的量度。
简单来说就是相关程度。

在机器翻译 Bush 这个例子中,我们引入 上下文 来消除不确定性,那么上下文该如何引入呢,在了解互信息后,应该知道,只用引入和 Bush 翻译成总统布什互信息大的一些词即可。比如美国,国会,总统等等。再引入一些和灌木丛互信息大的词如森林,树木等等。在翻译 Bush 时,看看上下文哪类词多就好。

似然函数

似然(likelihood)这个词其实和概率(probability)是差不多的意思,Colins字典这么解释:The likelihood of something happening is how likely it is to happen. 你把likelihood换成probability,这解释也读得通。但是在统计里面,似然函数和概率函数却是两个不同的概念(其实也很相近)。

对于这个函数:

P(x|θ)
输入有两个:x表示某一个具体的数据;θ表示模型的参数。

如果θ是已知确定的,x是变量,这个函数叫做概率函数(probability function),它描述对于不同的样本点x,其出现概率是多少。

如果x是已知确定的,θ是变量,这个函数叫做似然函数(likelihood function), 它描述对于不同的模型参数,出现x这个样本点的概率是多少。

其实这样的一个形式两种状态的形式我们以前也遇到过。f(x,y)=x^y,当x和y分别为已知量时,函数分别为指数函数和幂函数。同一个数学形式,从不同的变量角度观察,可以有不同的名字。
实际应用中,一般采用对数似然函数,便于计算。

最大似然估计(MLE)

我们拿到了一枚特殊硬币,想试试这硬币是不是均匀的。即想知道抛这枚硬币,正面出现的概率(记为θ)为多少。
这是一个统计问题,解决统计问题需要什么? 数据!

于是我们拿这枚硬币抛了10次,得到的数据(x0)是:反正正正正反正正正反。我们想求的正面概率θ是模型参数,而抛硬币模型我们可以假设满足二项分布的。

那么,出现实验结果x0(即反正正正正反正正正反)的似然函数是多少呢?

这是个只关于θ的函数。而最大似然估计,顾名思义,就是要最大化这个函数。我们可以画出f(θ)的图像:

可以看出,在θ=0.7时,似然函数取得最大值。
这样,我们已经完成了对θ的最大似然估计。即,抛10次硬币,发现7次硬币正面向上,最大似然估计认为正面向上的概率是0.7

最大后验概率估计MAP

上面最大似然估计求θ,使似然函数P(x0|θ)最大。(符合既有事实下最可能的概率)
后验概率其实就是上面的贝叶斯的应用。


其中P(x0) 是可以由数据集得到的常量。

其中增加的地方是P(θ),因为考虑到了先验概率。通常,先验概率能从数据中直接分析得到,比如投硬币例子里,我们认为(”先验地知道“)θθ取0.5的概率很大,取其他值的概率小一些。我们用一个高斯分布来具体描述我们掌握的这个先验知识,例如假设P(θ)P(θ)为均值0.5,方差0.1的高斯函数,如下图:

高斯函数
,我们的最大后验概率相比最大似然估计就会向0.5的方向偏移。

最大似然估计(MLE)与最大后验概率(MAP)的区别

MLE和MAP的区别就是MAP就是多了个作为因子的先验概率P(θ)。或者,你也可以认为,MLE就是把先验概率P(θ)认为等于1的特殊MAP,即认为θ是均匀分布。

KL散度

KL散度又称相对熵。
上面似然函数可以衡量数据和分布的相似度。KL散度是另一种常见的衡量相似度的方法。公式如下:

KL散度的计算公式其实是熵计算公式的简单变形,在原有概率分布 P 上,加入我们的近似概率分布 q,计算他们的每个取值对应对数的差:
公式变形:
(转换成与熵有关的形式) =H(p,q)-H(p)

即,p,q交叉熵减去p的熵。
(交叉熵:用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小

)
图为交叉熵公式:
交叉熵 pk 表示真实分布(最应该做的正确,合理决策), qk 表示非真实分布(我们做出的一个不那么合理的决策)。
再回来我们的KL散度(相对熵),
换句话说,KL散度计算的就是我们的(可能有瑕疵的)方案(函数)和最优方案(函数)之间的差值(距离)。
把熵看成量化的编码长度时,有了这样的对比结论:
1)某的信息熵:编码方案完美时,最短平均编码长度的是多少。
2)交叉熵:编码方案不一定完美时(由于对概率分布的估计不一定正确),平均编码长度的是多少。
平均编码长度 = 最短平均编码长度 + 一个增量
3)相对熵:编码方案不一定完美时,平均编码长度相对于最小值的增加值。(即上面那个增量)

为了让相对熵对称起来,更好用,香农和詹森又提出一种新的计算方法,即JS散度:JS散度
(JS散度的最终值域范围是[0,1],相同为0,相反为1.)
相对熵最早用在信号处理上,通过相对熵大小来衡量两个随机信号的差异大小。后来用来衡量信息的相似程度。比如一篇文章是抄袭的,那这两篇文章的词频相对熵就会非常小。(现在有应用对于某问题相似回答的识别整合,衡量两个词是否同义。)
最小化相对熵(KL散度)就等效于最大似然估计(MLE)。

文章目录
  1. 1. 矩阵
  2. 2. 概率
    1. 2.1. 条件概率和独立
    2. 2.2. 贝叶斯
    3. 2.3. 熵
      1. 2.3.1. 条件熵
      2. 2.3.2. 互信息
  3. 3. 似然函数
    1. 3.1. 最大似然估计(MLE)
    2. 3.2. 最大后验概率估计MAP
    3. 3.3. 最大似然估计(MLE)与最大后验概率(MAP)的区别
    4. 3.4. KL散度
,