PRML读书笔记1——1.1节

738 阅读10分钟

PRML的全称是Pattern Recognition and Machine Learning,它是机器学习领域的一本经典书籍,关于PRML的介绍见:PRML读书笔记0——写在前面的话

本次笔记的要点如下

  • 机器学习术语
  • 多项式曲线拟合(Polynomial Curve Fitting)
  • error function
  • 过拟合(over-fitting)
  • 验证集(validation set)

1 Introduction

很多书的第一章其实是敷衍了事,而PRML的第一章却是有点东西,它构思精妙,用一个例子引出了概率论,高斯分布,Bayesian方法,决策论,信息论等贯穿全书的基本方法。

在进入1.1节以前,书上讲了一些知识铺垫

模式识别

寻找数据中模式的问题一直以来都是一个fundamental的问题。例如在16th century,Johannes Kepler发现行星运行的经验性规律,或者在20世纪早期原子光谱的规律被发现。

模式识别领域关注的是利用计算机算法自动发现数据中的规律,以及利用发现的规律干的一些事情,比如将数据分类。

为什么要用机器学习

1.1
图1.1

考虑手写数字识别的例子,如图1.1所示。每个数字对应一个 28×28 像素的图像,因此可以表示为一个由784个实数组成的向量 \mathbf{x}

手写数字识别的目标是建立一个computer,能够以这样的向量 \mathbf{x} 作为输入,以数字0到9为输出。

这个问题可以使用人工编写的规则解决,或者依据笔画的形状启发式的区分数字,但是实际中这样的方法效果很差,因为会导致规则数量的激增,而且还涉及到很多不符合规则的例外的处理。

而使用机器学习的方法可以得到好得多的结果

术语

以手写数字识别为例介绍机器学习的术语。

  • 训练集( training set ):一个由 N 个数字 \{x_1 , \dots , x_N \} 组成的集合,用来调节模型的参数。训练集中数字的类别实现已知,用target vector \mathbf{t} 来表示,它代表对应数字的标签。注意对于每个数字 \mathbf{x} 只对应一个标签,而且通常是被独立的人工的标注的

  • 机器学习算法的结果:表示为一个函数 y(\mathbf{x}),它以一个新的数字的图像 \mathbf{x} 为输入,产生向量 \mathbf{y},与target vector的形式相同。

  • 学习(learning):函数 y(x) 的形式在训练(training)阶段被确定,这个阶段也被称为learning阶段,以训练数据为基础。

  • 测试集(test set):一旦模型被训练出来,就可以用来判定新样本对应的标签,这些新样本的集合组成了test set。

  • 泛化(generalization):正确分类与训练集不同的新样本的能力叫做generalization。在实际应用中,training set仅仅包含所有可能的input的相当小的部分,所以泛化是模式识别的一个中心问题

  • 预处理( pre-processed): 对于大部分实际应用,原始的input vectors通常被pre-processed变换到新的变量空间,目的是希望在新的变量空间中问题可以更容易或者更快的被解决。预处理有时被叫做特征抽取(feature extraction)。

  • 监督学习(supervised learning):训练数据的样本包含input vectors以及对应的target vectors。

  • 分类(classification):数字识别就是这个问题的一个例子,它的目标是把每个input vectors分配到有限数量离散的标签中的一个。

  • 回归(regression):如果要求的输出由一个或者多个连续变量组成,那么这个任务被称为回归regression。

  • 无监督学习(unsupervised learning):训练数据由一组input vectors \mathbf{x} 组成,没有任何对应的target。Unsupervised learning的目标是发现数据中相似样本的分组,也就是聚类(clustering),或者决定输入空间中数据的分布,这被称为密度估计(density estimation),或者把数据从高维空间投影到二维或者三维空间,为了数据可视化( visualization )。

  • 强化学习( reinforcement learning ):它关注的问题是在给定的条件下,找到合适的动作,最大化reward。注意,reinforcement learning没有给定的标签,必须在一系列的trial and error中被发现,这与supervised learning不同。关于reinforcement learning的讨论不在PRML的范围内。

  • 在本书中使用的三个重要工具:概率论、决策论、信息论。

