机器学习简介
一、人工智能与机器学习
说到人工智能,就不得不提图灵测试。图灵测试是阿兰图灵在1950年提出的一个关于机器是否能够思考的著名实验,测试某机器是否能表现出与人等价或无法区分的智能。主要内容是:测试者与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。 进行多次测试后,如果测试者不能确定出被测试者是人还是机器,那么这台机器就通过了测试,并被认为具有人类智能。
通常我们认为一个智能系统需要具有以下几个能力:
- 语言能力--自然语言处理:能成功地用自然语言交流
- 记忆能力--知识表示:存储它知道的或听到的信息
- 推理能力--自动推理:运用存储的信息来回答问题并推出新结论
- 学习能力--机器学习:适应新情况并检测和预测模式
- 感知能力--计算机视觉:感知物体
- 规划能力--自动规划:根据资源制定执行策略
由此我们可以看出,机器学习是人工智能的一个分支,它是人工智能研究发展到一定阶段的必然产物。
二、机器学习的发展
二十世纪五十年代到七十年代初,人工智能研究处于”推理期“,人们认为只要能赋予机器逻辑推理能力,机器就具有智能。
随着研究向前发展,人们逐渐认识到,仅仅具有逻辑推理能力是远远实现不了人工智能的。要使机器具有智能,必须设法使机器拥有知识。
二十世纪七十年代中期开始,人工智能研究进入了“知识期”,但人们又认识到,由人来把知识总结出来再教给计算机是非常困难的。有人想到,如果机器能够自己学习知识就好了。
二十世纪八十年代是机器学习成为一个独立的学科领域、各种机器学习技术百花初绽的时期。(实际上最早图灵在1950年图灵测试的文章中就曾提到机器学习的可能,五十年代到七十年代有一些机器学习的研究如基于神经网络的连接主义学习、感知机、基于逻辑表示的符号主义学习、以决策理论为基础的学习技术、强化学习等。但机器学习独立成为一个学科领域是在八十年代。)
这时候,人们把机器学习划分为“机械学习”,“示教学习”,“类比学习”,“归纳学习”。
机械学习
死记硬背式学习,把外界输入的信息全部记录下来,需要时原封不动地取出来使用,实际上没有真正的学习,仅仅在进行信息存储与检索。
示教学习
从指令中学习。
类比学习
通过观察和发现学习。
归纳学习
从样例中学习,即从训练样例中归纳出学习结果。归纳学习是被研究最多,应用最广的,涵盖了监督学习、无监督学习等。
二十世纪八十年代,归纳学习的主流是符号主义学习,其代表包括决策树学习和基于逻辑的学习。典型的决策树学习以信息论为基础,以信息熵的最小化为目标,直接模拟了人类对概念进行判定的树形流程。基于逻辑的学习的著名代表是归纳逻辑程序设计,可以看作机器学习与逻辑程序设计的交叉,使用一阶逻辑来进行知识表示,通过修改和扩充逻辑表达式来完成对数据的归纳。
二十世纪九十年代,归纳学习的主流是基于神经网络的连接主义学习。
二十世纪九十年代中期,归纳学习的主流是统计学习,其代表是支持向量机(SVM)以及更一般的“核方法(kernel methods)”。
二十一世纪初,连接主义学习又卷土重来,掀起以“深度学习”为名的热潮。深度学习是指深层神经网络,它在语音、图像等复杂对象的应用中表现很好,性能优越。深度学习的流行一是因为大数据的发展,数据多了;二是因为计算机硬件的发展,计算能力强了。
三、机器学习的分类
机器学习中,有个定理叫“没有免费午餐“定理(No Free Lunch Theorem,简称NFL定理)。内容是无论学习算法a多聪明,学习算法b多笨拙,它们的期望性能是相同的。简而言之,就是没有一个通用算法可以完美解决所有问题,我们要根据具体问题来选择合适的算法。
根据训练数据是否带有标签(label)信息,把训练数据中带有标签信息的学习算法称为监督学习,训练数据中不带标签信息的学习算法称为无监督学习。
监督学习的代表是分类和回归,常见算法有线性回归、logistic回归、决策树、贝叶斯分类、支持向量机、神经网络等。
无监督学习的代表是聚类,常见算法有主成分分析(PCA)、K均值聚类(K-Means)等。
在后面的文章中会一一介绍这些算法和它们的代码实现,尽量给出不调包只用python代码实现和使用流行的机器学习框架实现两种实现方案。因为前者可以更好地理解算法,后者可以更快更方便地使用算法。 当然除了这些算法,还有数据预处理、模型的性能度量、超参数的调整等等。
qrcode.png