什么是模式识别(Pattern Recognition)?

按照Bishop的定义,模式识别就是用机器学习的算法从数据中挖掘出有用的pattern。

人们很早就开始学习如何从大量的数据中发现隐藏在背后的pattern。例如,16世纪的Kepler从他的老师Tycho搜集的大量有关于行星运动的数据中发现了天体运行的规律,并直接导致了牛顿经典力学的诞生。然而,这种依赖于人类经验的、启发式的模式识别过程很难复制到其他的领域中。例如手写数字的识别。这就需要机器学习的技术了。(顺便提一下,开普勒定律在物理学中只是一种唯象的理论,它只对物理事实抽象出概括性的描述,而没有解释内在的原因,也就是牛顿的万有引力定律(其实在更高的层次上,万有引力也是一种唯象的理论,它的解释由量子引力理论给出)。这也意味着,在大数据的机器学习时代,我们挖掘出来的知识更多的也只是一种相关性的规律。)

在手写数字识别的问题中,一部分手写图片作为训练集(training set),被用来学习一个事先给定的模型的参数。另一部分图片作为测试集(test set),被用来评估学习到的模型在新数据上的泛化能力(generalization)。训练集与测试集里的手写图片对应的数字都是已知的。这些数字又被称之为目标向量(target vector),是模型学习的分类目标。一个机器学习算法最终得到的结果,就是一个将输入变量\(x\)(这里的手写数字图片)映射到目标向量空间里的函数\(y(x)\)。

一般来说,在模型训练之前,都有一个数据预处理(preprocess)的过程。例如,在识别手写数字的问题中,我们需要先将训练集里的图片变换到同一个尺寸下,从而使模型的训练更加统一。这个过程也被称之为特征提取(feature extraction)。同时,预处理后的特征往往也会使模型的计算更加高效。要注意的是,如果我们对训练集里的数据进行了预处理,那么对于测试集里的数据,我们也要进行同样的操作。

对于那些训练样本中带有目标向量的机器学习问题,我们称之为有监督学习(supervised learning)。例如前面提到的手写数字识别问题。进一步地,如果目标向量是离散的,我们称之为分类(classification)问题;反之,如果目标向量是连续的,我们称之为回归(regression)问题。

另一类机器学习问题的训练样本仅有输入变量的特征,我们称之为无监督学习。例如对数据中相似样本的归并(聚类)问题。

最后一类机器学习问题被称之为强化学习(reinforcement learning)。它是寻求在一个给定状态下的行为决策,以最大化最终的收益。象棋AI就是一个典型的强化学习的例子。与有监督学习不同,强化学习要解决的问题没有标记好的输出;但往往会通过与环境的互动来改变自己的状态和收益,并因此而学习到什么是一个好的输出。注意,强化学习的每一步决策不仅会影响到当下的收益,还会影响未来的回报。这就涉及到一个信用分配(credit assignment)的问题:即如何将最终的回报分配到导致该回报的每一步的决策上?强化学习另一个特征是在explorationexploitation之间的trade-off:对任意一个的过度偏向都会产生较差的结果。

接下来,我们将从一个具体的例子入手展现机器学习过程里的一些基本概念;然后,我们将简单介绍机器学习理论的三大基础:概率论(probability theory)决策论(decision theory),和信息论(information theory)

一个例子:多项式拟合

作为例子,我们通过一个带随机噪声的产生函数\(sin(2{\pi}x)\)来构造训练数据,并期望一个机器学习算法能从有限的数据中学习到这个正弦函数。这种数据的构造方式暗合真实世界的法则:即数据在遵循一条潜在的规律同时也充满了不确定性。(后面我们会看到,我们是如何在一个概率论的框架下描述这种不确定性,同时给出一个最好的预测。)

我们可以用一个多项式函数来拟合训练数据(这是因为任意一个连续可导的函数总可以通过多项式展开来逼近):\[y(x,w)=w_0+w_1x+w_2x^2+...+w_Mx^M=\sum_{j=0}^{M}{w_jx^j}\]

注意,尽管这个函数是关于\(x\)的非线性函数,但却是关于系数\(w\)的线性函数。类似多项式函数这种相对于未知参数是线性的模型,具有一些重要的性质,我们称之为线性模型(linear model)