1.1 例子:多项式曲线拟合(Polynomial Curve Fitting)

现在正式进入PRML的1.1节,这一节主要是通过一个例子来穿针引线的

训练集

给定训练集由对某未知曲线的N次观测组成: \mathsf x \equiv (x_1, \dots, x_N)^\top, \mathsf t \equiv (t_1, \dots, t_N)^\top

图1.2

图1.2展示了由 N = 10 个数据点组成的图像,用蓝色圆圈标记。每个数据点由输入变量 x 的观测以及对应的目标变量 t 组成,他们都是由绿色曲线 \sin (2 \pi x) 生成的。

为什么蓝色点并没有完全在绿色曲线上? 因为是这样生成训练集的:把绿色曲线上的某些值增加一个小的符合高斯分布的随机噪声 \epsilon ,从而得到对应的 t_n 的值,也就是 t_n = sin(2\pi \,x_n) + \epsilon

训练目标

目标是在不知道绿色曲线\sin (2 \pi x) 的情况下,对于某些新的x,预测对应的t的值,

线性模型

使用下面形式的多项式函数来拟合数据:

y(x,\mathbf w)= w_0+w_1 x +w_2 x^2+\dots+ w_M x^M = {\sum_{j=0}^{M}} w_j x^j

其中 M 是多项式的次数(order),多项式系数 w_0, \dots , w_M 记作向量 \mathbf w

注意,虽然多项式函数 y(x,\mathbf w) 是 x 的一个非线性函数,但它是关于系数 w 的一个线性函数,被叫做线性模型(第3章和第4章详细讨论)。

error function

向量 \mathbf w 可以通过拟合训练数据的方式确定,也就是通过最小化error function的方法实现。error function衡量了对于任意给定的 \mathbf w 值,函数 y(x, \mathbf w) 与训练集数据的差别。一个广泛使用的error function是每个数据点 x_n 的预测值 y(x_n,\mathbf w) 与目标值 t_n 的平方和:

E(\mathbf w) = \frac{1}{2} \sum_{n=1}^{N} [y(x_n, \mathbf w)-t_n]^{2} \quad\quad\quad(1.2)

上式是一个关于 \mathbf w 的二次函数,\mathbf w 的梯度是关于 \mathbf w 的线性函数,因此可以找到一个唯一解 \mathbf w^\star 使E(\mathbf w)最小。

为什么选择这种形式的error function,为什么不是其他形式

后面的章节将讨论这样选择原因,现在只是简单地注意一下它是非负的,当且仅当函数 y(x, \mathbf w) 对所有的训练数据点均做出正确预测时,error function为零。而 \displaystyle \frac{1}{2} 是为了运算方便而加入的。

模型选择( model selection )

除了系数\mathbf w之外,另一个需要考虑的参数是多项式的order M 到底如何确定?这个问题也被称为模型对比model comparison 或者是model selection 。

过拟合( over-fitting )

在图1.4中,我们给出了4个拟合多项式的结果。

图1.4

如图1.4所示:

  • 常数( M = 0 )和一阶( M = 1 )多项式对于数据的拟合效果相当差,很难代表函数 \sin (2 \pi x)

  • M = 3 时多项式似乎给出了对函数 \sin (2 \pi x) 的最好的拟合。

  • 当M = 9 时,我们得到了对于训练数据的一个完美的拟合,也就是说多项式函数精确地通过了每一个数据点,但是拟合的曲线剧烈震荡(large oscillations)无法很好的表达函数 \sin (2 \pi x) ,这种行为叫做过拟合(over-fitting)

定量分析

通常我们为了检测模型的效果,会找到一组与训练集相同分布的数据进行测试,然后计算不同模型选择下,训练集和测试集上的 E(\mathbf w^\star) 值。

训练集误差与测试集误差

