机器学习概述
机器学习的目标是让程序能够从给定的输入中计算出期望的输出,而不需要给出一个明确的方法。举个例子,机器学习的一个经典应用是文本识别,即获取手写文本并将其转录成文字。在此,给定的输入是手写文本的图片;期望的输出是手写文本表示的字符串。
任何一位邮政工作者都可以告诉你,文本识别挺难。每个人的字迹都不同,而且还有人笔迹潦草,有时候钢笔墨水会漏在纸上,有些书写的纸又脏又破。回顾一下第一章里面的图1,解读图片是一个未曾解决的问题。这不像玩棋盘类游戏,我们有理论上可以实现的步骤,只是需要启发式应用。我们并不知道图像识别的步骤是什么,所以需要一些特别的方式——这就让机器学习有了用武之地。
对于文本识别的机器学习程序,我们通常需要给它提供许多手写字符的范例来进行训练,每个范例都标有对应的实际字符,如图13所示。
识别手写字符(本例中为数字)的机器学习程序训练数据,训练目标是这个程序能够自动识别手写数字。
刚才描述的这种机器学习类型被称为监督式学习 ,它有一个至关重要的要点:机器学习需要数据,大量的数据。事实上,正如我们即将看到的,提供精心制作的训练数据集合对机器学习的成功至关重要。
我们训练程序进行机器学习时,必须仔细设计训练数据集合。首先,我们通常只会使用一小部分可能的输入和输出来训练程序,在手写数字识别示例中,我们不可能向程序展示所有可能存在的手写字符,那根本不现实。再说了,如果我们可以向程序展示所有可能的输入集,那么就根本不需要机器来学习什么了:机器只需要记住每一个输入对应的输出就行了。无论何时对它进行输入,它只需要查找相应的输出即可——这不算机器学习。因此,一个程序必须只能使用可能存在的输入输出集合的一小部分进行训练,但是如果训练数据量太小,那么程序没有足够的信息来学会人们所期望的输入到输出的映射。
训练数据的另一个基本问题是特征提取 。假设你在一家银行工作,银行需要一个机器学习程序来学习识别不良信贷风险。程序的训练数据是过去许多客户的记录,每个客户的记录上会标注他信贷记录是否良好。客户记录通常包括他们的姓名、出生日期、住址、年收入、交易记录、贷款记录和相应的还款信息等。这些信息在训练数据中被称为特征 。不过,所有的特征在程序训练中都有意义吗?其中某些特征可能和该客户的信贷风险毫无关系。如果你事先不知道哪些特征和机器要学习的目标有关系,那么你可能试图将所有特征都放入训练数据中。但是,这样就会产生一个很严重的问题,被称为维度诅咒:训练数据包含的特征越多,你需要给程序提供的训练数据量就越大,程序学习的速度也就越慢。
最简单的应对方式就是只在训练数据中包含少量的特征,但这也会引起一些问题。一方面,你可能不小心忽略了程序正确学习所必需的特征,即确实标明客户信贷记录不良的特征,另一方面,如果你没有合理地选择特征,可能会在程序中引入偏差。例如,假设你给不良信贷风险评估程序训练数据里面导入的唯一特征是客户地址,那么很可能会导致程序在完成机器学习以后带有地域歧视。人工智能程序或许会变得有偏见,这种可能,以及它所引发的问题,我们将在后面详细探讨。
在另一种机器学习方式——强化学习 中,我们不给程序任何明确的训练数据:它通过决策来进行实验,并且接收这些决策的反馈,以判断它们是好是坏。例如,强化学习被广泛应用于训练游戏程序。程序玩某个游戏,如果它赢了,就会得到正反馈,如果它输了,就会得到负反馈。不管正负,它得到的反馈都被称为奖励 。程序将会在下一次玩游戏的时候考虑奖励的问题,如果它得到的是正面的奖励,那么下一次玩的时候它更倾向使用同样的玩法,如果是负面的,那它就不太可能这样做。
强化学习的关键困难在于,许多情况下,奖励反馈可能需要很长的时间,这使得程序很难知道哪些行为是好的,哪些行为是坏的。假设强化学习的程序输了一场游戏,那么,究竟是游戏中的哪一步导致了失败呢?如果认为游戏中的每一步都是错误的,那肯定算总结过度。但我们怎么分辨究竟哪一步是错的?这就是信用分配 问题[10] 。我们在生活中也会遇见信用分配问题。如果你抽烟的话,很可能在未来收到与之有关的负面反馈,但是这种负面反馈通常会在你吸烟很久以后(通常是几十年)才会收到。这种延迟的反馈很难让你戒烟。如果吸烟者在吸烟以后立即就能收到负面反馈(以危及生命和健康的方式),那么我认为,烟民数量一定会锐减。
到目前为止,我们还没提到程序是怎样进行学习的。机器学习作为一个学科领域,拥有同人工智能一样长的历史,也同样庞大。在过去的60年里,人们发展过各式各样的机器学习技术。不过近年来机器学习的成功源自一种特殊的技术:神经网络。其实,神经网络是人工智能中最古老的技术之一:1956年,约翰·麦卡锡在人工智能暑期学校里提出的最初建议就包括神经网络。但直到本世纪,它才再度引起了人们的广泛关注。
神经网络,顾名思义,灵感来自大脑内组成神经系统的神经细胞——神经元 的微观结构。神经元是一种能够以简单的方式相互交流的细胞,自神经元发起的纤维突起,被称为轴突 ,与其他神经元进行连接,连接的“交叉点”被称为突触 。一般来说,神经元通过突触连接来接收电化学信号,并且根据接收的信号,产生输出信号,然后由其他神经元通过突触连接接收。关键的是,神经元接收到的输入有着不同的权重:有些输入比其他的更重要,有些输入甚至可能抑制神经元,阻止它产生输出。在动物的神经系统中,神经元组成的网络是相互联系的:人脑大约有1000亿个神经元,人脑中的神经元通常有数千个连接。
因此,神经网络的构想,就是在机器学习的程序中引入类似的结构。毕竟,人类大脑已经充分证明了神经系统能够有效地学习。
本书评论