我们通过最小化一个误差函数(error function)来求解模型的参数。误差函数是关于参数\(w\)的一个函数;它衡量我们的预测值\(y(x,w)\)与真实值\(t\)的差距。一个常用的误差函数是误差平方和,它的基本形式如下:\[E(w)=\frac{1}{2}\sum_{n=1}^{N}{\{y(x_n,w)-t_n\}^2}\]

在后面介绍到最大似然法时,我们会看到误差函数为什么会取这种形式

令这个函数对\(w\)的一阶偏导等于0,得到\(M+1\)个一阶方程组,就可以求解出最优拟合参数\(w^*\)了。

然而,我们还有一个问题:如何确定模型的阶数\(M\)?这也被称之为模型选择(model comparison or model selection)问题。我们可以通过评估模型在新数据集上的泛化能力来衡量模型的好坏。具体来说,我们从训练集中抽取一部分数据作为验证集(validation set);对于\(M\)的每一种可能取值,我们先用余下的训练集找到最优的参数\(w^*\),然后再在验证集上评估这个模型的误差\(E(w^*)\)(或者是root-mean-square error:\(E_{RMS}=\sqrt{{2E(w^*)}/{N}}\))。我们将选择泛化误差最小的模型作为最终的模型。

通过这种方式,我们发现,\(M\)取值过低,模型有可能会欠拟合(under-fitting);而\(M\)取值过高,模型又有可能会过拟合(over-fitting)

这是为什么呢?

理论上,一个低阶的多项式函数只是更高阶的多项式函数的一个特例;而一个高阶的多项式也更加逼近真实的产生函数\(sin(2{\pi}x)\)。因此,高阶的模型似乎没道理比低阶模型的表现更差。

但是,如果我们仔细观察那些过拟合的高阶模型学习到的参数\(w\),会发现它们的量纲往往异乎寻常的大。这使得模型虽然可以准确地预估训练集中的数据,但也展现出了巨大的波动性。换句话说,强大的高阶模型过多地学习了训练数据中的噪声。如果我们引入更多的训练数据,这种过拟合的问题会得到一定程度的缓解。

简而言之,虽然模型越复杂,解释能力也越强,但我们往往需要更多的数据来训练一个复杂的模型。(后面会发现,这种过拟合本质上是由于最大似然法这类对模型参数进行点估计的算法所带来的bias造成的。通过一种贝叶斯的方法,我们可以从根本上避免过拟合的问题。)

一种在有限的数据集下也能训练一个高阶模型的技术是正则化(regularization),即在传统的误差函数中引入一个对参数\(w\)量纲的惩罚项,以抑制\(w\)的过度发散:\[\tilde{E}(w)=\frac{1}{2}\sum_{n=1}^{N}{\{y(x_n,w)-t_n\}^2}+\frac{\lambda}{2}||w||^2\]

其中,\(||w||^2=w_1^2+w_2^2+...+w_M^2\),参数\(\lambda\)控制正则项和误差项的相对权重。对于一个合适的\(\lambda\)取值,我们用较少的数据也可以训练出一个泛化的高阶模型。

然而,过低或过高的\(\lambda\)依然会导致过拟合或欠拟合的问题。本质上,正则化只是将对模型复杂度的控制由模型的阶数\(M\)转移到了惩罚因子\(\lambda\)上。我们依然需要一个验证集来优化模型的复杂度。

概率论

在模式识别和机器学习的研究领域里,不确定性(uncertainty)是一个非常核心的概念。接下来要介绍的概率论为不确定性的量化提供了一个统一的框架,因此也构成了整个机器学习研究的理论基础。

基本知识点

概率的基本定义由频率学派给出:在一系列试验中某一事件发生的频率称之为该事件发生的概率。从这个定义出发,我们很容易得到概率论的两个基本法则:sum ruleproduct rule

\[p(X)=\sum_{Y}{p(X,Y)}\]

\[p(X,Y)=p(Y|X)p(X)\]

其中,\(p(X)\)对应\(X\)发生的边际概率(marginal probability);\(p(X,Y)\)对应\(X\)和\(Y\)同时发生的联合概率(joint probability);\(p(Y|X)\)对应给定\(X\)下\(Y\)发生的条件概率(conditional probability)。这两个公式构成了我们将要用到的所有概率论知识的基础。