方法:考虑一个额外的测试集,这个测试集由100个数据 点组成,这100个数据点的生成方式与训练集的生成方式完全相同,但是在目标值中包含的随机噪声的值不同。

注意到随着测试集大小的变化,E(\mathbf w^\star) 的尺度也在不断变化,因此一个更好的选择是使root-mean-square (RMS)误差:

E_{RMS}=(\frac{2E(w^*)}{N})^{\frac{1}{2}}\quad\quad\quad(1.3)

其中,除以 N 能够保证以相同的基础对比不同大小的数据集,而平方根确保了 E_{RMS} 与目标变量 t 使用相同尺度进行度量。

图1.5

图1.5 展示了对于不同的 M 值,训练数据和测试数据的 RMS 误差。当 M 的取值为 3 \le M \le 8 时,testing error较小,对于生成函数 \sin (2 \pi x) 也能给出合理的模拟。

对于 M = 9 的情形,训练集的误差为0,正如在图1.4中看到的那样,testing error变得非常大,对应的函数 y(x, w^*) 表现出剧烈的震荡。

不同的order对应的系数

如表1.1所示:

表1.1

随着 M 的增大,系数通常会变大。对于 M = 9 的多项式,系数表现出large oscillations。

直观的原因是:有着更大的 M 值的更灵活的多项式被过分地调参,使得多项式被调节成了与目标值的随机噪声相符

overfitting解决方法

1.增加数据集的size

图1.6

可以看到,对已一个给定的模型复杂度,当数据集的size增加时,过拟合问题变得不那么严重。

2.贝叶斯( Bayesian )方法

目前不得不根据available的训练集的规模限制参数的数量,而不是根据待解决的问题的复杂性来选择模型的复杂性。

从Bayesian的观点来看,对于模型参数的数量超过数据点数量的情形,没有任何难解之处。实际上,一个贝叶斯模型中,参数的有效(effective)数量会自动根据数据集的size来调节。

可以通过使用贝叶斯( Bayesian )方法避免overfitting。

PRML后续章节将详细讨论Bayesian方法。

3. 正则化( regularization )

给式1.2的error function增加一个惩罚项(penalty term),使得系数不会达到很大的值,最简单的形式采用所有系数的平方和的形式,error function 修改后的形式如下:

\tilde E(\mathbf w) = \frac{1}{2} {\sum_{i=1}^{N}} \left\{y(x_n,\mathbf w) - t_n\right\}^2 + \frac{\lambda}{2} \|\mathbf w\|^2 \quad\quad\quad(1.4)

其中 \|\mathbf w\|^2 \equiv \mathbf{w^\top w} = w_0^2 + \dots + w_M^2\lambda越大,penalty term的影响力越大,反之越小。

表1.2

从表1.2可以看出, 当 \lambda 改变的时候, M = 9 的多项式的系数 w^* 的值也在改变。注意到,\ln \lambda = -\infty 也就是 \lambda = 0 时,此时没有regularization,对应图1.4右下角,参数large oscillation。随着 \lambda 的增大,系数逐渐变小,也就是penalty term在发挥作用。

regularization在统计学的文献中被叫做shrinkage 方法,因为这种方法减小了系数的值。二次正则项被称为ridge regression,在神经网络中叫做weight decay

验证集(validation set)的由来

如果我们试着用最小化error function的方法解决一个实际的应用问题,那么我们不得不寻找一种方式来确定模型复杂度的合适值。

通常把可用数据分为training set(用来决定coefficients \mathbf w)和validation set或者叫做hold-out set(用来决定model complexity,either M or \lambda

但是这太浪费训练数据了,不得不寻找更高级的方法。(后续章节讨论)

总结

目前关于curve fitting的讨论大量地依赖于直觉,因此需要寻找一个more principled的方法来解决问题。

即将使用方法是概率论,1.2节介绍

概率论不仅提供了本书后续几乎所有章节的基础,它也能让我们更深刻地理解本章中通过多项式拟合的问题引出的重要概念,并且把这些概念扩展到更复杂的情况。