ML导学
1. ML定义
Arthur Samuel 1959 年对机器学习的定义:
机器学习是这样的领域,它赋予计算机学习的能力,(这种学习能力)不是通过显著式编程获得的。
- 显著式编程:告诉计算机菊花是黄色,玫瑰花是红色,计算机按照人为设定的条件去分类,这就是显著式编程。
- 非显著式编程:只给计算机很多菊花的图片和玫瑰的图片,编写程序让计算机自己去总结菊花和玫瑰花的区别,计算机可能通过大量的图片也能总结出菊花是黄色的,玫瑰是红色的这一规律,也有可能总结出菊花花瓣长,而玫瑰花的花瓣圆等其他规律(也就是特征提取)。让计算机自己去总结规律的编程方法,叫做非显著式编程。
Tom Mitshell 1998 年对机器学习的定义:计算机程序针对某个任务 T 和某个性能指标 P,从经验 E 中学习,其特点是在 T 上被 P 所衡量的性能会随着经验 E 的增加而提高。
例如:
任务 T => 识别菊花和玫瑰
经验 E => 一大堆菊花和玫瑰的图片 (训练样本)
性能指标 P => 识别率,训练样本 E 越多,识别率也会越高
显著式编程一开始就定义了输入和输出,识别率不会随着 E 的增加而变化
Tom Mitshell 的定义更加数学化,根据 E 来提高 P 的过程就是一个典型的最优化问题。
2. ML分类
像垃圾邮件识别和人脸识别这样需要为训练样本打标签的任务,经验 E => 训练样本和标签的集合,所有的经验 E 都是人工采集输入计算机的。这样的机器学习称为监督学习。
像计算机自动下棋和自动驾驶这样的任务,经验 E 是由计算机和环境交互获得的,计算机产生行为,我们的程序只需要定义这些行为的收益函数,对行为进行奖励或者惩罚,通过算法让计算机改变自己的行为模式去最大化收益函数。计算机在与环境的互动中逐渐强化自己的行为模式,这样的机器学习称为强化学习。
这样的划分并不绝对,强化学习中也会用到监督学习的方法。比如,AlphaGo 先通过监督学习方法学习高手对局得到初始围棋程序,然后再对初始围棋程序进行强化学习进而提升棋力。
监督学习根据数据标签存在与否分类:
- 传统监督学习:每个样本都有对应的标签
1.1 支持向量机
1.2 人工神经网络
1.3 深度神经网络 - 非监督学习:所有训练样本都没有对应的标签。需要假设同一类训练数据在空间中分布很近,算法将其聚集为两类。
2.1 聚类
2.2 EM
2.3 主成分分析 - 半监督学习:训练数据中一部分有标签,一部分无标签。互联网有大量数据,标注数据成本很大。利用少量少量标注数据和大量未标注数据一起训练一个更好的机器学习算法。(最近比较流行)
监督学习根据数据标签离散还是连续值分类:
- 分类问题(离散)
- 回归问题(连续)
3. ML 过程
提取特征,特征选择
提取特征并不是 ML 主要研究的内容,但是提取了好的特征即使用到了较差的算法,也能得到不错的性能。
4. 没有免费午餐定理
任何一个预测函数,如果在一些训练样本上表现好,那么必然在另一些训练样本上表现不好,如果对数据在特征空间的先验分布有一定假设,那么表现好与表现不好的情况一样多。