零起点Python机器学习快速入门【1.0】
第 1 章 从阿尔法狗开始说起1.1 阿尔法狗的前世今生百度百科的“阿尔法狗”词条是阿尔法狗 AlphaGo是一款围棋人工智能程序由谷歌 Google旗下 DeepMind 公司的戴密斯·哈萨比斯、大卫·席尔瓦、黄士杰与他们的团队开发其主要工作原理是“深度学习”。2016 年 3 月该程序与围棋世界冠军、职业九段选手李世石进行人机大战并以 4:1 的总比分获胜。 2016 年年末至 2017 年年初该程序在中国棋类网站上以“大师” Master为注册账号与中国、日本、韩国数十位围棋高手进行快棋对决连续 60 局无一败绩。不少职业围棋手认为阿尔法围棋的棋力已经达到甚至超过围棋职业九段水平在世界职业围棋排名中其等级分曾经超过排名人类第一的棋手柯洁。2017 年 1 月谷歌 Deep Mind 公司 CEO 哈萨比斯在德国慕尼黑DLD数字、生活、设计创新大会上宣布推出真正 2.0 版本的 AlphaGo。其特点是摈弃了人类棋谱只靠深度学习的方式成长起来挑战围棋的极限。现代社会已经进入后互联网时代信息资源随手可得大数据产业风生水起科技创新层出不穷不过类似工业革命、卫星登月、原子弹爆炸、Internet 信息高速公路等级别的重大科技突破却一直没有出现甚至有学者认为目前的社会处于科技停滞阶段。直到 2016 年 3 月谷歌公司的 AlphaGo 横空出世与围棋世界冠军、职业九段选手李世石进行人机大战并以 4:1 的总比分获胜。这个结果震惊了整个社会特别是学术界人工智能领域的从业人员。过去人们一直认为围棋是人类智慧的最后堡垒 19×19 的围棋棋盘矩阵可以衍生出天文数字的组合变化至少在 50 年内由于计算机技术的限制人工智能无法达到人类职业选手的标准。没想到 AlphaGo 轻松战胜了人类的围棋冠军。AlphaGo 程序虽然神秘但其核心算法却很简单源自古老的 Monte Carlo 蒙特卡洛算法。2006 年欧洲数学家 Rémi Coulomb、 Kocsis 和 Szepervari 等学者在研究围棋程序时结合蒙特卡洛算法与对手树搜索算法设计出一种全新的算法 MCTS 蒙特卡罗树搜索算法。MCTS 全称是 Monte Carlo Tree Search即蒙特卡罗树搜索算法是一种在人工智能问题中做出最优决策的方法它结合了随机模拟的一般性和树搜索的准确性。而古老的蒙特卡洛算法正是源自世界上最古老的国际大赌场蒙特卡洛。事实上现代统计学、博弈学甚至金融领域的量化投资都不同程度地源自赌场和蒙特卡洛算法。1.2 机器学习是什么百度百科的“机器学习”词条是机器学习 Machine Learning ML是一门多领域交叉学科涉及 概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门 研究计算机怎样模拟或实现人类的学习行为以获取新的知识或技能 重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的 核心也是使计算机具有智能的根本途径其应用遍及人工智能的各个 领域其主要使用归纳、综合而不是演绎。Machine Learning中文版是《计算机科学丛书机器学习》是机器学习的经典图书被卡内基梅隆等许多大学作为机器学习课程的教材书中主要涵盖了目前机器学习中各种最实用的理论和算法包括概念学习、决策树、神经网络、贝叶斯学习、基于实例的学习、遗传算法、规则学习、基于解释的学习和增强学习等。该书作者 Tom Mitchell 在他这本书的序言开场白中给出了一个机器学习的定义。机器学习这门学科所关注的问题是计算机程序如何随着经验积累自动提高性能。Marshland 也在 Machine Learning: An Algorithmic Perspective 一书的序言中从算法角度这样描述机器学习。机器学习最有趣的特征之一就是它介于几个不同理论学科之间主要是计算机科学、统计学、数学和工程学。机器学习经常被作为人工智能的一部分来进行研究这把它牢牢地置于计算机科学中。若要理解为什么这些算法能够有效工作则需要一定的统计学和数学头脑这往往是计算机科学专业的本科生所缺少的能力。1.3 机器学习大史记机器学习是人工智能研究较为年轻的分支它的发展过程大致经历了三次高潮 20 世纪 40 年代到 60 年代的萌芽期。 20 世纪 60 年代末期到 80 年代的摸索期。 20 世纪 90 年代到目前的崛起期。1. 萌芽期20 世纪 40 年代到 60 年代属于机器学习的萌芽期以下是期间的一些标志性事件。 1最早的人工神经网络原型1943 年神经科学家和控制论专家 Warren McCulloch 与逻辑学家Walter Pitts 基于数理逻辑算法创造了一种神经网络计算模型这是最早的人工神经网络原型。 2 Hebb 赫布学习规则1949 年心理学家赫布 Donald Hebb基于神经心理学的学习机制提出了一种学习假说即 Hebb 赫布学习规则开启了机器学习的第一步Hebb 赫布学习规则是一种典型的无监督学习规则与“条件反射”机理一致并且已经得到了神经细胞学说的证实。1948 年研究人员将这种计算模型的思想应用到了 B 型图灵机上。1954 年 Farley 和物理学家 Wesley A. Clark 在 MIT 首次用计算机模拟了一个赫布网络。 3图灵测试图灵测试是人工智能哲学方面第一个严肃的提案图灵测试一词源自阿兰·图灵 1950 年的论文《计算机器与智能》。阿兰·图灵 Alan Turing是英国数学家、逻辑学家被视为计算机科学之父。 1931 年阿兰·图灵进入剑桥大学国王学院毕业后到美国普林斯顿大学攻读博士学位。1950 年图灵发表了一篇划时代的论文《计算机器与智能》文中提出了著名的图灵测试如果一台机器能够与人类展开对话通过电传设备而不能被辨别出其机器身份那么称这台机器具有智能。2014 年 6 月 8 日一台计算机计算机尤金·古斯特曼是一个聊天 机器人一个电脑程序成功地让人类相信它是一个 13 岁的男孩成为 有史以来首台通过图灵测试的计算机。这被认为是人工智能发展的一个 里程碑事件。 4第一台神经网络机20 世纪 50 年代初期科学家 Walter Pitts 和 Warren McCulloch 是最早的“神经网络”研究学者他们分析了理想化的人工神经元网络并且指出了它们进行简单逻辑运算的机制。当时 24 岁的研究生马文·闵斯基是他们的学生 1951 年他与 Dean Edmonds 一起建造了第一台神经网络机称为 SNARC。在接下来的 50 年中闵斯基是 AI 领域最重要的领导者和创新者之一。 5第一批机器人棋手游戏 AI 一直被认为是评价 AI 进展的一种标准。1951 年 Christopher Strachey 使用曼彻斯特大学的 Ferranti Mark 1 机器写出了一个西洋跳棋 Checkers程序 Dietrich Prinz 则写出了一个国际象棋程序。 1952 年 IBM 科学家亚瑟·塞缪尔开发了一个跳棋程序。该程序能够通过观察当前位置并学习一个隐含的模型从而为后续动作提供更好的指导。塞缪尔发现伴随着该游戏程序运行时间的增加其可以实现越来越好的后续指导最终该程序的棋力甚至可以挑战专业棋手。通过这个程序塞缪尔驳倒了普罗维登斯提出的“机器无法超越人类且无法像人类一样写代码和学习的模式”。他创造了“机器学习”一词并将它定义为“可以提供计算机能力而无须显式编程的研究领域”。奇努克 Chinook是由美国艾尔伯特大学计算机科学家 Jonathan Schaeffer 及其同事开发的一款国际跳棋人工智能程序。 1994 年这个程序 击败了人类国际跳棋世界冠军马里恩·廷斯利 Marion Tinsley这是机 器程序第一次在竞技游戏中获得官方世界冠军。 2007 年这个程序完成了 国际跳棋每一步最佳解决方案的信息数据库成为国际跳棋领域不可能 被击败的存在。 6逻辑理论家1955 年 Newell 和 Simon后来荣获诺贝尔奖在 J. C. Shaw 的协助下开发了“逻辑理论家 Logic Theorist”。这个程序能够证明《数学原理》中前 52 个定理中的 38 个其中某些证明比原著更加新颖和精巧。 Simon认为他们已经“解决了神秘的心/身问题解释了物质构成的系统如何获得心灵的性质。 ”这一断言的哲学立场后来被 John Searle 称为“强人工智能”即机器可以像人一样具有思想。 7达特矛斯会议1956 年的达特矛斯会议是人工智能历史上一个里程碑这次会议确定了 AI 人工智能的名称和目标被业界认为是 AI 人工智能诞生的标志。与会者包括 Ray Solomonoff、 Oliver Selfridge、 Trenchard More、 Arthur Samuel、 Newell 和 Simon 他们中的每一位都是未来 AI 领域的殿堂级专家。会上纽厄尔和西蒙讨论了“逻辑理论家”而 McCarthy 则说服与会者接受“人工智能”一词作为本领域的名称。 8感知机与最小二乘法1957 年心理学家罗森·布拉特基于神经感知科学背景提出了第二模型 非常的类似于今天的机器学习模型它比 Hebb 赫布学习规则更加实用。基于该模型罗森·布拉特设计出了第一个计算机神经网络——感知机 The Perceptron它模拟了人脑的运作方式。3 年后维德罗首次使用 Delta 学习规则用于感知机的训练步骤这种方法后来被称为最小二乘方法这两者的结合创造了一个良好的线性分类器。2. 摸索期20 世纪 60 年代末期到 80 年代属于机器学习的摸索期这段时期机器学习的发展步伐几乎处于停滞状态。这主要是因为当时的人工智能领域的理论研究已经远远领先于当时的硬件水平独立设备严重滞后当时的计算机有限的内存和 CPU 运算速度不足以解决任何实际的 AI 问题。以下是摸索期的一些标志性事件。 1 KNN 最近邻算法1967 年 KNN 最近邻算法 the Nearest Neighbor Algorithm出现由此计算机可以进行简单的模式识别。KNN 最近邻算法是机器学习当中最简单的方法之一其设计思想与中国成语“人以类聚、物以群分”类似 KNN 算法的核心思想是如果一个样本在特征空间中的 k 个最相邻的样本中的大多数属于某一个类别则该样本也属于这个类别。 2 BP 和 MLP 神经网络算法1974 年伟博斯在博士论文中提出了用误差反向传导来训练人工神经网络有效解决了异或回路问题使得训练多层神经网络成为可能。1981 年伟博斯在神经网络反向传播 BP算法中提出 MLP 多层神经网络算法模型。1985—1986 年神经网络专家鲁梅尔哈特、辛顿、威廉姆斯-赫、尼尔森等人先后提出了 MLP 与 BP 训练相结合的理念。至今 BP 算法和 MLP 神经网络算法仍然是主流的机器学习算法。MLP Multi-layer Perceptron多层神经网络算法也称为 MLP 多层感 知器是一种经典的神经网络算法 MLP 算法已被证明是一种通用的函 数近似方法可以被用来拟合复杂的函数或解决分类问题。 MLP 在 20 世纪 80 年代曾是相当流行的机器学习方法拥有广泛的应用场景比如 语音识别、图像识别、机器翻译等但自 20 世纪 90 年代以来 MLP 遇 到来自更为简单的支持向量机的强劲竞争。但由于深层学习的成功 MLP 又重新得到了关注。 BP Error Back Propagation算法又被称为误差反向传播算法。 BP 算法的基本思想是学习过程由信号的正向传播与误差的反向传播两个 过程组成。由于多层前馈网络的训练经常采用误差反向传播算法所以 人们也经常将多层前馈网络直接称为 BP 网络。 3决策树算法决策树方法最早产生于 20 世纪 60 年代是一种逼近离散函数值的方法。它是一种典型的分类方法首先对数据进行处理利用归纳算法生成可读的规则和决策树然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程。1986 年人工智能专家 J.Ross Quinlan 提出了著名的 ID3 算法可以减少树的深度大大加快运行速度。后来 C4.5 算法在 ID3 算法的基础上进行了较大改进使决策树算法既适合于分类问题又适合于回归问题。国 际 权 威 的 学 术 组 织 —— 数 据 挖 掘 国 际 会 议 ICDM the IEEE International Conference on Data Mining在 2006 年 12 月评选出了数据 挖掘领域的十大经典算法 C4.5 算法排名第一。 C4.5 算法是机器学习算 法中的一种分类决策树算法其核心算法是 ID3 算法。3. 崛起期20 世纪 90 年代到目前属于人工智能、机器学习的崛起期崛起的最主要的两个原因是 计算机硬件飞速发展特别是 GPU 图形运算加速卡以及计算机集群技术的发展使电脑的运算比 20 世纪 80 年代提高了数万倍。 互联网产业的普及与推广网络上面沉淀了海量的数字化资源大数据产业的崛起为机器学习提供了足够的研究和分析素材。以下是这段时期的一些标志性事件。 1 Boosting 算法Boosting 是一种提高任意给定学习算法准确度的方法其思想起源于Valiant 提出的 PAC Probably Approximately Correct学习模型。Valiant 和 Kearns 提出了弱学习和强学习的概念识别错误率小于 1/2即准确率仅比随机猜测略高的学习算法称为弱学习算法识别准确率很高并能在较短时间内完成的学习算法称为强学习算法。1990 年 Schapire 构造出一种多项式级的算法对该问题做了肯定的证明这就是最初的 Boosting 算法。一年后 Freund 提出了一种效率更高的 Boosting 算法。但是这两种算法存在共同的实践上的缺陷那就是都要求事先知道弱学习算法正确的下限。1995 年 Freund 和 Schapire 改进了 Boosting 算法提出了 AdaBoost Adaptive Boosting算法更容易应用到实际问题当中。之后 Freund 和Schapire 进一步提出了改变 Boosting 投票权重的 AdaBoost. M1、 AdaBoost. M2 等算法在机器学习领域受到了极大的关注。 2 SVM 向量机算法1995 年瓦普尼克和科尔特斯提出 SVM Support Vector Machines向量机算法也称为 SVM 支持向量机算法。SVM 向量机算法是一个有监督的集成决策树算法模型通常用来进行模式识别、分类以及回归分析支持向量机的提出有很深的数学理论背景。SVM 向量机算法是近年来机器学习领域中一个最重要的突破从此将机器学习分为神经网络算法和 SVM 向量机算法两大流派。SVM 向量机算法应用核函数的展开定理无须知道非线性映射的显式表达式。由于是在高维特征空间中建立线性学习机所以与线性模型相比不但几乎不增加计算的复杂性而且在某种程度上避免了“维数灾难”。神经网络算法特别是深度学习算法能够实现更加艰难的任务如目标识别、语音识别、自然语言处理等但这绝对不意味着其他机器学习方法的终结。尽管深度学习的成功案例迅速增长但是对这些模型的训练成本是相当高的调整外部参数也很麻烦。同时 SVM 向量机算法的简单性促使其成为广泛使用的机器学习方式。 3深蓝人机国际象棋大赛1997 年 5 月 11 日对于人工智能行业而言可以说是历史性的一天 IBM 的“深蓝”电脑在国际象棋比赛中首次击败了等级分排名世界第一的棋手加里·卡斯帕罗夫。蓝电脑的胜利标志着国际象棋和人工智能的新时代。“深蓝”是美国 IBM 公司生产的一台超级国际象棋电脑 重 1270 公斤有 32 个“大脑”微处理器每秒钟可以计算 2 亿步。深蓝输入了 100 多年来优秀棋手的 200 多万对局。人与计算机的首次国际象棋对抗赛是在 1963 年国际象棋大师兼教练大卫·布龙斯坦怀疑计算机的创造性能力同意用自己的智慧与计算机较量。1996 年 2 月 10 日超级电脑“深蓝”首次挑战西洋棋世界冠军卡斯帕罗夫但以 2 : 4 落败。 4 RF 随机森林算法随机森林算法英文名称 Random Forest简称 RF 算法是一种集成决策树模型由布雷曼博士在 2001 年提出它是由一个随机子集的实例组成并且每个节点都是从一系列随机子集中选择且由于这个性质被称为随机森林 RF。其算法在理论和经验上证明了该算法对过拟合的抵抗性是一种非常稳健的机器学习算法模型。 5 Deep Learning 深度学习2006 年神经网络专家 Hinton 提出了神经网络 Deep Learning 深度学习算法使神经网络的能力大大提高向 SVM 支持向量机发出挑战。当前机器学习领域最热门的两大算法是 Deep Learning 深度学习算法和 SVM 向量机算法它们都是给予统计学的机器学习方法。深度学习的概念源于神经网络的研究是机器学习研究中的一个新的领域其动机在于建立、模拟人脑进行分析学习的神经网络模仿人脑的机制来解释数据例如图像、声音和文本。 5 AlphaGo 围棋大师阿尔法狗 AlphaGo是一款围棋人工智能程序由谷歌 Google旗下 DeepMind 公司的戴密斯·哈萨比斯、大卫·席尔瓦、黄士杰与他们的团队开发其主要工作原理是“深度学习”。关于阿尔法狗 AlphaGo 的更多资料请参见前文或浏览相关网页在此不再重复。