本节书摘来自华章出版社《机器学习与R语言(原书第2版)》一书中的第1章,第1.3节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.3 机器如何学习
机器学习的一个正式定义是由计算机科学家Tom M. Mitchell提出的:如果机器能够获取经验并且能利用它们,在以后的类似经验中能够提高它的表现,这就称为机器学习。尽管这个定义是直观的,但是它完全忽略了经验如何转换成未来行动的过程,当然学习总是说起来容易做起来难。
虽然人类大脑从出生就自然地能够学习,但计算机学习的必要条件必须要明确给出。基于这个原因,尽管理解机器学习的理论不是严格必需的,但这个基础还是有助于理解、区分和实现机器学习算法。
当你比较机器学习和人类学习时,会发现你正在从不同角度来检视自己的思维。
无论学习者是人还是机器,基础的学习过程都是类似的。这一过程可以分解为如下4个相关部分:
数据存储:利用观测值、记忆存储,以及回忆来提供进一步推理的事实依据。
抽象化:涉及把数据转换成更宽泛的表示(broader representation)和概念(concept)。
一般化:应用抽象的数据来创建知识和推理,从而使得行动具有新的背景。
评估:提供反馈机制来衡量学习的知识的用处以便给出潜在的改进之处。
下图展示了学习过程的步骤:
![6e9bdb65d09c5e50629f4b0b24fc7f65e54b6bb8](https://i-blog.csdnimg.cn/blog_migrate/de0fd07f44a476c43a80783a404e29c5.png)
记住,尽管学习过程在概念上分解为4个不同的部分,但是这仅仅是为了便于阐述才这么归类的。事实上,学习的这4个部分是紧密相连的。对人类来说,整个过程都是下意识地发生的。我们收集数据,推理数据,归纳数据,最后用心灵的“眼睛”发现规律,因为这个过程是潜在的,所以人与人之间的任何不同都归功于主观性这一模糊的概念。然而对于一台计算机来说,这些步骤是显式的,因为整个过程是透明的,所以学习到的知识能在未来行动中被检验、转换和应用。
1.3.1 数据存储
所有的学习必须从数据开始。人类和计算机都用数据存储作为更高级推理的基础。对于人类,这由大脑构成,大脑应用生物细胞网络中的电化信号存储和处理短期或者长期回忆的观测值。计算机使用硬盘、闪存、随机存储器(RAM)以及中央处理器(CPU)来存储短期和长期的回忆。
这样说看起来很显然,但是仅仅存储和获取数据的能力对于学习是不够的。如果没有更深的理解,知识仅局限于回忆,那么意味着除了以前已经见到过的以外,没有获取其他更多的信息。数据在硬盘上就是0和1。它们是存储的记忆,没有更多的意义。
为了更好地理解这个思想的细微之处,想象一下你最近一次参加的一场高难度的考试,该考试可能是大学里的一次期末考试或者一次资格证书考试。在考试之前,你想有过目不忘的本事吗(就像拍照那样)?如果你这么想过,当你知道过目不忘的本事不可能帮助你太多时,你可能会失望。即使你全部记住了这些材料,你的死记硬背也是没有用的。除非你提前知道考试中会出现的确切问题和答案。否则,你将被局限于试图把所有会考的问题的答案都记忆下来。显然,这种方式不具备持久性。
更好的方法是,花费时间选择并记住一部分有代表性的观点,同时对这些观点的相关性和如何应用已经记住的信息进行有策略的开发。这样,不用死记硬背就可以理解大量的观点。
1.3.2 抽象化
给数据赋予含义的工作是在抽象化过程中进行的,在这一步中,原始数据具有了更抽象的含义。对象(object)和它们的表示(representation)之间的联系可以用René Magritte(雷内·马格利特)的著名画作《The Treachery of Images》(图像的背叛)来说明,如下图所示。
![c44b777a104e4195d25be10f276bacc0d339c3c3](https://i-blog.csdnimg.cn/blog_migrate/644b9c1c8f0a7c1d8a1b091758cf453a.png)
这幅画展示了一个烟斗和一行字“Ceci n'est pas une pipe”(这不是一个烟斗)。Magritte想要表达的观点是,表现出来的烟斗并不是一个真实的烟斗。尽管事实上那个烟斗并不真实,但是任何看到这幅画的人都能很轻易地认出这张照片展示了一个烟斗,这表明观察它的人的思想能够连接图画中的烟斗和观念中的烟斗,接着就和真实的那种能拿在手里的烟斗联系在一起。像这样的抽象连接是知识表示的基础,是帮助把原始的感官信息转变成有意义洞察的逻辑结构信息的基础。
在知识表示的过程中,计算机用一个模型来概括存储的原始数据,这个模型是数据中模式的一个显式描述。就像Magritte的烟斗一样,模型表示用到了原始数据之外的生活常识。它表达了一个超过所有部分之和的概念。
有很多种不同类型的模型,你可能对其中的一些模型比较熟悉。例如:
数学方程。
像树和图这样的关系图。
逻辑上的如果/否则(if/else)关系。
把数据分组为类。
模型的选择通常不是由机器来完成的,而是由学习任务和可用的数据类型来决定的。本章的后续部分将详细地讨论选择模型类型的方法。
用模型来拟合数据集的过程称为训练。当模型被训练后,数据就转换为一种汇总了原始信息的抽象形式。
你可能疑惑:为什么这一步骤称为训练而不称为学习呢?第一,注意学习的过程不会因为数据抽象化过程的结束而终止。学习者还必须一般化和评估其训练。第二,“训练”这个词更好地隐含着人类老师以某种特定方式训练机器学生来理解数据这个事实。
必须指出的是机器学习模型自身并不会提供新的数据,但是它的确会带来新的知识。怎么会这样呢?其答案是:通过假定数据元素如何关联的一个概念,把假定的结构应用在基础数据上来给出对不可见现象的洞察。例如万有引力的发现过程。通过用方程来拟合观测的数据,Isaac Newton(艾萨克·牛顿)爵士推导出了万有引力的概念。但是我们现在知道万有引力原本就是一直存在的,只是在牛顿发现它之前它没有被认识到,直到牛顿以抽象概念的方式认识了它,这些概念把一些数据和其他数据相关联,特别是把它变成用来解释观测到的落下来的物体模型中的参数g,它才被作为一个概念来认识。
![95a6ca782fd55c831208bff0f1b66770b19f0ba4](https://i-blog.csdnimg.cn/blog_migrate/c9b872fc13f5b3478a1cac3231362510.png)
几个世纪以来,大多数的模型并没有导致科学观念在理论方面的发展。但是模型仍然可发现数据中原来无法看清的关系。由染色体数据所训练的模型可能会发现多个基因之间的结合导致糖尿病出现的情况;银行可能会发现一个表面上没有危害的交易类型总是有规律地出现在诈骗活动之前;心理学家可能发掘出几个特征的结合暗示了一个新的心理失调的出现。内在模式是永远存在的,但是通过用不同的格式把信息概念化,一个模型新的想法就被概念化了。
1.3.3 一般化
直到学习者能够把抽象知识应用到未来的行动中去,学习过程才算完成。在抽象化的过程中可能发现无数的内在模式,同时还有多种方法对这些模式建模,有些模式会比其他模式更有用。除非抽象化的过程有所限制,否则学习者将不能继续。此时学习过程仍旧会卡在问题的起点—空有大量的信息但是没有可以转化为行动的洞察。
一般化这个术语描述了把抽象化的知识转换成可以用于未来行动的一种形式的过程,这些行动针对和以前类似但不完全相同的任务。某种程度上,一般化是一个难以描述的模糊过程。从传统意义上来说,它被想象成训练过程中对所有可用于数据抽象化的模型(即理论或者推理)的搜索过程。换句话说,如果你设想一个包含所有从数据建立的可能模型(或理论)的集合,一般化就是把这个集合中的理论的数量减少到一个可以管理的数目。
一般而言,通过逐一检验模式并对它们未来应用进行排序的方式来减少模式的数量是不可行的。机器学习算法一般应用一些能快速缩小搜索空间的捷径方法。为了这个目的,算法应用启发式方法,它们有训练地猜测在何处能找到最有用的推理。
由于启发式方法利用相近原理和其他一些经验法则,所以它不能保证找到单一的最优模型。然而,如果不利用这些捷径方法,从大的数据集中找到有用信息的任务就变得不可能了。
启发式方法通常被人类用来快速地把经验推广到新的场景(new scenario)。如果你曾经在充分评估你的情况之前应用直觉来做出快速决定,那么你已经不自觉地使用了精神启发式方法。
人们快速决策的非凡能力通常不是依赖于计算机式的逻辑,而是由情绪所引导的启发式方法。有时候,这种决策会得到不合逻辑的结论。例如,尽管统计上的结果是汽车更加危险,但很多人还是认为飞机旅行比汽车旅行更可怕。这可以由已有的启发式方法来解释,即人们通过对回忆过去案例的难易程度来判断一个事件可能性的倾向。有关飞行旅行的事故会被高度宣传,这种令人震惊的事件更容易被人们回想起来,然而汽车事故却鲜有刊登在报纸上。
误用启发式方法的愚蠢并不局限于人类。机器学习算法应用启发式方法有时也会导致错误的结论。如果算法的结论是系统性的谬误或者错误,就说该算法有偏差。
例如,假设一个机器学习算法学习通过寻找位于(表示嘴巴的)一条线上方两侧的两个(表示眼睛的)圆来识别人脸。这个算法可能在识别那些不符合这个模型的人脸时出现问题,或者说产生偏差。算法不能识别的人脸可能包括戴眼镜、转动一定角度、侧视或者有深色皮肤的人脸。类似地,对那些特定肤色、脸型或者其他不同于机器所理解的世界(即其他特征的人脸)的特征,机器就会产生偏差。
![a1b62cb33362bc505277fedf1e1f9ab18be48074](https://i-blog.csdnimg.cn/blog_migrate/0f55602074480bdba0157564aae32a1a.png)
现代用法中,“偏差”一词带有负面的含义。各种形式的媒体都经常宣称没有偏见,声称客观报道事件,没有受情绪左右。但是,细想想,其实有一点偏差也许是有用的。如果没有任何的专断,在几个各有长处和短处的相互竞争的选项中做出选择就变得困难了。确实,当今心理学领域的一些研究指出,出生时就损坏了掌管情绪的那部分大脑的人在做决定时是无所适从的,他们可能花费几个小时来纠结一些简单的决定,比如穿什么颜色的衬衫或者在哪里吃饭。矛盾的是,有时候偏差会使我们无视一些信息,它同时又让我们能够应用一些其他的信息来行动。用来理解一个数据集的方法有无数个,机器学习算法就是如何在其中进行选择。
1.3.4 评估
偏差是与任何机器学习任务的抽象化和一般化这两个过程相联系的不可避免的谬误。为了在面对无数可能的选项时采取行动,每一个学习者都必然以特定的方式具有偏差。因而,每一个学习者都有其弱点,没有一个模型可以胜过所有其他模型。因此,一般化过程的最后一步就是在存在偏差的情况下评估或者判断模型的成功性,并且必要时应用这些信息进行进一步的训练。
一旦你在一个机器学习技巧上取得成功,你可能就想把它应用到每一个任务。抵制这种诱惑是很重要的,因为没有一种机器学习方法在任何场景下都是最优的。这个事实在David Wolpert于1996年发表的“No Free Lunch”(没有免费午餐)理论中有论述,参见 http://www.no-free-lunch.org。
一般而言,在初始数据集上训练模型后对模型进行评估。然后,在一个新数据集上对模型进行检验,以便判断从训练数据得到的特征推广到新的未知数据的好坏程度。值得注意的是,一个模型完美地推广到所有未预见过的情况是极端罕见的。
在某种程度上,由于数据中的噪声或者无法解释的波动导致模型不能完美地一般化。噪声数据是由看起来随机的事件所导致的,比如:
测量错误,由于传感器的不精准,有时候会导致读出的数据增加一些或者减小一些。
与人类主观性有关的问题,比如被调查者为了尽快完成调查问卷,就随意回答问题。
数据质量问题,包括数据的缺失、空值、截断、错误编码或者取值冲突。
太复杂或者很少了解的现象,它们以非系统性的方式影响数据。
试图用模型拟合噪声就是称为过度拟合问题的基础。因为根据定义,噪声是无法解释的,尝试解释噪声会导致错误的结论,该结论不能推广到新的场景中。尝试建立解释噪声的理论也会导致模型更加复杂,从而极有可能忽略了学习者努力去寻找的真实的模式。一个模型在训练时表现得很好,但是当评估时就表现很差的现象,称为过度拟合了训练数据集,即它不能很好地一般化到测试数据集。
![e184a79736fd5616554893974e851ac4d5a7d520](https://i-blog.csdnimg.cn/blog_migrate/fb3f1967d4212648f3e84eea811ea9d0.png)
过度拟合问题的解决办法视具体的机器学习方法而不同。就现在而言,重要的是要意识到问题的存在。模型处理噪声数据的好坏是判断模型成功与否的一个重要方面。