什么是机器学习:
我们事先并不约束计算机必须总结出什么规律。而是让计算机自己去探索一种最大化收益函数的行为或者规律。在这其中,从一大堆训练样本里试错,积累经验 E ,最终以一个不错的效果(性能指标 P)达成任务 T。 数学中典型的最优化过程。
举例:
任务T:设计程序让机器人冲咖啡。
经验E:机器人多次尝试的行为,和这些行为产生的结果。
性能测度P:在规定时间内成功充好咖啡的次数。
机器学习的分类:
思考题:以下四个机器学习的 经验E 和 性能测度P 分别适合用什么来表示。
(1)垃圾邮件识别。
(2)人脸识别。教计算机通过人脸的图像识别这个人是谁。
特点:这两个任务的经验是完全由人搜集起来输入计算机的。比如:
(1)对输入的每一封邮件,得告诉是不是垃圾邮件。
(2)对每一张人脸的图片,得告诉计算机这个人是谁。
我们把 告诉计算机每一个样本是什么的过程叫做:为训练数据打标签
我们把这一类输入计算机数据,同时加上标签的机器学习称为:监督学习(Suprtvised ...)
<>根据数据标签存在与否的分类:
1. 传统的监督学习(Traditional Supervised Learning):所有的数据都有标签
——支持向量机(Support Vector Machine)
——人工神经网络(Neural Networks)
——深度神经网络(Deep Neural Networks)
2, 非监督学习(Unsupervised ...):所有的数据都没有对应标签
——聚类(Clustering)
——EM算法(Expectation-Maximization algorithm)
——主成分分析(Principle Component Analysis)
3. 半监督学习(Semi-supervised ...):一部分有标签,一部分没有标签
<>基于标签的固有属性分类:
1. 分类(Classification):标签是离散的值(人脸识别)
2. 回归(Regression):标签是连续的值(预测股票价格、温度、人的年龄)
——值得注意的是,分类和回归问题的界定是非常模糊的,因为连续和离散的定义也是可以相互转换的。一个解决分类问题的机器学习模型,稍微加以改造,就可以解决回归问题。反之亦然。
答:对于这两个任务,经验E ==> 训练样本和标签的集合。
(3)无人驾驶,教计算机自动驾驶汽车从一个指定地点到另一个指定地点。
(4)教机器人下棋。
特点:这两个任务,经验E是由计算机与环境互动获得的:计算机产生行为,同时获得这个行为的结果,程序只需定义这些行为的收益函数(reward function)对这些行为进行奖惩。例如:
(4)下棋:赢了就奖励,输了就惩罚。
(3)自动驾驶:顺利到达目的地就奖励,中途出了事故就惩罚。
同时我们需要设计算法,让计算机改变自己的行为模式去最大化收益函数
我们把这一类机器学习叫做强化学习(Reinforcement Learning)即:
计算机通过与环境的互动逐渐强化自己的行为模式。
但这样的划分并不绝对,以阿尔法go为例:一开始是通过监督学习,获得一个还不错的初始围棋程序。然后通过强化学习,不断提升棋力。这是两者结合的典型例子。
思考题:
(1)除了以上标准,还有其他的分类标准吗?
(2)能否举出某种机器学习任务,不属于以上任何一类呢?
机器学习算法的过程:(以识别白细胞红细胞为例)
首先,如果我们自己对数据没有感性的认识,我们就很难设计出好的算法,也很难估计算法可能达到的性能极限。所以,通过观察数据,总结规律:发现
1. 平均来说,白细胞面积比红细胞大;2. 白细胞没有红细胞圆;3. 白细胞内部纹理比红细胞粗糙
第一步:提取特征(Feature Extraction):通过训练样本获得的,对机器学习任务有帮助的多维数据。
案例中提取了三个维度:细胞的面积、圆形度、表面粗糙程度。
值得注意的是:机器学习的重点不是如何提取特征,而是假设在已经提取好特征的前提下,如何构造算法获得更好的性能。但是特征提取这一步无疑是非常重要的:提取了好的特征,哪怕用差一点的机器学习算法也能获得不错的性能;反之,如果提取的特征,不能很好地反应出,训练样本的内在规律,那么哪怕在好的机器学习算法也不可能获得好的性能。
第二步:特征选择(Feature Selection):对特征进行取舍。
案例中舍弃了区分度比较低的圆形度的特征。而保留了区分度很高的周长和面积特征。
第三步:基于特征,构建算法:
案例中选用了支持向量机的三种内核分别测试,首先,将所有的红细胞和白细胞画到一张二维的图上,横坐标代表面积,纵坐标代表周长。(做了一定程度的归一化)我们把这两个特征组成的空间称为特征空间(Feature Space), 在这里,特征空间是二维的。
值得注意的是: 这里机器学习的过程就是设计算法画出这样一条分界线。而这条分界线的画法也很多样,但哪种画法更好呢?
——我们需要研究每种划线的方法适用于什么样的情况和场景,而这个问题很困难,因为这些线是针对有限个训练样本画的,它的目的是预测新样本类别。我们无法穷尽所有的新样本,也就不能得出一个绝对意义的好和坏的标准。
如何针对不同的应用场景,选择合适的机器学习算法,甚至构造新的机器学习算法,解决目前无法解决的应用场景,这是涉及到理论和实践的重要科学问题,值得我们深入的研究。
如何根据应用场景选择合适的机器学习算法呢?这里不得不提到:
没有免费的午餐定理(No Free Lunch Theorem):
任何一个预测函数,如果在一些训练样本上表现好,那么必然在另一些训练样本上表现不好。如果不对数据在特征空间的先验分布有一定的假设,那么表现好与表现不好的情况一样多。
而我们在设计机器学习算法的时候有这样一个假设:
在特征空间行距离接近的样本,他们属于同一个类别的概论会更高。
因为有了这个假设,那么数据在特征空间上的先验概论分布就会不同,因此算法的预测才会有依据。而不是原本的概率各占50%——无论知道多少样本,预测都跟瞎猜没什么区别。
那么我们不得不思考,这样的假设有道理吗?——难道不可能上面是X下面是O吗?
这就涉及到哲学层面的问题了——什么是道理?
举例来说:明天太阳会升起,那我们怎么会知道呢,因为从小到大我们无数次地看到,太阳明天会升起,翻阅文献,古人也无数次地看到同样的场景,祖先们甚至发明了物理的理论(万有引力)来论证这一点。我们综合这些事实,所以认为,太阳升起是有道理的。——因此:道理是从以前的事实中来的。
同时,人可以通过类比,将这些道理推广到未来的预测。
当然,这样的预测很有可能出错。比如:上图的圆圈是花瓣,X是蜜蜂,那蜜蜂停在花瓣上就不奇怪了。
总结:
机器学习的本质是:通过有限的已知数据,在复杂的高维特征空间中,预测未知的样本的属性和类别。然而再好的算法也有犯错的可能。没有免费午餐定理告诉我们:
1. 不对特征空间的先验分布有假设,那么所有算法的表现都一样。
2. 没有放之四海而皆准的最好算法。
值得注意的是:我们不能片面夸大这个定理的作用,从而对开发新的算法丧失信心,但我们也应时刻牢记这个定理的提醒。