Scikit-learn机器学习详解(上)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 机器学习和人工智能

机器学习(ML, Machine Learning)是人工智能(AI,Artificial Intelligence)领域中关于通过学习过程归纳出预测模型的一个分支,它使机器具有无须通过明确的编程就能够自动学习,从过往经验中归纳知识、进行自我改进提升的能力。这里机器一般是指某种形式的计算机系统,而过往经验是指以某种形式表示的数据。当一个用户在电商网站购物时,网站会动态地向用户推荐相关的商品,这是因为电商网站会根据用户历史搜索或购买的商品种类、数量等数据,分析用户的喜好,进而智能地给用户推荐相关商品。

“机器学习”一词是由人工智能和计算机游戏的先驱、IBM的科学家亚瑟·李·塞缪尔(Arthur Lee Samuel)于1959年发明的,他被后人誉为“机器学习之父”。他将机器学习定义为“使计算机无须明确编程即可拥有学习能力的研究领域”(“field of study that gives computers the capability to learn without being explicitly programmed”)。1949年加入IBM波基普西实验室(Poughkeepsie Laboratory)后,亚瑟·李·塞缪尔创建了世界上第一个计算机学习程序,这是一个跳棋游戏的程序,其独特之处在于,每次玩跳棋后,程序总会变得更好,能够纠正错误并从历史数据中获得更好的取胜方法。1987年,他被IEEE计算机协会授予计算机先驱奖(Computer Pioneer Award)。图1-1为亚瑟·李·塞缪尔。

图1-1 亚瑟·李·塞缪尔(1901.12—1990.07)

机器学习与常规软件编程不同。在常规软件编程中,为了使计算机工作,需要把输入数据和测试过的一串指令语句(程序)提供给计算机,然后计算机利用其计算功能,按照给定的程序一步一步执行,最后给出输出结果。例如计算简单的5+6,需要提供加数5、6,以及编写赋值语句、加法语句和输出语句,计算机会按部就班地执行,并输出结果11;而对于机器学习来说,需要提供的是大量的输入数据和输出结果数据(目标数据),计算机依次处理所有数据并为自己产生一个程序(称为模型),然后可以使用这个程序(模型)去解决其他业务问题,甚至这个程序(模型)可以嵌入到其他常规软件中使用。简单来说,机器学习就是一种利用历史数据,训练并构建模型,然后使用模型进行决策的一种技术。

图1-2展示了常规软件编程和机器学习之间的不同。

图1-2 机器学习和常规软件编程

人工智能也是当前最热门的计算机技术之一,它是一门关于使机器模仿人类能力的学科,与机器学习有着密切的关系。机器学习是人工智能中训练机器拥有学习能力的一个子集,也就是说,所有机器学习都是人工智能,但并非所有人工智能都是机器学习。例如,符号逻辑(规则引擎,专家系统和知识图谱)属于人工智能的范畴,而不能归为机器学习。如图1-3为机器学习和人工智能的关系。

图1-3 机器学习和人工智能之间的关系

人工智能的基本含义是使机器(计算机)能像人类一样具有推理、分析和规划的能力,成为人类大脑的延伸和扩展,代替人类完成某些智慧性活动,例如自然语言处理、数据挖掘学习、医学诊断等等。人工智能是人工智能之父John McCarthy教授于1955年提出的,根据John McCarthy的解释:“It is the science and engineering of making intelligent machines, especially intelligent computer programs”,我们可以认为人工智能是关于智能机器或智能程序的科学,是计算机技术“智能+”的典型应用,简单来说,可以使一个计算机系统能够展示如人类一般智慧的技术都可以被称作人工智能。

从上面图1-3中可以看出,人工智能最早出现,机器学习于1990年前后兴起,它主要使用归纳、综合法,即主要基于数据,寻找数据内在规律,并把这个内在规律应用于业务。机器学习通过让机器模拟人类的学习行为,使其获取新的知识或技能,并可以通过重新组织已有的知识结构,不断改善自身的性能。尽管人工智能曾经被以专家系统等其他方式研究,但是机器学习是当前人工智能研究的核心,也是使计算机具有人类智能的根本途径。

深度学习的概念由Hinton等人于2006年提出,是机器学习研究中的一个新的领域,它源于人工神经网络的研究,目的在于建立模拟人脑进行分析学习的神经网络,例如模仿人脑的机制来解释图像、声音、文本等数据。深度学习通过组合低层特征,形成更加抽象的高层表示,以发现数据的分布式特征。

图1-4进一步说明了机器学习与人工智能、深度学习之间的关系。

图1-4 机器学习和人工智能深度学习之间的关系

综上所述,机器学习,包括深度学习,是实现人工智能应用的必由之路。而机器学习的实现是依靠算法来完成的,可用于机器学习算法的语言有很多,其中Python、java、C/C++、JavaScript、R排在前五名,特别是Python,它被称为开发人工智能应用的殿堂级语言。

亚马逊首席执行官贝索斯(Jeff Bezos)说:“AI在未来20年对社会产生的影响之大怎么评估都不为过”;谷歌首席执行官桑达尔·皮查伊(Sundar Pichai)也曾说过:“过去10年我们一直在做一件事,那就是打造移动优先的世界,而在接下来的10年时间里,我们将转到一个AI优先的世界。”从亚马逊到Facebook,再到谷歌、微软,以及国内的百度、阿里、腾讯等全球有影响力的顶尖技术公司,都纷纷将目光转向了人工智能。可以说,我们即将迎来一个全新的AI时代!