深度学习
上QQ阅读APP看书,第一时间看更新

1.2 线性回归模型

数据分析是在人类认识自然现象背后隐藏规律的过程中发展起来的一门学科。自然现象背后隐藏的规律可以粗略地分为确定(因果)关系和相关关系两类。例如众所周知的自由落体运动,物体降落的位移h与降落的时间t可用来刻画。但并非所有的现象都可用类似这样的确定性公式加以刻画,例如钱塘江潮高程h则无法用时间t的确定的函数式进行表示。同样地,人体的身高(X)与体重(Y)之间,房子的特征(X)与房子的价格(Y)之间等也不存在确定的函数关系式。

有时,确定关系在(测量)误差影响下可以转化为相关关系,或者说相关关系可分解成确定关系与随机误差之和。例如用一把尺子量一张桌子的长度,客观地,一张桌子有其真实的长度µ,通常情况下,认为用尺子量桌子长度得到的数据会等于桌子本身的长度,即=µ。但如果苛刻地要求用尺子量桌子长度时得到的结果要严格反映桌子真实长度,苛严到一个原子也不多,一个原子也不少的地步。显然,在这种情况下,由于测量时存在的人为误差和测量工具本身的精度等因素,每次测量的结果不可能严格等于µ,而或多或少存在某种程度的随机误差є。这样,测量数据与桌子真实长度之间的关系就由原来的确定性关系=µ变成真实值与不确定的随机误差之和的相关关系=µ+є的形式。这里正是误差є的这种随机性给目标变量带来了某种随机性。

有时,给目标变量带来随机性的原因并不仅仅是测量误差,也有可能是影响目标变量Y值变化的某些自变量X由于某种原因未被包含在模型里面。例如,影响房屋价格波动的因素除了跟房子大小、朝向、楼层等房子本身的属性有关,还可能与一个国家或地区政府的相关政策甚至广义货币供应量等因素有关。但建立模型预测房价时,可能只用了房子大小、朝向、楼层等房子本身的属性,这时模型就会把政府的相关政策和广义货币供应量等其他因素的差异带来的效应隐藏在误差项中。

一般地,对于这种带随机误差(噪声)数据的分析和处理,需要用相应的统计学模型。统计模型善于从混合着噪声的数据中找出规律,它并不在意目标变量Y的随机性产生的具体原因,而是通过对误差进行合理假设的基础上,寻找自变量与因变量之间内在的关系。例如前面测量桌子长度的例子中,在测量不存在系统性偏差的情况下,测量到的桌子的长度会以真实值为平均值呈有规律的正态分布,利用这一点,统计模型就能透过随机性看到自变量与因变量之间的本质联系,找出测量值与真实值之间的关系。

随机误差的合理假设对模型的有效性非常重要,如果不对目标变量的随机性进行限制,那么再好的统计模型也无可奈何。试想一下,如果测量桌子长度的数据是不认真做实验的某个同学随手编造的数据,则无法保证它的平均值与实际值接近,自然也就无法找出测量值与真实值之间的关系。后文将看到,对随机误差的不同假设,将产生不同的统计模型。

本节通过一个简单的研究房屋面积与房价间关系的例子,介绍回归分析的基本思想,并由此引出训练集、模型(假设函数)、模型容量等这些机器学习中常用的基本概念和符号。在这些基本概念和符号基础上推导基于极小二乘目标函数下的回归分析方法,讨论机器学习中常出现的模型欠拟合(underf itting)和过拟合(overfitting)以及模型选择和特征选择等相关问题,并给出回归分析方法的概率解释。然后介绍针对目标变量Y不同的分布下线性模型的两种扩展模型,logistics回归和softmax回归模型。最后给出三种回归模型的统一框架,广义线性模型,从更宽的视角看待统计领域发展起来的这一套数据分析工具。

1.2.1 极小二乘线性回归

一般地,为了研究变量XY之间的关系规律,往往需要对(X,Y)进行成对的序列观察,序列(X(1),Y(1)X(2),Y(2),…,X(m),Y(m))表示对(X,Y)进行了m次观测,相应的小写的x,y对应的序列(x(1),y(1)x(2),y(2),…,x(m),y(m))表示m次观测得到的结果。例如,表1.1列出的是某地区房屋面积与房价的关系数据(1)

根据表1.1中数据,很容易在平面直角坐标系上画出房屋面积X为横轴,房价Y为纵轴的散点图。从图1.1散点图可看到房屋面积与房价之间的关系。为了进一步搞清楚房屋面积大小如何具体地影响房屋价格,我们希望能在前述散点图基础上画出一条能反映房价随房屋面积变化的关系线,但这样的线可以画很多,图1.2中的哪条线更能客观真实地反映房价与房屋面积之间的变化关系呢?

表1.1 房屋面积与房价数据

图1.1 房屋面积X与房价Y之间的散点图

图1.2 两条线均能反映房屋面积X与房价Y之间的变化趋势

显然,需要有一套标准,或者说一套办法,能根据表1.1中的数据,或者说根据图1.1散点图中各点的位置,确定一条最合理地表示房屋面积与房价之间关系的线。一旦找到这条合理地刻画房屋面积与房价之间关系的线,将来如果有一个新的房子需要进入市场销售,就可以根据该房子的大小和所找出来的这条线定出这一房子合理的销售价格。显然,在二维平面直角坐标系下,一条直线可表示成hx)=θ0+θ1xhx)=Wx+b的形式(2)。这里(θ0,θ1)或(Wb)称为方程的参数,一旦这些参数被确定,相应的方程就确定下来了。

