机器学习(Machine Learning)最早起源于人工智能(Artificial Intelligence,AI),其核心在于构造学习算法(Learning Algorithm),使得机器可以自动从训练数据中进行学习以完成特定任务。
机器学习的定义
- 1959年,Arthur Samuel将机器学习定义为:"Field of study that gives computers the ability to learn without being explicitly programmed"。
- 1998年,Tom Mitchell给出了一个更为正式的定义:"A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E"。
值得一提的是,Arthur Samuel曾写了一个可以实现自己和自己下跳棋(checkers,如下图所示)的程序。该程序在自己与自己下棋的过程中不断学习,知道了什么样的棋盘格局更容易获胜或失败,最终该程序比Arthur Samuel本人还更擅长下跳棋。
第一种定义更多的是从认知的角度来定义机器学习;而第二种定义则倾向于从更为基本的形式化表述,所以认可度更高。以上面的跳棋程序为例,E代表和自己不断下棋所获的经验,T代表下跳棋的任务,P则可用和人下跳棋的获胜率来衡量。
机器学习实例
机器学习的精髓在于利用设计的学习算法,使机器自动学习数据之间的映射关系,最后利用这种映射关系解决实际问题。以手写数字识别为例,我们很难设计出一段程序,可以直接解析出一张手写的数字图像到底对应哪个数字。因为即使是同一个人,在不同情景下写的同一个数字在图像上也会存在差异,我们无法用一段程序应对如此复杂多变的状况。如果我们提供很多手写数字的数据,并且告诉机器每个数据对应哪个数字,然后让机器自动去学习手写数字和真实数字之间的映射关系。最后,任意给定一个手写数字作为输入,我们可以利用学习到的映射关系找到对应的真实数字,顺利完成手写数字的识别任务。机器学习在我们生活中也是处处可见的,比如信封上的邮编就是通过机器学习的算法自动识别的;Amzon和Netfix等网站利用学习算法学习用户的偏好,然后向用户提供具有一定针对性的推荐;笔记本上面可以通过指纹或人脸识别来判断用户是否有访问该机器的权限;垃圾邮件过滤。
学习算法的分类
我们根据训练阶段的输入数据的类型即相应的输出可以将算法大致分为如下几类:
- 监督学习(Supervised Learning)的任务是从给定输入和输出的训练数据集中学习输入和输出之间的映射函数,然后利用该映射函数预测出测试样本的输出值,其中训练集中的每个样本都由输入和对应的输出(也称之为label)组成(labeled data)。如果我们要预测的目标值是连续变量,那么这类问题称之为回归(Regression);反之,如果预测的目标值是离散的,这类问题一般被称之为分类(Classification)。
- 无监督学习(Unsupervised Learning)的职责在于发现数据中的隐含结构,而其中的数据样本未给定对应的目标值(unlabeled data)。如果我们要将相似的样本划分为不同的组,这类问题称之为聚类(Clustering);如果我们需要找出输入空间的数据分布状况,这类问题称之为密度估计(Density Estimation);我们也可以利用主成份分析(Principal Component Analysis,PCA)、独立成分分析(Independent Component Analysis,ICA)、非负矩阵分解(Nonnegative Matrix Factorization,NMF)和奇异值分解(Singular Value Decomposition,SVD)等特征提取方法将数据从高维度映射到较低维度实现将维(Dimensionality Reduction)。
- 半监督学习(Semi-supervised Learning)利用labeled data和unlabeled data组成的数据集,生成近似函数或者分类器。一般unlabeled data很多,而labeled data占少数。
- 增强学习(Reinforcement Learning)关心的问题并不是像分类问题那样一次性就可以解决,而是涉及到与环境进行交互的一系列状态和行为。这里要解决的问题是,在给定的状态下,如何找到最优的行为策略,以获取最大的累积回报。在大多数情况下,当前的行为不仅会影响当前的回报(immediate reward),还会对后续的回报产生影响。
机器学习的应用
机器学习的应用领域相当广泛,对科学界和工业界都产生了深远影响。其应用领域包括计算机视觉、图形处理、自然语言处理、医疗诊断、生物信息学、股票市场分析、社交网络分析、市场划分、天文数据分析、搜索引擎、信息检索和推荐系统等。
我们从机器学习广泛的应用领域就可以看出机器学习的前景必然是一片光明的。如今众多公司和政府都在开发协同过滤、垃圾邮件过滤、诈骗检测对象跟踪等应用,这些应用都需要在大规模的数据上发掘潜在的模式。随着信息呈现爆炸式增长,如何组织和分析这些数据已经成为亟待解决的难题,机器学习在大数据时代必将扮演极为重要的角色。目前具备机器学习知识的人才非常受欢迎,在COMPUTERWORLD上出现的一篇名为12 IT skills that employers can't say no to的报道中,机器学习是位列第一的,足见机器学习的霸气!
最后,罗列一些机器学习相关的学习资料
- Coursera上的机器学习公开课,机器学习入门级别的课程。
- 网易公开课提供的Stanford机器学习视频教程(翻译完成) ,相对于第一个视频教程,涵盖的内容更丰富,难度也大一些。
- 网易公开课提供的加州理工学院机器学习视频教程(未翻译完),与Stanford机器学习视频教程重叠部分不多,可以两者结合一起看。
- Stanford机器学习课程的资料(与网易公开课的机器学习视频对应)。网站上附有配套的讲义(最后几个章节缺讲义)和作业,还有学生提交的课程项目的PDF文档。
- Stanford数据挖掘课程,包括相关的电子书和Slides,涉及降维、聚类、推荐系统等热门技术。
- kaggle上有很多机器学习方面的有奖竞赛
- 机器学习相关书籍推荐:《Pattern Recognition and Machine Learning》、《The Elements of Statistical Learning》、《 Mining of massive datasets》。极力推荐第一本书,据说是CMU机器学习的教程。