3 统计机器学习
统计机器学习是近几年被广泛应用的机器学习方法,事实上,这是一类相当广泛的方法。更为广义地说, 这是一类方法学。当我们获得一组对问题世界的观测数据, 如果我们不能或者没有必要对其建立严格物理模型,我们可以使用数学的方法, 从这组数据推算问题世界的数学模型, 这类模型一般没有对问题世界的物理解释, 但是, 在输入输出之间的关系上反映了问题世界的实际, 这就是“黑箱”原理。一般来说,“黑箱”原理是基于统计方法的(假设问题世界满足一种统计分布) , 统计机器学习本质上就是“黑箱”原理的延续。与感知机时代不同, 由于这类机器学习科学基础是感知机的延续, 因此,神经科学基础不是近代统计机器学习关注的主要问题, 数学方法成为研究的焦点。
3.1 统计机器学习概述
统计机器学习方法的基本假设是同类数据具有一定的统计规律性。其目标是从假设空间(也即模型空间,从输入空间到输出空间的映射函数空间)中寻找一个最优的模型。
通过对统计机器学习目标的描述,我们可以发现统计机器学习方法主要研究三个问题:
(1)模型假设:这个问题解决的是如何将样本从输入空间转化到输出空间的,它往往是一个后验概率或者是一个映射函数。
(2)模型选择:模型所在空间也就是假设空间,往往包含无穷多个满足假设的可选模型,如何从假设空间中选择一个最优模型,应该采用怎样的选择标准?这就是模型选择应该解决的问题。一般采用损失函数来制定模型选择策略,将模型选择转化为一个最优化问题来求解。常用的损失函数包括0-1损失、平方误差损失、绝对损失、对数损失等等。通常我们也会在损失函数中加上正则化项,从而降低模型的复杂性,提高模型的泛化能力,拒绝Overfitting。
(3)学习算法:学习算法是用来解决最优化问题的方法。在给定损失函数后,如何快速找到损失函数约定条件下的最优解就是学习算法需要解决的问题。常用的学习算法包括梯度下降、拟牛顿法等等。
统计机器学习方法的三个问题都是非常值得研究的,对于模型假设这个问题,如果模型都选择错误,无论后面如何选择模型,也都难以反映数据集的正确分布。因此,首先需要选择对模型做出正确假设,如何选择模型的假设空间是一个学问,除掉交叉验证的方法之外还有不少其他方法。模型选择的关键在于如何设计损失函数,而损失函数通常包括损失项和正则化项,不同的模型选择策略通常选出的模型也非常不同,从而导致模型的预测效果也大大不同。学习算法比较定式,不同的学习算法不仅学习的效率不同,而且学习出来的效果也不一样。
3.2 统计机器学习的理论基础
机器学习早期研究的特点是以划分为主要研究课题, 这个考虑一直延续到Vapnik 在20 世纪70 年代发展的关于有限样本统计理论, 并于20 世纪80 年代末流传到西方之后,在泛化能力意义下指导算法设计才成为人们关注的主要问题, 这是本文需要进一步讨论的问题。
尽管以Open 问题驱动的BP 算法研究大大推动了感知机研究方向的发展, 然而, 近十年计算机科学与技术的快速发展,使得人们获得数据的能力大大提高, BP 这类算法已不能完全适应这种需求, 同时,Minsky 的算法设计原则愈显重要。
然而,沿着Barlow 路线的机器学习研究并没有终止,自1992年开始,Vapnik 将有限样本统计理论介绍给全世界, 并出版了统计机器学习理论的著作尽管这部著作更多地是从科学、哲学上讨论了机器学习的诸多问题, 但是, 其暗示的算法设计思想对以后机器学习算法研究产生了重要的影响。
Vapnik 的研究主要涉及机器学习中两个相互关联的问题, 泛化问题与表示问题。前者包含两个方面的内容: 其一, 有限样本集合的统计理论; 其二, 概率近似正确的泛化描述。而后者则主要集中在核函数, 由此, 将算法设计建立在线性优化理论之上。
Valiant的“概率近似正确”学习的考虑在机器学习的发展中扮演了一个重要的角色。1984 年,Valiant 提出了机器学习的一个重要考虑, 他建议评价机器学习算法应该以“概率近似正确(PAC)”为基础,而不是以传统模式识别理论中以概率为1 成立为基础,由此, 他引入了类似在数学分析中的ε-δ语言来描述PAC, 这个考虑对近代机器学习研究产生了重要的影响。首先, 统计机器学习理论中泛化不等式的推导均以这个假设为基础;其次, 基于这个考虑的“弱可学习理论”,为研究基于Hebb 路线的学习算法设计奠定了理论基础, 并产生被广泛应用的集群机器学习理念( ensemble )。
3.3 统计机器学习的研究现状
3.3.1SVM与Deep Learning的竞争
当前统计学习领域最热门方法主要有deep learning和SVM(supportvector machine),它们是统计学习的代表方法。
可以认为神经网络与支持向量机都源自于感知机(Perceptron)。感知机是由Rosenblatt发明的线性分类模型(1958年)。感知机对线性分类有效,但现实中的分类问题通常是非线性的。
神经网络与支持向量机(包含核方法)都是非线性分类模型。1986年,Rummelhart与McClelland发明了神经网络的学习算法Back Propagation。后来,Vapnik等人于1992年提出了支持向量机。神经网络是多层(通常是三层)的非线性模型,支持向量机利用核技巧把非线性问题转换成线性问题。
神经网络与支持向量机一直处于“竞争”关系。SVM应用核函数的展开定理,无需知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾难”。而早先的神经网络算法比较容易过训练,大量的经验参数需要设置;训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优。
神经网络研究领域领军者Hinton在2006年提出了神经网络Deep Learning算法,使神经网络的能力大大提高,向支持向量机发出挑战。Deep Learning假设神经网络是多层的,首先用RestrictedBoltzmann Machine(非监督学习)学习网络的结构,然后再通过Back Propagation(监督学习)学习网络的权值。
3.3.2 支持向量机SVM
SVM方法是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilber空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题。升维,就是把样本向高维空间做映射,一般情况下这会增加计算的复杂性,甚至会引起“维数灾难”,因而人们很少问津。但是作为分类、回归等问题来说,很可能在低维样本空间无法线性处理的样本集,在高维特征空间中却可以通过一个线性超平面实现线性划分(或回归)。一般的升维都会带来计算的复杂化,SVM方法巧妙地解决了这个难题:应用核函数的展开定理,就不需要知道非线性映射的显式表达式;由于是在高维特征 空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾难”.这一切要归功于核函数的展开和计算理论.
选择不同的核函数,可以生成不同的SVM,常用的核函数有以下4种:
⑴ 性核函数K(x,y)=x·y;
⑵多项式核函数K(x,y)=[(x·y)+1]d;
⑵ 向基函数K(x,y)=exp(-|x-y|^2/d^2)
⑶ 层神经网络核函数K(x,y)=tanh(a(x·y)+b).
3.3.2.1 SVM有如下主要几个特点:
(1)非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射;
(2)对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;
(3)支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量。(4)SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题。
(5)SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
(6)少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:
①增、删非支持向量样本对模型没有影响;
②支持向量样本集具有一定的鲁棒性;
③有些成功的应用中,SVM 方法对核的选取不敏感
3.3.2.2 SVM的两个不足:
(1) SVM算法对大规模训练样本难以实施
由 于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存 和运算时间。针对以上问题的主要改进有有J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、张学工的 CSVM以及O.L.Mangasarian等的SOR算法。
(2) 用SVM解决多分类问题存在困难
经典的支持向量机算法只给出了二类分类的算法,而在数据挖掘的实际应用中,一般要解决多类的分类问题。可以通过多个二类支持向量机的组合来解决。主要有一对多组合模式、一对一组合模式和SVM决策树;再就是通过构造多个分类器的组合来解决。主要原理是克服SVM固有的缺点,结合其他算法的优势,解决多类问题的分类精度。如:与粗集理论结合,形成一种优势互补的多类问题的组合分类器。
3.3.2 DeepLearning
DeepLearning本身算是MachineLearning的一个分支,简单可以理解为Neural Network的发展。大约二三十年前,Neural Network曾经是ML领域特别火热的一个方向,但是后来确慢慢淡出了,原因包括以下几个方面:
(1) 比较容易过训练,参数比较难确定;
(2) 训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优;
所以中间有大约20多年的时间,神经网络被关注很少,这段时间基本上由SVM和Boosting算法主导。但是,Hinton坚持下来并最终(和Bengio、Yann.lecun等)提成了一个实际可行的Deep Learning框架。
3.3.3.1 Deep Learning与传统的神经网络异同
Deep Learning与传统的神经网络的相同在于Deep Learning采用了神经网络相似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,只有相邻层节点之间有连接,同一层以及跨层节点之间相互无连接,每一层可以看作是一个Logistic Regression模型;这种分层结构,是比较接近人类大脑的结构的。
而为了克服神经网络训练中的问题,DL采用了与神经网络很不同的训练机制。传统神经网络中,采用的是Back Propagation的方式进行,简单来讲就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和label之间的 差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。而DeepLearning整体上是一个Layer-Wise的训练机制。这样做的原因是因为,如果采用Back Propagation的机制,对于一个Deep Network(7层以上),残差传播到最前面的层已经变得太小,出现所谓的Gradient Diffusion。
3.3.3.2 Deep Learning训练过程
(1)采用无标定数据(有标定数据也可)分层训练各层参数,这一步可以看作是一个无监督训练过程,是和传统神经网络区别最大的部分(这个过程可以看作是feature learning过程):具体的,先用无标定数据训练第一层,训练时可以采用auto-encoder来学习第一层的参数(这一层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层),由于模型capacity的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数;这里面需要重点理解auto-encoder以及sparse的机制的原理和作用。可以参考这篇文章。
(2)基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于DL 的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;所以deep learning效果好很大程度上归功于第一步的feature learning过程。
总之,deep learning能够得到更好地表示数据的feature,同时由于模型的层次、参数很多,capacity足够,因此,模型有能力表示大规模数据,所以对于图像、语音这种特征不明显(需要手工设计且很多没有直观物理含义)的问题,能够在大规模训练数据上取得更好的效果。此外,从模式识别特征和分类器的角 度,deep learning框架将feature和分类器结合到一个框架中,用数据去学习feature,在使用中减少了手工设计feature的巨大工作量(这是目前工业界工程师付出努力最多的方面),因此,不仅仅效果可以更好,而且,使用起来也有很多方便之处。
评论
查看更多