这样,寻找最合理地表示房屋面积与房价之间关系的线的问题就转化成寻找最合适的参数θ=(θ0θ1)的过程。这个参数所对应的方程hθx)=θ0+θ1x在回归分析中就被称为回归方程,但在机器学习里它有个更一般的名字叫假设函数(hyphothesis)或者模型(model)。这里hθx)表示以θ为参数的回归方程。图1.3给出了机器学习的一般框架:机器学习算法接受训练集作为输入,经过相应的方法进行训练后,得到假设函数作为算法输出的结果,该结果可被用来预测新的输入特征下的目标变量的值。

图1.3 机器学习算法一般框架

在理想状态下,如果能找到一条线使散点图中所有点都在这条线上,则这条线完整地刻画了数据中的所有信息。然而,实际中由于各种噪声的存在,或者房屋面积与房价之间本身的复杂关系,多个数据点共线的情况不可能出现。对于任意给定的函数hθx),各数据点均会有不同程度的偏离,偏离的幅度可用图1.4中各数据点到线的长度进行表示。给定第i个数据点坐标(x(i)y(i)),该数据点偏离hθx)的长度di=hθx(i))−y(i)。在具有m个数据点的情况下,所有数据点与假设函数hθx)的总偏离可表示成Jθ)=,这里取平方和是为了消除正负偏差直接求和带来的抵消效应,前面加了个分数是因为后续处理时需要对该表达式的平方项进行求导,求导的结果得到的数字“2”与这个分数相乘刚好归一,数学上会显得更简洁。回归分析,或者说机器学习的任务是要寻找最合理的假设函数hx),使得这些数据点与假设函数hθx)代表的直线的总偏离程度Jθ)最小。

图1.4 房屋面积与价格最合理的回归方程

以上内容介绍了回归分析的直观思想。接下来将前述分析的内容扩展到更一般的形式。在此之前,出于严格地描述一般的回归分析模型的需要,这里以表格的形式列出了需要用到的一些符号(见表1.2),这些符号约定适用于本书所有章节。

表1.2 机器学习中的常用符号约定

根据表1.2中的符号约定,具有n个输入特征,1个目标变量(即C=1的情况,为避免复杂化,C>1的情况这里暂时先不考虑)的假设函数可表示成式(1.2.1)的形式。

式(1.2.1)所示模型是各项求和的形式,且其中每项的参数θj均是1次幂的形式,因此这是一个关于参数θ的线性模型,称为简单线性模型(simple linear model,SLM)。这里的线性指的是多个自变量的线性组合对目标变量Y或者目标变量的函数(比如后文的logistics模型中的)的值产生贡献。简单线性模型也可表示成图1.5的形式。

图1.5 式(1.2.1)中线性模型的图形化表示

为了考查输入特征X与目标变量Y之间的关系,需要尽可能多地获得关于(X,Y)的信息。理论上,总体(X,Y)的所有信息都是追踪XY之间规律所需要的。但收集齐全总体的所有信息在实际中往往并不可行。因此,通过对总体(X,Y)进行有限的M次观察,将观察所得结果中的一部分(x,y(m)={(x(1),y(1)x(2),y(2),…,x(m),y(m))}作为追踪XY之间的关系的数据集,该数据集一般被称为训练集。这样,根据式(1.2.1)的假设函数和训练集中的目标变量Y,可以得到式(1.2.2)形式的定义在训练集(x,y(m)上的代价函数。

如前所述,代价函数Jθ)是训练集中的数据点到假设函数的偏差平方和,它是衡量假设函数好坏程度的一个量。机器学习的任务是要根据训练集(x,y(m),从假设函数的一组初始参数θ(0)出发,不断(迭代)地调整参数θ,以极小化代价函数Jθ)。这一过程可表示为如式(1.2.3)的优化目标函数。

在训练集给定的情况下,上述代价函数Jθ)就是一个关于θ的二次函数。从数据中学习输入变量与目标变量之间关系的机器学习问题就转化为极小化代价函数Jθ)的优化问题,因为一旦找到Jθ)最小的参数θ,相应的假设函数hθ就随之确定。

为讨论式(1.2.3)所示函数的优化问题,先考查一个具体的二元二次函数,根据这个简单而特殊的二元二次函数讨论寻找极值的直观思想,并将之扩展到一般二次函数优化方法。

假定式(1.2.1)中n=1,这意味着假设函数中只有θ0,θ1两个参数。将式(1.2.1)代入式(1.2.2)中,并以θ0,θ1为未知参数进行整理,结果可整理成式(1.2.4)的形式。

假定现在训练集中只有两个训练数据,即(x,y(2)={(1,−4)12)},将训练数据代入式(1.2.4)并整理得到式(1.2.5)的结果。

显然,式(1.2.5)是一个二元二次函数,且已被整理成完全平方形式。图1.6给出了该函数的图像,它是一个“碗”状的抛物型曲面,“碗”底中心是它的全局唯一极小点。

图1.6 二元二次函数图像(见文后彩图)

这样,式(1.2.3)中的优化问题等价于如何从某个初始点(图1.6中黑点)定位到“碗”底中心这个全局唯一极小点的问题?有人可能会说,这还不简单,沿图1.6中箭头所指方向直奔“碗”底即可。但是情况并非如此简单,原因有两点:(1)在找到全局唯一极小点之前,类似图1.6中的辅助箭头是没有办法画出来的,计算机也不能像人一样“看懂”图1.6中的函数图像;(2)很多时候,式(1.2.3)表示的一般形式的优化目标函数远比式(1.2.4)中的二元二次函数要复杂。

一般地,要对式(1.2.3)进行优化是在没有类似图1.6的函数图辅助下寻求极小点,这有点像在山顶的“渴蚁”朝唯一有水的山谷进发找水喝的过程。口渴的蚂蚁视野有限,它只能通过在自己有限的邻域内移动位置,并感知前后位置的高低变化,但聪明的蚂蚁知道,只要不断往低处移动,总有一天能到达最低的谷底,喝到心仪已久的甘泉。而在一群找水喝的蚂蚁中有一种绝顶聪明的蚂蚁叫梯度蚂蚁,它有一种绝招帮助它总能在每一步移动时找到最快速的下山方向。梯度蚂蚁的绝招就是每次移动时先计算梯度方向,然后沿梯度方向移动步伐就是最快速的下山方向。下面将结合图1.7解释何为梯度方向。

