导读:在传统的科学研究中,学科与学科之间的融合与交流并不多,而有一门学科则做到了融合计算机科学、统计学、数学、工程学这些学科,甚至将其应用范围扩展至经济、生物、医药、物理、化学等领域中,这就是机器学习。
在过去的十年中,机器学习的这种多学科魅力逐渐被人们所理解并推崇。
作者:史蒂芬·马斯兰(Stephen Marsland)
如需转载请联系大数据(ID:hzdashuju)
假设你经营着一家网站,出售自己编写的软件。现在想让网站为用户提供更加个性化的服务,所以你开始收集访问者的数据,比如他们的电脑型号、操作系统、浏览器、居住的国家,以及在一天中访问该网站的时间。
这些数据可以从任何访问者那里得到,并且对于那些真正想要购买的用户来说,你能够了解到他们购买的东西,以及付款的方式(如PayPal、信用卡)。
因此,对于每一个在网站消费的用户,你可以得到像电脑型号,浏览器,国家,时间,购买的软件,付款方式这样的数据清单。比如,你收集到的前三条数据可能是这样的:
Macintosh OS X, Safari, UK, morning, SuperGame1, credit card
Windows XP, Internet Explorer, USA, afternoon, SuperGame1, PayPal
Windows Vista, Firefox, NZ, evening, SuperGame2, PayPal
以这些数据为基础,你希望在网站里添加一个“你可能感兴趣的商品”的栏目,从而展示出可能与每一个访问者的需求有关的软件,这基于的是网页载入时你可以访问的数据,即电脑型号、操作系统、国家以及时间。
你希望随着更多的人访问网站而收集更多的数据,从而发现一些趋势。比如来自于新西兰的Mac用户青睐第一款游戏,或者那些对电脑更加精通的Firefox用户需要自动下载应用程序等。
当收集了大量这样的数据之后,你开始观察它们,思考能够用这些数据做些什么。你面对的是一种预测(prediction)问题:根据所拥有的数据,预测下一个用户将要购买什么商品。并且你认为这种预测能够奏效的原因在于,看上去相似的人,他们的行为常常也具有相似性。
那么应该怎样着手解决这个问题呢?这也是所谓的监督学习(supervised learning)的一个例子,因为我们知道了对应于一些样本的正确结果(实际购买的软件),所以可以把这些已知正确结果的样本提供给学习器。
01 如果数据有质量,地球将成为黑洞
在世界的各个角落,计算机每天都在采集和存储着数以TB级的数据。即使不考虑你收藏的MP3和节假日的照片,还有属于商店、银行、医院、科学实验室以及其他更多地方的正在不停存储数据的计算机。
举例来说,银行建立关于人们如何花钱的记录,医院记录下对不同疾病的患者所采取的医疗措施,汽车中的引擎监控系统会记录下引擎的状况以便检测出何时会发生故障。这里的挑战在于如何对数据进行有用的处理:
如果银行的计算机能够学习到消费的模式,它们能否快速检测出信用卡欺诈?
如果医院之间共享数据,那么那些效果没有达到预期的治疗措施能否快速被发现?
一辆智能汽车能否在早期就给出引擎隐患的警报,以至于你不会在最糟糕的地方抛锚?
这些都是能够用机器学习的方法解决的问题。
科学研究中也同样使用计算机来存储大量的数据。首先是在生物学中,测量DNA微阵列中的基因表达将产生大量的数据集,同时还有蛋白质转录数据以及可用来描述各物种之间进化关系的系统进化树。
其他学科也紧随其后,天文学现在使用数码望远镜,每天晚上世界各地的天文台会存储有关夜空的难以置信的高分辨率图像,大约每晚有1TB。欧洲核子研究中心的大型强子对撞机每年产生大约25PB的数据。
同样,在医学里,大到核磁共振成像,小到血液测试,这些医疗测试的结果也都被存储起来。
数据爆炸已经广为人知,如何应用这些数据去做一些有用的事情对我们来说不失为一个挑战。
▲图1-1 一组数据点作为表格数值和图表上的点。相比于表格数据,我们更容易观察可视化数据。但如果数据有三个以上的维度,我们就无法一次查看所有数据
这些数据集的大小和复杂度意味着人类无法从中获取有用的信息。甚至连数据的存储方式也对我们不利。面对一个满是数字的文件,我们通常都不愿意长时间阅读。然而,若取出相同数据中的一部分,并且在图中标记出来,我们就能有所作为。
比较一下图1-1中的表格和图像:显然图像更容易观察和处理。不幸的是,我们生活的三维世界不容许我们对更高维度的数据进行处理。就连我们已经收集的简简单单的网页数据也包含了四个不同的特征,因此如果每一个特征用一个维度表示的话,我们将需要四个维度!
面对这种情况,有两种处理方法:降低维度(直到我们“简单”的大脑能够处理这个问题),或是使用计算机(它并不觉得高维的问题困难,并且不会对查看大量由数字组成的数据文件感到厌烦)。
▲图1-2 相同的两个风力涡轮机(位于新西兰阿什赫斯特的Te Apiti风力发电场),相差约30°拍摄的两幅视图。三维物体的二维投影会隐藏信息
图1-2中的两幅图表明了降低维度(更严格地说,映射到更低的维度)带来的一个问题,即这样做会掩盖某些有用的信息,并且使图像看上去很奇怪。上面讨论的问题正是机器学习变得如此流行的原因之——有了电脑的帮助,很多超出人类极限的问题都能够得到解决。
此外,如果维度不是远大于三的话,可以使用其他的符号(glyph)表示,如数据点的大小或是颜色来描述其他维度的信息,但是如果数据集有100个维度的话,这种方法也无能为力了。
事实上,很有可能在某个时候你已经接触到了机器学习的算法。它们在我们使用的很多软件程序中都有所应用,例如微软Office中臭名昭著的paperclip工具(也许不是什么正面的例子)、垃圾邮件过滤器、声音识别软件以及大量的电脑游戏。
它们也是加油站安全监控摄像头以及收费公路上使用的自动车牌识别系统的一部分,并且在防滑刹车以及车辆稳定性系统中也有应用,甚至还是银行决定是否给你提供贷款的一套算法中的一部分。
这一节的这个吸引人的标题只有在数据量非常巨大的时候才是正确的。我们很难计算出世界上所有的计算机中一共有多少数据,但是据某报告估计,2006年有大约160EB(160×1018字节)的数据被制造和存储,2012年增长到2.8ZB(2.8×1021字节),到2020年,这个数字将会增长到40ZB。
然而,要制造一个地球大小的黑洞,其质量需要达到约40×1035克。这意味着,数据如此沉重,你甚至连钢笔大小的数据都提不动,更不必说一台计算机了。
然而对于机器学习,事情变得更加有趣,预测2012年数据量将达到2.8ZB的同一份报告(Big Data,Bigger Digital Shadows,and Biggest Growth in the Far East by John Gantz and David Reinsel,EMC Corporation)中还指出,这些数据仅有25%具有有效信息,只有大约3%的数据被标记,而实际用于分析的数据不到0.5%!
02 学习
在我们深入研究这个话题之前,不妨先后退一步,思考一下究竟什么是学习。对于机器来说,我们需要考虑的关键性概念是从数据中学习,因为数据正是我们所拥有的,某些情况甚至是数以TB级的。
不过,把它用人类行为的术语来翻译也不是很难,那就是从经验中学习。我们都认同人类以及其他的动物通过从经验中学习,能够展现出我们称之为智能的行为。学习给我们提供了生活中的灵活性。事实上,无论我们的年龄有多大,都能够调整和适应新的环境,学习新的技艺。
动物学习的关键部分是记忆(remembering)、适应(adapting)和泛化(generalizing):识别出上一次遇到的这种情况(看到这个数据),我们试验了某个特定的动作(给出了这个输出),并且起到了作用(是正确的),因此我们将再一次尝试这个动作,或者若没有起作用,我们将尝试一些不同的东西。
最后一个词——泛化,它的含义是识别出不同情况之间的相似之处,使得应用在一个地方的东西在别处也能有所应用。这使学习变得有用,因为我们可以把知识应用在不同的地方。
当然,对于智能来说,还有很多其他的内容,比如推理(reasoning)和逻辑演绎(logical deduction),但这里我们不会过多地关注那些。我们感兴趣的是智能最基础的部分——学习和适应,以及如何在计算机中来模拟。
在应用计算机推理和演绎方面人们也有过很多的兴趣。这是最早期的人工智能(Artificial Intelligence)的基础,并且常常被称为符号处理(symbolic processing),因为这种情况下计算机操作的是能反映环境的符号。与此相反,机器学习的方法有时被称为是亚符号(subsymbolic)的,因为它不包含符号或是符号的操作。
03 机器学习
机器学习,其含义是使计算机改进(modify)或是适应(adapt)它们的行为(不管这些行为是做出预测还是控制机器人),从而使这些行为变得更加准确,这里的准确性是通过测量这些行为在多大程度上反映了正确的行为而得到的。
想象一下,你正在和一台计算机玩Scrabble游戏(或是某些其他的游戏)。也许在开始的时候,你每次都能打败它,但是在许多局过后,它开始打败你,直到最后你再也不能获胜。
这可能部分归因于你的水平在变差,另一部分是因为计算机在学习如何在Scrabble游戏中获胜。当学会如何打败你之后,它可以继续在其他的玩家身上使用同样的策略,这样就不用在与每一个新玩家进行游戏的时候都从零开始学习。这就是泛化的一种形式。
直到大概十年前,机器学习内在的多学科性才得到了认可。它融合了神经科学、生物学、统计学、数学以及物理学的观点,使得计算机能够学习。
关于学习的可行性有一个极好的证据,那就是在你的两只耳朵之间的由水和电(以及一些微量化学元素)组成的袋状物。我们将简要地研究一下它的内部构造,并且看看有没有什么东西能够借鉴到机器学习算法中来。
结果当然是有的,并且神经网络(neural network)正是从此发展而来,尽管现在连它们的发明者都不再予以承认,但经过发展,神经网络已经被重新解释为统计性的学习器。
另一个驱动机器学习研究方向改变的是数据挖掘(data mining),它研究的是从大规模的数据集中提取出有用的信息(这里的挖掘是由使用计算机的人,而不是拿着镐戴着安全帽的人来进行的),它需要的是高效的算法,这又把更多的重心放回到了计算机科学上。
机器学习方法的计算复杂度(computational complexity)将同样是我们感兴趣的,因为我们制造出来的是算法(algorithm)。这非常重要,因为我们可能想把某些方法应用在很大的数据集上,那些与数据集的大小成高阶多项式时间复杂度(甚至更糟)的算法将会是一个问题。
这里所说的复杂度通常分为两个部分:训练的复杂度,以及应用训练好的算法的复杂度。训练并不是经常发生,所以通常对时间的要求不是很苛刻,时间长一些也可以接受。
然而,我们在测试一个数据点时,通常需要能够快速给出结论,而且当一个算法投入使用之后,这样的测试点可能会有很多,因此较低的计算成本是必不可少的。
04 机器学习的类别
在本文开始的网站例子中,我们的目标是根据收集的信息,对网站的访客可能购买哪种软件做出预测。这里有几件有趣的事情。首先是数据,知道访客之前购买过的软件以及访客的年龄可能会有用。
然而,这些信息不可能从他们的浏览器中得到(即使是cookie,也不能告诉你某个人的年龄),因此无法使用这些信息。挑选你想要使用的变量(专业术语称为特征(feature))对于找到问题合适的解来说,是很重要的一部分。
同样,选择如何处理数据也是很重要的。这在例子中时间的获取上有所体现。你的计算机可以记录精确到毫秒的时间,但这样做毫无意义,因为你想要做的是发现用户之间相似的模式。
基于这个原因,在前面的这个例子中,我选择把时间量化为四个范围——上午、下午、晚上、夜间,显然我需要确保这些时间对于其所在时区来讲是正确的。
我们把学习不精确地定义为通过训练从而在某项工作上做得更好。这导致了几个很重要的问题:计算机如何知道它是否表现得更好,抑或是更差,以及它如何知道怎样才能有所提高?对于这些问题,有几个不同的但都是合理的答案,而且基于此产生了不同类型的机器学习。
我们可以把某个问题的正确答案提供给算法,这样下一次算法遇到同样问题的时候就可以得到正确的结果(这就是在网站例子中发生的,因为我们知道这位用户已经购买了什么软件)。
但是,我们希望只提供给算法部分正确的答案,然后它能够自动地发现问题所有的正确答案(泛化)。或者,我们所能做的是告知算法某一个答案是否正确,但并不告知如何去寻找正确的答案,这样它必须对正确的答案进行搜索(search)。
这里的一个变化是我们根据某个答案的正确程度给它一个得分,而不是只响应一个“正确或是错误”。最后一种情况,我们可能根本没有正确的答案,只能设法让算法去寻找具有相似性的输入。
上面针对这个问题的不同回答,给我们将要讨论的机器学习类别提供了一个好的分类方法:
监督学习(supervised learning):提供了一个由包含正确回答(目标(target))的样本组成的训练集(training set),并且以这个训练集为基础,算法进行泛化,直到对所有可能的输入都给出正确的回答。这也称为从范例(exemplar)中学习。
无监督学习(unsupervised learning):没有提供正确的回答,取而代之的是算法试图鉴别出输入之间的相似之处,从而使有着共同点的输入被归类为(categorized)同一类。非监督学习的统计学方法称为密度估计(density estimation)。
强化学习(reinforcement learning):强化学习介于监督学习和非监督学习之间。当答案不正确时,算法会被告知,但如何去改正则不得而知。它需要去探索,试验不同的可能情况,直到得到正确的答案。强化学习有时被称为伴随评论家(critic)的学习,因为它只对答案评分,而不提出改进的建议。
进化学习(evolutionary learning):可以将生物学的进化看成一个学习的过程,即生物有机体改变自身,以提高在所处环境下的存活率和拥有后代的概率。我们将研究如何在计算机中对这一过程建模。在此使用适应度(fitness)的概念,相当于是对当前解答方案好坏程度的评分。
05 机器学习过程
以下简要阐释机器学习算法选择、应用、评估问题的过程。
1. 数据收集和准备
在少数情况下,面对新的问题,我们需要从头开始收集数据,或者至少需要重组和准备数据。事实上,如果问题是全新的,那么可以选择适当的数据,这个过程应该与下一步特征选择合并,这样可以仅收集需要的数据。
这通常可以通过组合一个相当小的数据集来完成,该数据集需要包含你认为可能有用的所有特征,并在选择最佳特征、收集和分析完整数据集之前进行试验。
通常,困难在于存在大量可能相关的数据,但很难收集这些数据,因为需要进行多次测量,或者因为它们处于各种位置并包含各种格式,不仅如此,我们很难恰当地融合它们,而且还要确保它们是干净的(clean),也就是说,没有重大错误或缺少数据等问题。
对于监督学习,还需要目标数据,这可能需要相关领域的专家参与和大量时间投入。
最后,需要考虑数据量。机器学习算法需要大量数据,最好没有太多噪声。但是随着数据集规模的增加,计算成本也在增加。对于大量数据,没有额外计算的“最优平衡点”通常很难预测。
2. 特征选择
它通过实验鉴别了对于问题最有用的特征。这就要求对于问题和数据的先验知识,对于上面的硬币示例,常识可帮助我们识别一些可能有用的特征并排除其他特征。
除了识别对学习器有用的特征之外,还必须要求数据收集不必花费大量费用或时间,并且对收集过程中可能出现的噪声和其他数据损坏具有鲁棒性(robust)。
3. 算法选择
本书为你准备了对于给定数据集的算法(或算法群)选择方法,为此还包括了每个算法的基本原理知识及其使用示例。
4. 参数和模型选择
对于许多算法,必须手动设置参数,或者需要实验来识别适当的值。本书也会在合适的章节讨论这个问题。
5. 训练
给定数据集、算法和参数,训练应当只是使用计算资源来构建数据模型,以便预测关于新数据的输出。
6. 评估
在系统投入应用之前,需要对其进行测试并评估其在未经训练数据上的准确性。这通常包括与该领域的人类专家进行比较,以及为此选择适当的度量指标。
关于作者: 史蒂芬·马斯兰(Stephen Marsland),新西兰惠灵顿维多利亚大学数学与统计学院教授,兼任新西兰复杂系统卓越研究中心项目主管,负责复杂性、风险与不确定性等相关主题的研究工作。研究兴趣是几何和复杂系统的应用,主要涉及形状空间、机器学习和算法。
本文摘编自《机器学习:算法视角》(原书第2版),经出版方授权发布。
延伸阅读《机器学习:算法视角》
点击上图了解及购买
转载请联系微信:DoctorData
推荐语:CRCPress机器学习领域畅销教材,知名媒体推荐的十大机器学习入门教材之一。
据统计,99%的大咖都完成了这个神操作
▼
更多精彩
在公众号后台对话框输入以下关键词
查看更多优质内容!
PPT | 报告 | 读书 | 书单 | 干货
大数据 | 揭秘 | Python | 可视化
人工智能 | 机器学习 | 深度学习 | 神经网络
AI | 1024 | 段子 | 区块链 | 数学
猜你想看
Q: 你在研究哪一类机器学习?
欢迎留言与大家分享
觉得不错,请把这篇文章分享给你的朋友
转载 / 投稿请联系:baiyu@hzbook.com
更多精彩,请在后台点击“历史文章”查看
点击阅读原文,了解更多