图 4 一个简单的决策树
接下来就是ML领域最重要的一个突破——支持向量机(SVM)。SVM由大师Vapnik and Cortes[10] 在1995年提出,它有很强的理论论证和实证结果。自此之后,ML社区就楚河汉界划分为NN和SVM两派。2000年左右,随着核方法的提出,SVM大占上风,在很多领域上都超过了NN模型。除此之外,SVM还发展了一系列的针对NN模型的基础理论,包括凸优化、泛化间隔理论和核方法。可以说,在这个时段,SVM的发展无论是理论还是实践都占尽天时地利,因而发展速度极快。
图 5 From Vapnik and Cortes [10]
不仅在外部遭到了巨大的挑战,NN内部也发生了问题。1991年的Hochreiter[40]和2001年的Hochreiter[11]的工作,都表明在使用BP算法时,NN单元饱和之后会发生梯度损失。简单来说,训练NN模型时,超过一定的迭代次数后,再迭代NN模型就很容易过拟合。
再往前一点点,另一个坚实的ML模型AdaBoost在1997被Freund和Schapire提出,该算法最大的特点在于组合弱分类器形成强分类器。这个成果为它的作者赢得了Godel奖。Adaboost通过给那些难的样例更高的权重来对那些容易训练的分类器进行训练。该模型在脸部识别和检测方面应用的很广。它还是PAC(概率近似正确理论)的一种实现。通常来说,所谓的弱分类器都被Adaboost用来当树桩——即单个的决策树节点。他们这样来描述Adaboost:
作为一个良好的在线预测模型的抽象扩展,Adaboost可以被解释为一个通用的决策理论设置…[11]
另外一个可以将多个决策树组合起来的模型在2001年被Breiman[12]提出。该模型被称为随机森林(RF),因为它的每个组成节点都是随机的选择一组示例和一组特征。RF也拥有理论上和实验上的抗过拟合的证据。甚至有些数据Adaboost都不能很好的克服过拟合和离群点的时候,RF都能有很好的鲁棒性。RF在很多其他不同领域比如Kaggle比赛上都有很成功的表现。
随机森林是一个树预测器的组合体,每棵树都取决于一个独立同分布的随机向量。因而整个森林的泛化误差随着森林数目的增多而收敛[12]。
时间终于走到了当下,一个新的NN领域——深度学习出现了。在这个阶段,NN模型可以拥有多层。3层的NN模型在2005年被Hinton,LeCun, Bengio, Andrew Ng等诸多大师一一实现。下面列举了一些深度学习上的重要概念:
Ø GPU programming
Ø Convolutional NNs [18][20][40]
Ø Deconvolutional Networks [21]
Ø Optimization algorithms
Ø Stochastic Gradient Descent [19][22]
Ø BFGS and L-BFGS [23]
Ø Conjugate Gradient Descent [24]
Ø Backpropagation [40][19]
Ø Rectifier Units
Ø Sparsity [15][16]
Ø Dropout Nets [26]
Ø Maxout Nets [25]
Ø Unsupervised NN models [14]
Ø Deep Belief Networks [13]
Ø Stacked Auto-Encoders [16][39]
Ø Denoising NN models [17]
将上面列举的这些技术和想法综合到一起,NN模型迎来了又一个春天,在物体识别、语音识别、自然语言处理等方面,均击败之前的最高水平的技术。但重要的事,这并不意味着其他ML流派的终结,即使现在深度学习的成功故事还在一个接一个的上演,仍然有着参数众多、训练花费巨大的缺陷。而且,SVM由于其简单性仍然被广泛使用。
在结束之前,我们再介绍一个相对年轻的ML趋势,随着www和社会媒体的发展,大数据出现且影响了很多ML的研究。因为大数据中的问题数据量都极大,很多强大的ML算法在机器性能的限制下都变得有些无用(对大公司来说自然不是这样)。因此,研究人员提出了一套简单模型——dubbed Bandit Algorithms[27-38],这些算法都是在线学习算法,都能适应大规模问题。
这只是一个简单的ML历史的介绍,若有问题,欢迎指出。