图1.7 图1.6抛物型曲面在(θ0,Jθ0))平面上的投影(箭头是曲线上某点的梯度方向)

如果将θ1=−3代入式(1.2.5)并画出相应的函数图像,则可以得到图1.6抛物型曲面在θ0为横轴,Jθ0)为纵轴的平面上的投影,这是一条如图1.7所示的二次曲线。图1.7中箭头所指方向就是曲线上某点的切线方向,该切线的斜率就是曲线上该点的梯度,箭头所指方向就是梯度蚂蚁移动的方向。梯度蚂蚁知道,只要沿箭头的梯度方向移动个单位(相当于沿坐标轴θ0移动1个单位),自己就会下降个单位,而且这种下降速度是最快的。图1.8是梯度蚂蚁逃离火红的火焰山顶(初始点)奔向生命绿洲的谷底(最小值)的可能的最佳逃生路径。

前面介绍的是在θ0θ1以及定义在其上的代价函数Jθ0,θ1)张成(3)的三维空间中的蚂蚁觅水过程。对于坐标系θ=(θ0,θ1,…,θnT以及定义在其上的代价函数Jθ)张成的n+2维空间中的蚂蚁觅水过程与此类似。这里符号Jθ)表示定义在数据集合(x,ym上的代价函数,也就是公式(1.2.2)。式(1.2.6)给出了参数θjθ从第t步的状态到第t+1步的更新公式,其中γ是蚂蚁的腿长,也就是所谓的学习率。

图1.8 梯度蚂蚁逃离火红的火焰山顶(初始点)奔向生命绿洲谷底(最小值)的可能的最佳逃生路径(见文后彩图)

式(1.2.6)中γ是一个人为设定的参数(机器学习领域称这种人为设定的参数为超级参数,简称超参),式(1.2.6)的计算关键是要给出代价函数关于参数的偏导数,即的计算。根据式(1.2.1)和式(1.2.2)可以得到式(1.2.7)表示的计算偏导数公式。

由于Jθ)是定义在数据集(x,y(m)上的代价函数,所以梯度蚂蚁用式(1.2.7)计算偏导数本质上是将数据集中所有的m条数据的偏导数累加,考虑了全部数据的偏导数。因此根据式(1.2.7)计算偏导数执行迭代优化的方法叫全梯度法(full gradient descent,FGD)。当数据集充分大时,全梯度法计算量惊人,梯度蚂蚁难堪计算重负。因此更常用的是所谓的随机梯度(stochastic gradient descent,SGD)和随机批量梯度法(mini-batch stochastic gradient descent,BSGD)。这两种方法的思想很简单,既然考虑所有训练数据的全梯度法会带来计算量的问题,那么用训练数据的一部分随机样本的平均梯度去估计总体训练数据的平均梯度,就可避免数据量m过大带来的计算问题。这里用带下标的mξ:1≤mξm表示介于1到m的随机数,Jθ)@(x,y()表示基于随机批量数据集(x,y()上的代价函数,区别于原先的定义于训练集(x,y(m)的代价函数Jθ)。这样,只要将式(1.2.7)中出现m的地方用mξ代替,就可以得到式(1.2.8)形式的关于SGD,BSGD,FGD三种方法的统一的偏导数计算公式。

mξ=1时,式(1.2.8)为考虑单一随机样本的SGD偏导数计算公式。当mξ=m时,式(1.2.8)变为FGD偏导数计算公式。当1≤mξm时,式(1.2.8)又成为BSGD的偏导数计算公式,此时的mξ是每次抽取的随机样本数。相应地,参数更新公式变成式(1.2.9)的形式。

根据式(1.2.7)或式(1.2.8),可以总结出目标函数关于参数的偏导数的基本计算规律:模型的实际输入与监督信号y之间的差再乘以相应的输入x。这一偏导数的计算规律不仅适用于这里的线性模型,也适用于后续将要介绍的其他模型,甚至神经网络模型。

最后,作为本节优化算法的总结,算法1给出SGD,BSGD,FGD算法统一的伪码描述。

相对于FGD全梯度法,SGD随机梯度法的好处在于,每次迭代只需要计算一个随机样本上的梯度,计算代价会小很多。这种做法本质上是以随机样本的梯度作为全样本上的梯度的估计,估计的误差会影响到SGD的收敛速度(收敛速度是衡量优化算法计算复杂度的基本工具,具体定义可参考https://en.wikipedia.org/wiki/Rateofconvergence或者其他优化相关的教材),因此SGD的收敛速度不如FGD。BSGD则通过用批量随机样本上的梯度作为全样本上的梯度的估计,这是一种试图在单次迭代代价与收敛速度之间取得某种平衡的做法。从已有的研究结果来看,SGD能够在目标函数强凸并且递减步长的情况下达到O)的次线性收敛(sublinear convergence),FGD则可以在目标函数强凸的情况下做到OρT)(ρ<1)的线性收敛(linear convergence)。

能否在保存SGD快速迭代的前提下达到全梯度法FGD的线性收敛率,一直是梯度优化领域的专家们难以企及的一个梦想。文献[39]提出的随机分层平均梯度法(stochastic stratified average gradient method,SSAG)通过采取比简单随机抽样效果更好的分层抽样策略,实现了在保留SGD低迭代代价的前提下达到FGD线性收敛率的效果。

有别于传统的仅仅在优化领域试图对算法进行改进以提高收敛率的努力,通过更好的抽样策略来改进梯度优化算法的性能是提高优化算法性能的有效途径。因此,当用SGD或者BSGD作为优化算法训练一个深度网络模型时,如果训练过程中出现难以收敛的情况,或者训练得到的深度网络性能表现并不理想,那么尝试使用文献[39]的SSAG算法将会是一个值得考虑的方案。

借用矩阵分析的工具,前述的线性回归问题可被表示成正规方程(normal equations,NE)的形式。为了避免陷入过于复杂的矩阵符号推导,本书省略具体推导过程,只给出线性回归模型的正规方程形式。在回归方程的正规方程形式下,回归模型的求解可被简单地转换成对一个“数据矩阵”求逆的过程。下面具体说明这一点。

根据前述(x,y(m)={x(1),y(1)x(2),y(2),…,x(m),y(m)},约定用xm×n=表示去除监督信号后的数据矩阵,ym×1表示相应的监督信号。这里出于概念上的清晰起见,为变量x,y保留下标中的矩阵维度信息。这样,在矩阵表示下,令式(1.2.3)关于θ的偏导数为零,可得到以下正规方程:

因此,回归方程的解就可简化成。这里涉及对数据矩阵进行求逆运算。如果实际数据由于存在冗余等因素导致变成奇异矩阵不可逆的情况时,可用数据矩阵的广义逆(伪逆)代替进行计算。

上文给出了从数据中提取蕴含的知识,并以回归方程y=hθx)的形式表示蕴含知识的方法。有了回归方程,即可进行所谓的预测:只要将新的数据观察值xnew输入回归方程中,即可得到一个预测值ypred。这个预测值ypred与真实的值到底有多大距离,取决于这个回归方程模型hθx)的好坏。

好的模型hθx)下“新”的观测产生的预测值ypred会非常接近真实值,这样的模型具有良好的预测能力,或者说这样的模型具有良好的推广泛化能力。

为了评估训练后得到的模型hθx)的好坏,通常的做法是将搜集到的全部数据(x,yM按照某一比例,比如70%:30%,随机剖分成两个子集(x,ymm≈70%×M30%×M,将其中一个数据集(x,ym作为训练集,另一个数据集作为测试集用来评估模型的好坏。这里M为搜集到的全部数据记录集的大小,m分别为训练集和测试集的大小。模型在训练集上的误差称为训练误差,模型在测试集上的误差则称为测试误差。由于测试集里的数据一般不在训练集中出现,这意味着用测试集测试模型时,模型所遇到的是全新的训练阶段从未见到过的样本。因此,如果一个模型的测试误差小,则意味着该模型具有好的推广泛化能力。

为了对模型的推广泛化能力这一术语做更准确的解释,需要对机器学习的模型容量以及与模型容量紧密相关的过拟合、欠拟合的问题进行相应的介绍,在此基础上讨论模型选择和特征选择的问题。

1.2.2 模型选择:模型容量与过拟合和欠拟合问题

前面介绍线性回归模型中用到了房价预测的问题作为引例,这个引例里只用到了房屋面积这一个属性(attribute)来预测房价,因此只需要用一个变量X来表示这个属性,在这一变量(属性)不同取值x下有一个相应的房屋价格y,因此,可得到一个hx)=θ0+θ1x的线性方程。这个线性方程在二维平面直角坐标系下就是一条直线(图1.9中(a))。进一步,如果将{1,x}这一组函数看作一个坐标系,则参数(θ0,θ1T可看作目标变量y在坐标系{1,x}下的相应坐标的分量。定义在坐标系{1,x}上所有合法函数hx)=θ0+θ1x的集合称为假设函数空间,记为@{1,xx2}。

如果数据(x,yM背后的属性变量X与目标变量Y之间存在简单的线性关系的话,用这样的一个线性模型是合适的。但如果房价这一目标变量Y不仅与房子面积这一属性变量X的一次项有关,还与该变量的平方项有关,再用原来的线性模型就不合适。此时用hx)=θ0+θ1x+θ2x2,即在原来线性模型基础上,加上相应的平方项,这样一个关于x的二次模型可能要更合适。因此坐标系变为{1,xx2},参数(θ0,θ1,θ2T为变量y在{1,xx2}下相应坐标的分量,假设函数空间记为@{1,xx2}。

加入平方项后的模型hx)=θ0+θ1x+θ2x2将变成类似图1.9(b)的二次曲线。如果数据(x,yM中隐含的规律本身是一个含有二次关系的规律,但却使用了@{1,x}线性假设函数空间中的模型进行拟合,所得结果模型将没办法捕捉到(x,yM中的二次项部分的规律(知识),这种情况为欠拟合(underfitting)。模型出现欠拟合的一个表现就是无论怎么增加训练集的数据,其训练误差都不会进一步减小。这是因为在欠拟合下误差主要来源是模型不当引起的偏倚,而非方差(4)

既然房价的波动可能与房屋面积的平方项有关系,那么对于房价预测这一复杂问题同样有理由相信,房价的波动可能不仅与平方项有关,也可能与房屋面积的立方项甚至更高次项有关。因此,可以选择比线性模型和二次模型更复杂的高次模型。式(1.2.11)给出了在房屋面积X这一原始属性经过X,X2,…,Xp高阶项作用后对房价Y的影响。一般地,将类似房屋面积X这样的有实际物理意义的变量称为属性(attribute),而属性连同其高阶项X,X2,…,Xp则统称为特征(feature),但很多机器学习相关文献常常将属性和特征两个概念不加区别。本书约定在要强调研究对象的原始属性时用“属性特征”这一术语,“特征”则表明是属性以及根据属性进行某种变换后得到的结果的统称。

式(1.2.11)随着阶次p的增大而变得复杂,其中p>1部分可学习到属性变量X和目标变量Y之间的非线性关系。式(1.2.11)的模型称为一般线性模型(general liner model,GLM)。不难理解,p越大,整个模型的非线性建模能力就越强。理论上只要p充分大,在训练集(x,ym有限的情况下,学习算法总能找到一个模型使之完美地通过训练集中每一个数据点(图1.9(c)),此时模型的训练误差将会下降到0。这意味着模型能学习到XY之间的任意非线性关系。

图1.9 欠拟合与过拟合

但模型并非越复杂越好,因为如果模型过于复杂,会导致XY之间任意微小的噪声引起的变化关系也会被模型拟合出来,而弱化了对XY之间本质关系的刻画。这种现象称为过拟合(overfitting)。一般地,模型越复杂,意味着使用的特征越多,也就越容易导致过拟合。在样本数少于特征数的情况下,过拟合就不可避免。过拟合的模型会变得非常敏感,敏感到在训练集中的所有数据它都能正确判别,但不是在训练集中出现过的数据,它就会出现很高的误判率。因此,过拟合的模型往往会出现低的训练误差伴随着高的测试误差的现象。

模型(1.2.11)所对应的假设函数空间@{1,xx2,…,xp}称为模型容量p越大,模型容量越大。一般地,随着模型容量的不断增大,训练误差会不断减小并无限接近于0;而测试误差往往会随着模型容量的增加,先减小然后增加。在测试误差的最小点就是最佳的模型容量,也是模型欠拟合与过拟合的临界点。

图1.10直观地给出了模型容量与欠拟合和过拟合之间的关系[40]。在图1.10中间竖线最优模型的左边是欠拟合区,训练误差和泛化误差(测试误差)均随着模型容量增加而减小。在最优模型处,训练误差和泛化误差之间的间隔达到最小。随着模型容量进一步增加,在最优模型的右边是过拟合区,训练误差进一步减小,而泛化误差则逐渐上升,两误差曲线的间隔逐渐变大。

为了找到使测试误差最小的最优模型,可采用交叉验证(cross validation,CV)的办法进行模型选择。假定共有p个模型需要进行选择。算法2给出了一种称为Holdout交叉验证(或者称为简单交叉验证)的模型选择算法,即按某一特定比例保留(hold)一部分数据用来训练模型,用另一部分数据(out)对前面训练得到的结果模型进行验证。

Holdout交叉验证需要拿出一部分数据来作为验证数据,这带来了某种程度的浪费,尤其是在数据本身比较稀缺的情况下更是如此。算法3给出了一种称为k折交叉验证的算法,减少了数据的浪费,适合于数据稀缺的场合。

图1.10 模型容量与欠拟合、过拟合之间的关系

前面讨论了模型容量与欠拟合和过拟合之间的关系,并给出了通过交叉验证选择最优模型的方法。一般地,在最优模型下,模型具有极小测试误差,因而具有好的泛化能力。

1.2.3 属性空间、假设函数空间与基于核函数的特征映射

不难看出,模型(1.2.11)是在假设函数空间@{1xx2,…,xp}进行回归分析。该假设函数空间与变量x所在的属性空间@{1x}通过一个所谓的特征映射函数ϕx)相联系。一般地,ϕx)并不太容易确定,甚至无法显式给出。因此,它常常是通过一个更容易找到的所谓的核函数Kθx)隐式表示。它们之间的关系可用形象地加以表示。本节详细解释它们之间的这种关系。

前面出于简化考虑,只使用了房屋面积X一个属性来预测房价Y,并给出了从Xp阶特征中选择最佳模型的办法。这给人一种错觉,好像模型容量只与单一属性变量及其特征的阶数有关,最优模型也仅仅在于挑选最好的一个特征阶数p一样。情况并非如此,事实上,模型容量不仅与特征阶数p有关,还与所选用的属性变量集有关。影响房屋价格(Y)的因素除了跟房屋面积(X1)有关外,还与房子所处的地理位置(X2)和朝向(X3)有关,在这三个属性及特征阶数p=2的情况下,假设函数空间将变为式(1.2.12)形式的具有三个一阶特征、三个交叉项和三个平方项共九个特征构成的空间。

或许,还可以更复杂一点,影响房屋价格(Y)的因素除了跟房屋面积(X1)有关外,还与房子所处的地理位置(X2)、朝向(X3)、楼层(X4)等多个属性有关。在这四个属性以及特征阶数p=2的情况下,假设函数空间将变为式(1.2.13)形式的具有四个一阶特征、六个交叉项和四个平方项共十个二阶特征的函数集。

式(1.2.13)的假设函数空间共有14个特征,这是在四个属性下考虑二阶特征时产生的假设函数空间。进一步,如果考虑更多属性,特征阶数更高时,得到的假设函数空间将更为复杂。在深度学习技术变得流行之前,由于缺乏稳定有效的自动化的特征提取办法,在获得属性数据X之后,只能通过人为去构造(寻找参数n,p,前者是属性总数,后者是特征阶数)类似式(1.2.13)这样的假设函数空间,既繁琐又困难,效果也不稳定。后来,受Aizerman的核感知器工作启发[41],Vapnik在其支持向量机(support vector machine,SVM)[32]中用一种所谓核技巧的方法取得了非常好的效果。这种核技巧巧妙地将人工构造假设函数空间的“特征工程”转化为寻找一个所谓核函数的“核工程”,而Mercer定理[42][43]表明寻找合法的核映射函数比人工构造假设函数空间要容易得多。

关于核方法的介绍并不是本书重点,这里提及核方法的主要目的是澄清类似式(1.2.13)形式的高维假设函数空间、核函数以及特征映射函数这三者之间的关系。变量X所在的属性空间通过核函数决定的特征映射函数映射到一个更高维甚至无穷维的特征空间,核函数则起到仅通过在原属性空间中计算就可判断高维空间中两向量相似程度的作用。认识它们之间的这种关系有助于对后续关于深度学习的相关内容的理解。

具体地,式(1.2.12)和式(1.2.13)的假设函数空间可看作是属性X=(X1,X2,…,XnT所在空间通过一个核函数Kθx)=(θTx+bp相对应的特征映射函数φX)映射到一个更高维的Onp)-维特征空间的特殊情形。下面的分析有助于理解这一点。

假定具有三个属性的随机变量X=(X1X2X3T的两个观察值为X=θ=(θ1,θ2θ3TX=x=(x1x2x3T。这里用与式(1.2.1)相同的符号θ表示变量的观察值,而没有像大多数关于核函数介绍的教科书那样用其他类似xz的符号,是为了提醒读者,这里的符号θ所起的作用与式(1.2.1)中θ以及后续要介绍的神经网络连接权值w的角色是一样的,均是要通过优化学习的参数,代表着要提取的特征。这一点当读者读完本书后面卷积神经网络章节中关于神经网络连接权值所起的特征提取的原理部分内容后就会明白。将这两个观察值做内积后求平方(取平方是因为考虑二阶特征),再进行等价变换后可写成式(1.2.14)的形式:

式(1.2.14)中ϕx)=[x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3]T为将原始属性向高维空间进行特征映射的函数。如果在式(1.2.14)中增加常数项b,可得到式(1.2.15)形式的结果:

式(1.2.15)中ϕx)=[x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3]T。这里特征映射函数ϕ(x)中的参数b控制着一阶特征项xi和二阶特征项xixj之间的相对权重。

因此不难看出,原始属性空间中的点x经各自的特征映射函数ϕx)映射后正好是式(1.2.12)和式(1.2.13)的特征空间中的点。而且式(1.2.14)和式(1.2.15)表明二阶特征空间中的两点ϕθ,ϕx)的内积结果会等于原属性空间中两点内积的平方。

