1.5 开始你的机器学习之旅
机器学习在很大程度上是一种权衡(trade-off)的艺术,没有一种机器学习的方法一定优于另一种,一种算法在获得某种优势的同时也将受限于某种劣势。设计一个好的机器学习系统需要对各种因素通盘考虑,结合任务需求和数据特性,选择合适的机器学习方法。
1.5.1 训练、验证与测试
我们从一个最简单的机器学习任务开始。要完成这一学习任务,我们将实验过程分为训练(Training)和测试(Testing)两个阶段。训练相当于我们平时在课堂上学知识(机器学习是学习模型);测试相当于我们的期末考试,用来测试训练过程是否取得了足够好的学习效果。
- 训练:给定一个包含若干样本的训练集(Training Set),对模型进行参数调整,使得该模型在训练集上的性能越来越好。
- 测试:将训练完成的模型在一个独立的测试集(Test Set)上进行测试,通过在该测试集上获得的性能来判断模型的好坏。
这里有一个问题:为什么模型性能要在一个独立的测试集上验证,而不是在训练集上?这是因为在很多情况下,经过反复训练可以让模型对训练数据有充分的代表性,因此在该数据集上表现出良好性能,但对不包含在训练集中的数据性能反而会越来越差。这有些像我们平时读书备考,如果只是将课本背得滚瓜烂熟,却不会举一反三,那么考试时肯定得不到好成绩,因为考试肯定会出书本上没有的问题,过于沉溺书本就失去了对新问题的解决能力。机器学习也是如此,训练过度后,模型对训练数据描述得过细,以至于失去了代表新数据的能力,这种现象称为过拟合(Over-Fitting)。相反,如果对训练数据的学习达不到要求,得到的模型在其他数据集上的性能也不会好,这种现象称为欠拟合(Under-Fitting)。这类似于一个学生连课本上的知识点都没有掌握,在考试中肯定也会一败涂地。
如何防止过拟合呢?一个简单的方法是在训练时用测试集检验模型的性能,当模型性能在测试集上开始下降的时候,即认为出现了过拟合,此时停止训练会得到一个在测试集上性能最好的模型。但这一方法在训练时用到了测试数据信息,得到的模型对测试集产生了依赖。为防止这一问题,通常会单独设计一个验证集(Validation Set),基于验证集进行模型选择,选择出的模型在测试集上进行测试,将该测试结果作为模型性能的评价。
1.5.2 Occam剃刀准则
一般来说,越复杂的模型含有的参数越多,越容易对训练数据描述过细,产生过拟合。然而,过于简单的模型又不具有较好的描述能力,无法学到足够的知识。因此,选择合适的模型复杂度对解决实际问题特别重要。一般遵循的准则是:“在保证足够描述能力的前提下尽量选择最简单的模型”,这一准则称为Occam剃刀准则(Occam's Razor)。
1.5.3 没有免费的午餐
机器学习中有那么多模型,有没有一种模型完胜其他模型呢?答案是没有。所谓模型好坏都是相对特定任务、特定场景、特定数据而言的。如果一个模型在某一场景、某一数据下具有某种优势,则在其他场景、其他数据下必然具有相应的劣势,这一原则称为No Free Lunch原则,即常说的“天下没有免费的午餐”。这一原则是机器学习实践中的基本准则(23)(24),它告诉我们对具体任务要具体分析,选择与任务相匹配的模型,才能得到较好的效果。这也提示我们要学习每种模型背后的基础假设和适用条件,唯其如此,才能对不同任务设计出合理的模型结构和合理的学习方法。
1.5.4 对初学者的几点建议
常有初学者问这样的问题:机器学习难吗?答案应该是“Yes or NO”。一方面,机器学习确实很难,有那么多的算法、理论、公式,发展又如此迅速,新方法层出不穷,让人无所适从。另一方面,如果理解了各种算法的发展脉络和内在联系,就会发现绝大部分算法都是顺延着某一主线一脉相承下来的,不同算法之间都有或多或少的关联,如果将这些脉络和关联理清楚,掌握机器学习并不是很难的事情。
特别要注意的是,机器学习是一门科学。既然是科学,就有自己的理论体系和思维方式。对于初学者,应该尽可能理解每种方法的基本思想和基本原理。这一点对年轻人尤为重要:现在有很多开源工具可用,很容易养成拿来主义、不求甚解的坏习惯,这对从事这方面的研究是非常有害的。另一方面,机器学习又是一门实践性很强的科学,理论联系实践非常重要。初学者应多动手实践,在实践中提高自己分析问题和解决问题的能力。最后,要认识到机器学习本身是有局限性的,还有很多问题需要解决。谦虚谨慎地学习,在实践中积累经验,是初学者应有的态度。