由product rule出发,同时结合联合概率的对称性,我们立即得到一个十分重要的公式,贝叶斯定理(Bayes' theorem)

\[p(Y|X)=\frac{p(X|Y)p(Y)}{p(X)}\]

贝叶斯定理给出了后验概率(posterior probability)——\(p(Y|X)\)和先验概率(prior probability)——\(p(Y)\)之间的关系。

贝叶斯概率

然而,并非所有随机事件的发生都是可重复的。因此,我们很难用频率学派的观点解释诸如明天有雨这类事件发生的概率。对这类事件的不确定性的衡量,就是概率的贝叶斯解释(Bayesian view)。

回到之前的多项式拟合的例子。从频率学派的角度来看,我们将目标变量\(t\)视为一个随机变量似乎更加合理(可以通过固定输入变量\(x\)的值统计\(t\)的频率分布)。而从贝叶斯学派的观点来看,我们可以将模型的参数\(w\)(甚至是整个模型)视为一个随机变量,衡量它们的不确定性(尽管\(w\)是不可重复的)。

具体来说,假设我们知道了\(w\)的先验概率分布\(p(w)\),那么,通过贝叶斯公式,我们可以将这一先验概率转化为给定观测数据后的后验概率\(p(w|D)\):

\[p(w|D)=\frac{p(D|w)p(w)}{p(D)}\]

从而,我们得到了一个已知数据\(D\)下关于模型参数\(w\)的不确定性的定量表达。

在这个公式里,概率分布\(p(D|w)\)又被称为似然函数(likilihood function),它给出了不同\(w\)下数据集\(D\)发生的概率。从而,贝叶斯定理又可以写成:\[posterior \propto likelihood \times prior\]

无论是在频率学派还是贝叶斯学派的框架下,似然函数都扮演着重要的角色。不同的是,频率学派认为,模型的参数是固定的,观测到的数据则是给定参数下的一个随机事件。因此,他们通过一种叫做最大似然法(maximum likelihood)的方法来预估参数:即寻找使观测到的数据集\(D\)发生的概率最大的参数\(w\)(后面我们将会看到最大似然法与前面提到的最小化误差函数的关系)。而贝叶斯学派则认为模型的参数服从一个概率分布,因此,似然函数只是获取后验概率的桥梁。

(关于频率学派和贝叶斯学派孰优孰劣的问题,各家各执一言,此处不做讨论。只需知道,PRML这本书更多的是介绍贝叶斯学派的观点,而Andrew在Coursera上的课则是频率学派的经典观点。)

高斯分布

关于高斯分布的定义和性质,很多概率论的书上都有介绍,这里不再赘述。本小节主要介绍如何运用频率学派的最大似然法从一堆服从高斯分布的数据中拟合出分布的参数:\(\mu\)与\(\sigma^2\)。

由独立同分布假定,我们的数据集\(\mathbf{x} = (x_1,...,x_D)^T\)在给定参数\(\mu\)和\(\sigma^2\)下的条件概率分布为:

\[p(\mathbf{x}|\mu,\sigma^2)=\prod_{n=1}^N{\mathcal{N}(x_n|\mu,\sigma^2)}\]

这就是高斯分布的似然函数。

对这个似然函数取对数(后面我们会看到如何从信息熵的角度来解释这一行为),我们得到:\[\ln{p(\mathbf{x}|\mu,\sigma^2)}=-\frac{1}{2\sigma^2}\sum_{n=1}^N{(x_n-\mu)^2}-\frac{N}{2}\ln{\sigma^2}-\frac{N}{2}\ln{2\pi}\]

将上式分别对\(\mu\)和\(\sigma^2\)求导,并令其等于0,我们得到了\(\mu\)和\(\sigma^2\)的最大似然预估:

\[\mu_{ML}=\frac{1}{N}\sum_{n=1}^N{x_n}\]

\[\sigma^2_{ML}=\frac{1}{N}\sum_{n=1}^N{(x_n-\mu_{ML})^2}\]

等式右边都是关于数据集\(\mathbf{x}\)的函数。

可以证明,通过这种方法得到的参数预估是有偏(bias)的:

\[E[\mu_{ML}]=\mu\]

\[E[\sigma^2_{ML}]=(\frac{N-1}{N})\sigma^2\]

也就是说,我们会低估(underestimate)真实的分布方差。一般来说,模型的参数越多(复杂度越高),由最大似然法预估出来的参数越不准确。而这种有偏的预估,是导致模型过拟合的根本原因(过度拟合了训练样本,而偏离了真实世界)。不过,注意到随着样本数\(N\)的增长,这种偏差会越来越小。这就解释了,为什么增大训练样本的容量可以一定程度上缓解过拟合的问题。

回到多项式拟合

接下来,我们将回到多项式拟合的例子,看看在统计学的视角下,频率学派和贝叶斯学派各自是如何解决这个问题的。

在多项式拟合的问题中,我们的目标是,在由\(N\)个输入变量\(\mathbf{x}=(x_1,...,x_N)^T\)及其对应的目标值\(\mathbf{t}=(t_1,...,t_N)^T\)构成的训练集的基础上,对新输入变量\(x\)的目标值\(t\)做出预测。用概率语言来描述,我们可以将目标变量\(t\)的这种不确定性用一个概率分布来表达。我们假定,\(t\)服从以\(y(x,w)\)为均值的高斯分布

\[p(t|x,w,\beta)=\mathcal{N}(t|y(x,w),\beta^{-1})\]

有了\(t\)的概率分布,我们就可以用最大似然法在训练集上求解模型的参数(\(w\)和\(\beta\)):

\[\ln{p(\mathbf{t}|\mathbf{x},w,\beta)} = -\frac{\beta}{2}\sum_{n=1}^N{\{y(x_n,w)-t_n\}^2}+\frac{N}{2}\ln{\beta}-\frac{N}{2}\ln{2\pi}\]

我们发现,略去与\(w\)无关的后两项后,我们得到了前文提到的误差函数!也就是说,对于\(w\)的求解而言,最大似然法等价于最小化误差平方和!我们的误差函数是在目标变量服从高斯分布的假定下用最大似然法推导出来的一个自然结果!(注意这一结论与\(y(x,w)\)的具体形式无关)

一旦得到了\(w\)和\(\beta\)的最大似然估计,我们就可以对新变量\(x\)的目标值做出预估。注意,这里是对\(t\)的分布预估(predictive distribution),而非点估计(point estimate)。(在后面的decision theory章节中会介绍如何从预估的分布得到预测值)

以上是频率学派对多项式拟合算法的解释。

而在贝叶斯学派看来,参数\(w\)也是一个随机变量。假定\(w\)的先验分布是一个服从均值为0的多元高斯分布:

\[p(w|\alpha)=\mathcal{N}(w|0,\alpha^{-1}I)\]

其中,\(\alpha\)被称为模型的超验参数(hyperparameters)

则由贝叶斯定理,\(w\)在给定训练集上的后验分布为:

\[p(w|\mathbf{x},\mathbf{t},\alpha,\beta) \propto p(\mathbf{t}|\mathbf{x},w,\alpha,\beta) \times p(w|\alpha)\]

我们可以通过最大化这个后验概率来找出最合适的\(w\)。这个方法被称之为最大后验概率法(maximum posterior,简称MAP)。对上式取对数,并代入似然函数和先验概率的分布函数后,我们发现,最大后验概率等价于最小化带正则项的平方误差函数:

\[\frac{1}{2}\sum_{n=1}^N{\{y(x_n,w)-t_n\}^2}+\frac{\alpha}{2\beta}w^Tw\]

(这句话也可以这么理解:通过引入均值为0的高斯分布先验函数,我们对\(w\)的大小进行了限定。)

也就是说,带正则项的误差函数,是在目标变量、模型参数均服从高斯分布的假定下,用最大后验概率法推导出来的一个自然结果!同样的,这个结论与\(y(x,w)\)的具体形式无关。

不过,虽然我们引入了\(w\)的先验概率分布,MAP依然只是对\(w\)的点估计(类似最大似然法,这种方法最大的问题在于给出的估计值往往是有偏的,即\(E[w_{MAP}] \neq w\))。而贝叶斯学派的精髓在于,从\(w\)的后验概率分布出发,我们可以进一步得到在给定训练集\(\mathbf{x}\)和\(\mathbf{t}\)的条件下,新变量\(x\)的目标值\(t\)的后验概率分布\(p(t|x,\mathbf{x},\mathbf{t})\):

\[p(t|x,\mathbf{x},\mathbf{t})=\int{p(t|x,w)p(w|\mathbf{x},\mathbf{t})dw}\]

(假定\(\alpha\)和\(\beta\)都是模型的超验参数)

总结一下频率学派和贝叶斯学派的区别:

---- 频率学派 贝叶斯学派
目标变量\(t\) $p(t\ x,w)$
模型参数\(w\) 显式;常量 隐式;随机变量
模型优化算法 最大似然法 最大后验概率法 [^1]
优化目标函数 \(\frac{1}{2}\sum_{n=1}^N{\{y(x_n,w)-t_n\}^2}\) \(\frac{1}{2}\sum_{n=1}^N{\{y(x_n,w)-t_n\}^2}+\frac{\alpha}{2\beta}w^Tw\)

决策理论(Decision Theory)

一个具体的机器学习问题的解决包括两个过程:推断(inference)决策(decision)。前者在概率学的框架下告诉我们\(p(\mathbf{x},t)\)的分布;后者则借助决策理论(decision theory)告诉我们在这个联合概率分布下的最优反应(例如对\(t\)的预估等)。

一旦解决了推断的问题,决策的过程就显得异常简单。

分类问题的决策

对于分类问题而言,我们寻求一个将输入变量\(\mathbf{x}\)映射到某一个分类上的法则。这个法则将\(\mathbf{x}\)的向量空间划分成了不同的区域\(\mathcal{R}_k\):我们称之为decision region;位于\(\mathcal{R}_k\)里的点\(\mathbf{x}\)都被映射到类\(C_k\)上。相应的,decision region之间的边界我们称之为decision boundariesdecision surfaces

如何找到这个决策面呢?

假定我们的决策目标是使得误分类的概率尽可能地小,借助概率论,我们有:

\[p(mistake)=1-p(correct)=1-\sum_{k=1}^K{\int_{\mathcal{R}_k}}{p(\mathbf{x},C_k)d\mathbf{x}}\]

显然,为了让\(p(mistake)\)尽可能地小,\(\mathcal{R}_k\)应是由那些使得\(p(\mathbf{x},C_k)\)最大的点构成的集合(即对于\(\mathbf{x} \in \mathcal{R}_k\),满足\(p(\mathbf{x},C_k) \geq p(\mathbf{x},C_j)\))。由于\(p(\mathbf{x},C_k)=p(C_k|\mathbf{x})p(\mathbf{x})\),也就是说我们应将\(\mathbf{x}\)映射到后验概率\(p(C_k|\mathbf{x})\)最大的类\(C_k\)上。

但真实的问题也许要更复杂一些。例如对癌症患者的诊断:错误的将一个癌症患者诊断为健康,远比将一个健康的人误诊为癌症要严重的多。因此,就有了损失矩阵(loss function)的概念:损失矩阵\(L\)中的元素\(L_{kj}\)用来评估当类\(C_k\)被误分类为\(C_j\)时带来的损失。显然,对任意的类\(C_k\),总有\(L_{kk}=0\)。

此时,我们的决策目标是最小化期望损失函数。同样地借助概率论的知识,我们有:

\[E[L] = \sum_k \sum_j \int_{\mathcal{R}_j}{L_{kj}p(\mathbf{x},C_k)d\mathbf{x}}\]

类似地,我们选取那些使\(\sum_k L_{kj}p(\mathbf{x},C_k)\)最小的点\(\mathbf{x}\)构成的集合为类\(C_j\)的decision region \(\mathcal{R}_j\)(即对于\(\mathcal{R}_j\)里的\(\mathbf{x}\),总有\(\sum_k L_{kj}p(\mathbf{x},C_k) \leq \sum_k L_{ki}p(\mathbf{x},C_k)\))。

再次回顾推断过程

在前面对分类问题决策阶段的讨论中,我们发现,我们可以在推断阶段预估\({\mathbf{x}}\)和\(C_k\)的联合概率分布\(p(\mathbf{x},C_k)\),也可以预估\(C_k\)的后验条件概率\(p(C_k|\mathbf{x})\)。事实上,我们也可以将两个阶段整合为一个过程,直接学习\({\mathbf{x}}\)到\(C_k\)的映射。这三种不同的解决问题的思路,对应了三种不同的模型:

  1. 产生式模型(generative models):产生式模型是指那些在推断阶段隐式或显式地对输入变量\(\mathbf{x}\)的分布进行了建模的模型。由贝叶斯公式,我们可以用\(\mathbf{x}\)的条件概率\(p(\mathbf{x}|C_k)\)和\(C_k\)的先验概率\(p(C_k)\)计算\(C_k\)的后验概率:\[p(C_k|\mathbf{x})=\frac{p(\mathbf{x}|C_k)p(C_k)}{p(\mathbf{x})}\]在得到\(C_k\)的后验概率后,进入决策阶段分类。这个过程等价于对联合概率分布\(p(\mathbf{x},C_k)\)进行建模(上式中的分子)。
  2. 判别式模型(discriminative models):判别式模型是指那些在推断阶段直接对目标变量的后验概率进行建模的模型。例如前面提到的多项式拟合模型。
  3. 判别式函数(discriminant function):通过一个判别式函数\(f(\mathbf{x})\)可以将输入变量\(\mathbf{x}\)直接映射到一个类标上;省去了对概率分布的预估。Andrew在Coursera上的课程里提到的假说(Hypothesis)就是这类函数。

总的来说,三类模型各有利弊。相对来讲,产生式模型最为复杂,也需要最多的训练数据;但是由于可以对输入变量的分布进行预估,功能上也最为强大。而我们用的最多的一般是判别式模型。由于引入了对后验概率的预估,使得我们可以方便的处理非平衡样本问题,以及多模型的融合。这是简单的判别式函数所不具备的。

回归问题的决策

与分类问题类似,回归问题的决策阶段也是要从目标变量的概率分布中选择一个特定的预估值,以最小化某个损失函数。回归问题的损失函数为:\[E[L] = \int\int L(t,y(\mathbf{x}))p(\mathbf{x},t)d\mathbf{x}dt\] 积分项的意思是,对于输入变量\(\mathbf{x}\)和真实目标值\(t\),我们的预估目标值\(y(\mathbf{x})\)带来的期望损失。一般\(L(t,y(\mathbf{x}))\)被定义为平方误差和的形式。

最小化这个损失函数我们得到解:\(y(\mathbf{x})=E_t[t|\mathbf{x}]\)。这个条件期望也被称之为回归函数(regression function)。在前面的多项式拟合的问题中,我们假定了目标变量\(t\)服从一个高斯分布,并用最大似然法(或Bayesian的方法)估计出了模型的参数;而通过这里的回归函数,我们才最终得到了\(t\)的一个预估值。

类似地,回归问题也有三种建模方式:产生式模型,判别式模型,和判别式函数。这里不再赘述。

信息论(Information Theory)

如果说概率论给出了对不确定性的一个描述,信息论则给出了对不确定性程度的一种度量。这种度量就是信息熵。

信息熵

我们可以从三种不同的角度理解信息熵的定义。

  1. 概率学。如果我们问一个随机事件的发生会传递多少信息量?显然,一个确定事件的发生传递的信息量为0,而一个小概率事件的发生会传递更多的信息量。因此,我们对信息量(记作\(h(x)\))的定义应该与随机事件发生的概率\(p(x)\)有关。另一方面,两个独立事件同时发生所传递的信息量应该是这两个事件各自发生的信息量之和,即\(h(x,y)=h(x)+h(y)\)。由这两个性质出发,我们可以证明,信息量\(h(x)\)必然遵循\(p(x)\)的对数形式:\[h(x) = -log_{2}p(x)\] 进一步地,我们定义一个随机变量\(x\)的信息熵为其传递的信息量的期望值:\[H[x]=-\sum p(x)log_{2}p(x)\]
  2. 信息学。在对信息熵的第一种解读中,我们并没有解释为什么对信息量的定义采用了以自然数2为底的对数。Shannon给出了一个信息学的解释:信息熵等价于编码一个随机变量的状态所需的最短位数(bits)。对于一个均匀分布的随机变量,这是显而易见的;而对于非均匀分布的随机变量,我们可以通过对高频事件采用短编码,低频事件采用长编码的方式,来缩短平均编码长度。
  3. 物理学。在热力学中我们也接触到熵的定义:一种对系统无序程度的度量。熵越大,系统的无序程度越高。这里,熵被定义为一个宏观态对应微观态个数的对数。与热力学熵类似,信息熵度量了一个随机变量的不确定程度。信息熵越大,随机变量的不确定性越高。

我们也可以将信息熵的定义拓展到连续型的随机变量,定义为微分熵(differential entropy):\[H[x]=-\int{p(x)\ln{p(x)}}dx\] (如果从信息熵的原始定义出发,我们会发现微分熵的定义和信息熵相差了一个极大项:\(-\ln{\Delta}\);这意味着连续变量本质上不可能做到精确的编码。)

结合拉格朗日法,我们可以推导出信息熵和微分熵最大时对应的分布:对于离散的随机变量,信息熵最大时对应着一个均匀分布;对于连续的随机变量,微分熵最大时对应着一个高斯分布(注意对于微分熵的最大值求解需要增加一阶矩和二阶矩两个约束条件)。

条件熵,交叉熵,与互信息

从信息熵的第一定义,我们很容易写出条件信息熵的计算公式:\[H[y|x]=-\int\int p(y,x)\ln{p(y|x)}dydx\]

容易证明,\(H[x,y]=H[y|x]+H[x]\)。也就是说,\(x\)、\(y\)联合分布的不确定度,等于\(x\)的不确定度与知道\(x\)后\(y\)的不确定度之和。

交叉熵(relative entropy),又被称为KL divergence,衡量了两个分布的不相似性。它定义了用一个预估分布\(q(x)\)近似一个未知分布\(p(x)\)时,对\(x\)进行编码所需要的额外期望信息量:\[KL[p\|q]=-\int p(x)\ln{q(x)}dx-(-\int p(x)\ln{p(x)}dx)=-\int p(x)\ln{\{\frac{q(x)}{p(x)}\}dx}\]

交叉熵越大,两个分布越不相似。可以证明,交叉熵不满足对称性(\(KL[p\|q] \neq KL[q\|p]\));且\(KL[p\|q]\geq 0\)(当且仅当\(q(x) = p(x)\)时等号成立)。

我们可以用交叉熵的概念来对一个机器学习模型的参数进行预估。假设我们有一堆抽样自某未知分布\(p(x)\)的数据,我们试图用一个带参数的模型\(q(x|\theta)\)去拟合它。一条可行的思路是选择使\(p(x)\)和\(q(x|\theta)\)的交叉熵尽可能小的参数\(\theta\)。虽然我们不知道\(p(x)\)的真实分布,但由蒙特卡洛方法,我们可以从抽样数据中得到\(KL(p\|q)\)的近似值:

\[KL(p\|q) \simeq \sum_{n=1}^{N}\{-\ln{q(x_n|\theta)}+\ln{p(x_n)}\}\]

略去与\(\theta\)无关项,我们发现,我们得到的是一个似然函数的负对数!也就是说,最小化模型预估分布与真实分布的交叉熵等价于前面提到的最大似然法!这也从信息熵的角度解释了为什么要对似然函数取对数的原因。

另一个重要的概念是互信息(mutual information),用来衡量两个随机变量\(x\)、\(y\)的相关性。互信息有两种定义方式:

  1. \(p(x,y)\)和\(p(x)p(y)\)的交叉熵定义:\[I[x,y]=KL(p(x,y)\|p(x)p(y))=-\int\int{p(x,y)\ln{(\frac{p(x)p(y)}{p(x,y)})}}dxdy\] 当\(x\)、\(y\)相互独立时,\(p(x,y)=p(x)p(y)\);此时,\(I[x,y]=0\)。
  2. 由KL定义出发,我们可以推导出互信息的条件熵定义:\[I[x,y]=H[x]-H[x|y]=H[y]-H[y|x]\] 因此,\(x\)、\(y\)的互信息可以理解为知道其中一个随机变量的取值后,另一个随机变量的不确定度的降低(当\(I[x,y]=H[x]\)时意味着\(y\)的发生确定了\(x\)的发生,即两个随机变量完全相关)。

PRML读书笔记——机器学习导论的更多相关文章

  1. Thinking In Java读书笔记--对象导论

    Thinking In Java读书笔记--对象导论[对象]服务提供者==>将对象看做一个服务提供者[程序员分类][类创造者]/[客户端程序员] [访问控制存在的原因?][1]客户端程序员无法触 ...

  2. PRML读书笔记——3 Linear Models for Regression

    Linear Basis Function Models 线性模型的一个关键属性是它是参数的一个线性函数,形式如下: w是参数,x可以是原始的数据,也可以是关于原始数据的一个函数值,这个函数就叫bas ...

  3. 【PRML读书笔记-Chapter1-Introduction】1.2 Probability Theory

    一个例子: 两个盒子: 一个红色:2个苹果,6个橘子; 一个蓝色:3个苹果,1个橘子; 如下图: 现在假设随机选取1个盒子,从中.取一个水果,观察它是属于哪一种水果之后,我们把它从原来的盒子中替换掉. ...

  4. 【PRML读书笔记-Chapter1-Introduction】引言

    模式识别领域主要关注的就是如何通过算法让计算机自动去发现数据中的规则,并利用这些规则来做一些有意义的事情,比如说,分类. 以数字识别为例,我们可以根据笔画规则启发式教学去解决,但这样效果并不理想. 我 ...

  5. 《Java编程思想》读书笔记-对象导论

    计算机是头脑延伸的工具,是一种不同类型的表达媒体.本文以背景性的和补充性的材料,介绍包括开发方法概述在内的面向对象程序设计(Object-oriented Programming,OOP)的基本概念. ...

  6. PRML读书笔记——2 Probability Distributions

    2.1. Binary Variables 1. Bernoulli distribution, p(x = 1|µ) = µ 2.Binomial distribution + 3.beta dis ...

  7. PRML读书笔记——Introduction

    1.1. Example: Polynomial Curve Fitting 1. Movitate a number of concepts: (1) linear models: Function ...

  8. PRML读书笔记——Mathematical notation

    x, a vector, and all vectors are assumed to be column vectors. M, denote matrices. xT, a row vcetor, ...

  9. 【PRML读书笔记-Chapter1-Introduction】1.6 Information Theory

    熵 给定一个离散变量,我们观察它的每一个取值所包含的信息量的大小,因此,我们用来表示信息量的大小,概率分布为.当p(x)=1时,说明这个事件一定会发生,因此,它带给我的信息为0.(因为一定会发生,毫无 ...

随机推荐

  1. 深入浅出数据结构C语言版(4)——表与链表

    在我们谈论本文具体内容之前,我们首先要说明一些事情.在现实生活中我们所说的"表"往往是二维的,比如课程表,就有行和列,成绩表也是有行和列.但是在数据结构,或者说我们本文讨论的范围内 ...

  2. 微信JS分享功能--微信JS系列文章(二)

    概述 在上一篇文章微信JS初始化-- 微信JS系列文章(一)中已经介绍了微信JS初始化的相关工作,接下来本文继续就微信JS的分享功能进行描述,供大家参考. 代码 $(document).ready(f ...

  3. x战警 天启高清完整版下载

    天启出生于埃及第一王朝,是地球上最古老.最强大的变种人沙巴泊,曾拥有无数信众,但后来遭人背叛,被人活埋.几千年后,强大无匹而且永生不朽的天启从数千年的深埋中获释,愤怒的他发现同类不再被视为神祇,他对人 ...

  4. 【转】JSON和JSONP

      前言 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Soc ...

  5. 【转】AS3多种天气预报调用代码分享

    今天我们来介绍利用weather.com.cn上的天气预报功能,这里介绍了大家常用的,其它的大家可以自己去下载. 我们这里的天气预览不需要js来调用,只要用iframe就可以了,更不需要ASP/' t ...

  6. 【转】PV3D的小练习~太阳系八大行星

    转自:http://hi.baidu.com/boycy/item/70d1ba53bc8c3a958c12eddf http://www.cnblogs.com/flash3d/archive/20 ...

  7. Android 学习笔记之 Actionbar作为回到上一级

    首先,给Actionbar添加返回图标: 代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCrea ...

  8. 1101: 零起点学算法08——简单的输入和计算(a+b)

    1101: 零起点学算法08--简单的输入和计算(a+b) Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lldSubmitt ...

  9. [Python]peewee使用经验

    peewee 使用经验 本文使用案例是基于 python2.7 实现 以下内容均为个人使用 peewee 的经验和遇到的坑,不会涉及过多的基本操作.所以,没有使用过 peewee,可以先阅读文档 正确 ...

  10. elasticsearch5.3安装插件head

    1.下载并配置nodejscd /usr/local/src/wget https://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-x64.tar.xz & ...