更一般地,式(1.2.16)对应一个包含()项的多项式特征映射函数,该特征映射函数由不超过p阶的所有多项式xi1,xi2,···,xik项构成。这样的特征映射将On)-维属性空间的数据映射到Ond)-维特征空间。在如此高维的特征空间里显式地表示特征向量和进行计算均是困难的。函数Kθx)有效地绕开了这一难题。

函数Kθx)有一个专业名称叫核函数(kernel function),每一个这样的核函数都显式或隐式地对应一个特征映射函数ϕx)。核函数本身与本节的回归分析并没有直接关联,它的作用是将衡量高维空间中向量的相似程度测度(ϕθ),ϕx)的内积)的计算转化为在原属性空间中两点内积的结果,再求p次幂,相当于提供了一种间接易实现的方式评估高维空间中不同向量相似程度的方法。但核函数对应的特征映射函数ϕx)则与本节的回归分析有直接关系,它所起的作用是将变量X映射到高维空间后,再在高维空间中进行回归。也就是说,在式(1.2.11)对应的回归模型之前先进行了一个ϕX)特征映射过程。而在原属性空间中的回归方程(式(1.2.1))则相当于经过式(1.2.17)线性核函数对应的恒等变换ϕx)=x后再进行回归。

核函数并不仅限于前述的多项式核函数,式(1.2.18)是一个称为径向基或者高斯核的函数,这个核函数对应的特征映射函数更是将属性变量X映射到一个无穷维的特征空间。不失一般性,假定θx为二维空间中单位圆上的两点,即‖θ‖=‖x‖=1。式(1.2.19)中的倒数第四行至倒数第五行通过泰勒展开式将函数exp(θTx+b)展开成无穷级数和的形式,该级数的每一项的分子部分正是式(1.2.16)中多项式核函数的形式。最终可找到高斯核函数对应的特征映射函数ϕx),该特征映射函数将属性空间中的点x映射到无穷维特征空间中。

前面的分析表明,多属性高阶特征情况下的特征映射函数ϕx)并不容易确定,对于式(1.2.15)形式的多项式核函数,还能写出相应的多项式特征映射函数。对于式(1.2.16)一般形式的核函数,其对应的多项式特征映射函数则复杂得多。而对于高斯核(式(1.2.18))和双曲正切核(式(1.2.20)),更是无法显式写出其对应的特征映射函数,因为它们的特征映射函数将变量X映射到一个无穷维空间。事实上,这里强调这个特征映射函数,仅是为了说明用类似式(1.2.11)的模型进行回归分析,或者SVM等其他凡是利用了核函数的分析方法,本质上是在这个特征映射函数作用下的高维空间里,而不是停留在原属性空间里进行分析的。

这里需要特别强调的是,式(1.2.20)的双曲正切核函数在神经网络中也常常充当神经元的传递函数,这意味着本书后面要介绍的深度学习模型以同样的方式将属性空间映射到高维特征空间,并在高维空间中做回归分析。因此,后文的深度学习模型本质上是从属性空间出发,以逐层递归的方式进行特征映射,不断地在不同的特征空间中进行特征学习(寻找回归方程对应的分类判决平面)。这为深度学习模型背后的工作机理提供了一种解释。

最后,这里用符号作为对前面所介绍内容的总结。特征映射函数ϕx)是联系属性空间与高维特征空间的桥梁,它隐含在核函数Kθx)中。核函数则提供了在属性空间中计算高维特征空间中两点距离测度的计算方法。

前面房价预测的例子中,为得到一个“好”的模型,可能要用到不少一阶、二阶甚至高阶特征。在这些众多的特征中,哪些才是对房屋价格起主要影响的因素?更现实的问题是,面对一个不太熟悉、没有太多先验知识的领域,对于关心的目标变量Y,哪些属性(特征)数据X是需要被收集的?或者说对于手头众多的属性(特征)数据X1,X2,…,Xn,哪些是有用的、需要保留的,哪些是与目标变量关系不大需要被删除或丢弃的?这些问题涉及下一节要讨论的特征选择的问题。

1.2.4 特征选择

如前所述,面对一个具体的领域,有时很难有足够的知识去判断属性特征与感兴趣的目标是不是相关,特征与特征之间是不是相关。因此,在实际应用中的数据搜集阶段,往往会搜集到许多无关特征(irrelevant feature)或者冗余特征(redundant feature)。无关特征的存在会影响模型的可解释性,而冗余特征的存在则会带来线性回归里的多重共线问题,导致模型过拟合。

通过特征选择来消除无关特征或冗余特征,既能增强模型的可解释性,降低过拟合,又能加速模型训练速度,使所得模型具有更好的性能。

常见的特征选择方法包括过滤法(Filter)、包裹法(Wrapper)、嵌入法(Embedded)。下面对这三类方法的思想分别加以介绍。

1.2.4.1 过滤法

过滤法是对众多候选特征{X1,…,Xi,…,Xn}根据某种准则进行打分,得到每个特征的相应得分{S1…,Si,…,Sn}。然后根据特征的得分情况,来决定特征是该被保留还是过滤掉。

最常用的打分准则是考虑特征变量Xi与目标变量Y之间的相关系数ρXiY=,这里分子部分是两个变量的协方差,分母部分是两个变量各自方差的乘积开根号。

相关系数衡量的是两个变量的线性相关程度,相关系数越接近1,表明两个变量越线性相关;相关系数越接近0,表明两个变量线性相关程度越弱。图1.11中前3个具有高相关系数,这表明前3个图对应的特征Xi对目标变量Y具有很强的线性预测能力,应该保留。而最后一个图中的特征Xi则与目标变量Y具有非常弱的线性关系,表明特征Xi对目标变量Y较弱的线性预测能力,可以删除。

上述分析是考虑特征Xi与目标变量Y之间的相关性来决定特征Xi的取舍。但如果用相关系数来分析特征XiXj之间的相关性,取舍的结论则可能完全不同。例如,如果图1.11中4个子图的纵坐标均改成Xj,则其中前3个子图的相关系数取值均较大,表明XiXj有较强的线性相关性,此时可选择丢弃XiXj这两特征之一,因为它们似乎传递了相似的信息。但对于图1.11中最后一个子图,则两个特征都应该保留。

图1.11 相关系数反映变量之间的线性相关程度

用相关系数进行特征选择的一个最大的缺点就是它只检测出线性关系(可以用一条直线拟合的关系),而对于其他存在非线性关系的特征,则无力作出到底是该删除还是保留的决定。图1.12形象地展示出了相关系数在刻画非线性关系方面的不足。

事实上,在进行特征选择时,关注的焦点不应该放在数据关系的类型(线性关系)上,而是要考虑在已经给定一个特征Xi的情况下可为目标变量Y提供多少信息。香农在其《信息论》中提出了一个叫互信息(mutual information)(描述两个特征所共有的信息)或相对熵(描述两个分布律的差异程度)的概念。与相关系数不同,互信息或相对熵依赖的不是数据序列,而是数据的分布,它刻画了包括线性关系在内的更一般的变量间的关系。因此,对于包含非线性关系的变量间的选择,更好的打分准则是用互信息或相对熵。

图1.12 相关系数无法反映变量之间非线性关系

为了能帮助读者在避免抽象的信息量的相关公式下建立对互信息或相对熵的直观含义的理解,这里用随机变量Xi,Y相互独立这一特殊情况下对互信息或相对熵进行解释。

互信息是对两个特征所共有的信息的定量描述。在随机变量XiY相互独立条件下,两随机变量的联合分布律等于各自边缘分布律的乘积,即pXiY)=pXipY)。此时根据式(1.2.21)知它们的互信息为零,即MI(XiY)=0。这意味着两相互独立的随机变量彼此之间没有共有的信息,特征Xi无法为目标变量Y提供任何“信息”,反之亦然。

相对熵则是对两个分布律的差异程度的定量描述。同样在随机变量Xi,Y相互独立条件下,由于pXiY)=pXipY),根据式(1.2.21)可计算得KL(pXiY)||pXipY))=0。这意味着两随机变量的联合分布律与各自边缘分布律的乘积对应的分布没有差异。如果两变量的联合分布律与各自边缘分布律的乘积对应的分布彼此差异比较大,这意味着其中一个变量能为另一变量提供丰富的“信息”,相应的相对熵或互信息取值就较大。

一般地,对于px,qy)两个不同的分布,根据相对熵这一表达式可知,当px,qy)这两个分布完全相同,即px)=qy)时,它们之间的相对熵取值为KL(p||q)=0。当px)和qy)差异越大,相对熵KL(p||q)的取值会越大。因此,相对熵是衡量两个不同分布px,qy)差异程度的量。

与相关系数不同之处在于,互信息或相对熵并不只关注线性关系。图1.13给出了线性关系和非线性关系下的互信息或相对熵的取值情况。

这样,利用互信息或相对熵进行变量选择时,与目标变量Y互信息取值大于某个阈值的那些特征变量Xi将被保留,与目标变量Y互信息取值小于某个阈值的特征变量将被删除。

至于到底要保留多少个特征数k,可结合前述模型选择里介绍的交叉验证办法确定需要保留的前k个得分最高的特征。

显然,过滤法的效果主要取决于所选择的用于对特征进行评分的统计量。这种特征选择的评价标准依赖数据集本身的内在性质,与特定的学习算法无关。因此具有较好的通用性。

1.2.4.2 包裹法

与过滤法不同,包裹法本质上使用的是特征搜索的办法。假定共有n个特征,这n个特征总共可产生2n个不同的子集(包裹)。特征搜索的思想试图从这2n个不同的子集空间里找到一个最合适的子集特征。

在特征数n较大的情况下,穷举2n个不同的子集的蛮力搜索会由于计算代价太高而不可行。因此,封装法更多的是采用启发式搜索办法。算法4给出了从候选特征集F为空集出发,迭代地在最优子集上添加特征的前向搜索过程。

基于算法4筛选出来的特征集所建立的模型一般会有不错的效果,但算法4一般会有较大的计算代价,当算法以={X1,X2,…,Xn}条件终止时,需要调用On2)模型评估算法。

当然,也可以采用反向搜索法,从初始特征集为所有的候选特征集出发,将特征集分别减去一个特征作为子集,对每个子集进行评价。然后在最优子集上逐步减少特征,使得模型性能提升最大,直到减少特征并不能使模型性能提升为止。

1.2.4.3 嵌入法

前面介绍了两类特征选择方法,其中过滤法主要依赖所选用的统计量进行变量的筛选,与使用的具体学习算法本身没有直接关系。包裹法则是在特征子集构成的空间中搜索合适的特征组合,每个特征组合构造一个模型并进行训练,根据训练得到的结果模型性能来选择好的特征组合。嵌入法与这两种方法的不同之处在于,特征选择会在模型的训练过程中自动完成。

图1.13 互信息可刻画变量之间线性关系和非线性关系

假定手头现有的数据中含有X1,X2,…,Xnn个属性变量,由于缺乏足够的领域知识,无法判断这n个属性变量哪些是无关特征(irrelevant feature)或者冗余特征(redundant feature)。嵌入法的做法是不人为地做变量的取舍,而是全部使用这n个属性变量,为它们建立类似式(1.2.1)的模型,然后在式(1.2.3)的优化目标函数中添加关于参数θ的惩罚项,这样优化目标函数就变成式(1.2.22)的形式。

式(1.2.22)中第二项称为惩罚项,其前面参数β称为惩罚因子,它起着调节前后两项相对权重的作用,是一个需要人为设定的超参。由于式(1.2.22)中存在惩罚项,这迫使算法除了要在θ所在的参数空间中寻找合适的值使前一项误差项尽可能小外,还要求找到的这些参数值尽可能接近于零,最好θ里面的各分量零元素尽可能多。如果θ里面的零元素多过非零元素,则称这样的解为稀疏解。显然,式(1.2.22)形式优化目标函数能使算法倾向于找尽可能稀疏的解。

如果θ的某分量θi=0,则相应的变量Xi无论取值如何,均不会对式(1.2.1)中的回归方程模型中的目标变量Y产生影响,这相当于将变量Xi从属性集中删除。这样,以式(1.2.22)为目标函数的算法就在优化过程中同时完成了变量选择的过程。

式(1.2.22)中的惩罚项,数学上称为参数θL2范数。以式(1.2.22)为优化目标的回归模型称为岭回归(ridge regression)。

另一种更好的回归方法称为LASSO(least absolute shrinkage and selection operator)回归,通过在原来的目标函数基础上添加L1范数进行惩罚(式(1.2.23)),起到比岭回归更好的变量选择效果。

由于嵌入法在优化过程中自动实现变量筛选的良好性质,极大地减少了人工干预环节。这是嵌入法与其他两种方法相比最大的优势。嵌入法这种思想后来在深度学习模型中得到广泛应用,并发展出全自动的特征提取方法,为最终发展出端到端的深度神经网络处理模型奠定了基础。

前面的介绍从普通极小二乘回归开始,讨论了回归中普遍存在的过拟合和欠拟合问题,以及实际数据中可能存在的无关变量和冗余变量问题。为克服过拟合和欠拟合问题,需要使用所谓的模型选择方法。为解决实际数中的变量冗余或无关变量问题,则需要相应的变量选择办法。所有这些努力,均是为得到一个更好的预测能力强的模型。

然而,由于机器学习的任务常常是需要从数据(X,Y)中学习变量X与变量Y之间的相关关系,而不是确定关系。因此,无论得到一个泛化能力多强的模型,新数据下产生的这个预测值不太可能恰好等于真实的值y,更可能是两者存在一定的偏差є。接下来从这个偏差所服从的可能的分布出发,从概率的角度审视这个回归方程,从中可以看出统计学中常用的极大似然估计与极小二乘方法的等价性。

1.2.5 回归分析的概率解释

前述回归方程一般描述的是变量之间的一种相关关系,而非确定性的因果关系,因此,回归方程更一般的形式应该是y(i)=hθx(i))+є(i)=θTx(i)+є(i)的形式,即变量y(i)可被分解成θTx(i)和随机误差є(i)两部分。在对数据集(xy(m)代表的研究对象没有任何先验知识的前提下,假定随机误差є(i)服从正态分布是一个合理且自然的做法,即є(i)N(0,σ2)。对此,可得到以下三种等价的描述:

这样,数据集(x,y(m)同时出现的联合概率密度可表示成式(1.2.25)似然函数的形式。

似然函数Lθ)表示的是同时观测到数据集(xy(m)m个数据的可能性的大小。由于对数函数与原函数具有相同的极大值,并且两数相乘的对数等价于这两数的对数之和。因此,出于简化和计算上处理的方便,通常将式(1.2.25)取对数得到所谓的对数似然函数,然后对原来的似然函数Lθ)极大值的讨论转变为对更简单易处理的对数似然函数的极大值的讨论。式(1.2.26)即为对数似然函数θ)。

比较式(1.2.26)和式(1.2.2)不难发现,对数似然函数可表示成θ)=mlog+−Jθ))的形式,这意味着极大化对数似然函数等价于极小化式(1.2.2)中的Jθ)。

上述分析结果表明,在误差є(i)服从正态分布的假定下,极大似然估计与极小二乘估计是等价的,且θ的选择与数据的方差σ2无关。

理解这种等价性的意义在于,通过极小化误差函数求得的模型本质上是使数据集(x,y(m)中所有记录同时被观察到的概率最大的模型,这一洞察对后面要讨论的机器学习模型,包括深度学习模型同样成立。