积跬步以致千里,积怠惰以致深渊
注:本篇文章在整理时主要参考了 周志华 的《机器学习》。
主要内容
对机器学习进行简单介绍,并引出机器学习基本概念。
什么是机器学习(MachineLearning)
“朝霞不出门,晚霞行千里”
人从以往积累的经验学习总结得出,早上有红色云霞的话就预示今天有雨,晚上太阳下山的时候有红色云霞的话预示明天晴天。同样,我们赋予计算机(在此我们理解Machine为计算机)拥有通过对经验的利用,能够做出有效决策的能力,称之为机器学习。
如何赋予计算机“学习”能力
定义:针对经验E (experience) 和一系列的任务T (tasks) 和一定表现的衡量P,如果随之经验E的积累,针对定义好的任务T可以提高表现P,就说计算机具有学习能力。
在计算机系统中,“经验”通常以“数据”的形式存在。通过设计“学习算法”使得计算机能够从数据中产生数据之间潜在的规律和联系(例:朝霞与今天下雨,晚霞与明天晴天),我们将这种规律和联系统称为“模型”。首先我们把经验数据提供给计算机,计算机就能基于这些数据和学习算法产生模型然后做出有效决策;在面对新的情况时(例如朝霞),模型会给我们提供相应的判断(例如今天会下雨)。
机器学习算法
我们先了解一下科学推理的两大基本手段:归纳(induction)与演绎(deduction)。前者是从特殊到一般的“泛化”(generalization)过程,即从具体事实归结出一般性规律;后者是从一般到特殊的“特化”(specialization)过程,即从基础性原理推演出具体状况。
假定我们收集了一批关于西瓜的数据,例如(色泽=青绿,根蒂=蜷缩,敲声=浊响),(色泽=乌黑,根蒂=稍蜷,敲声=沉闷),(色泽=浅白,根蒂=硬挺,敲声=清脆)...,每对括号内是一条记录,“=”意思是“取值为”。
机器学习的过程其实就是上边的归纳过程,我们以挑西瓜为例
机器学习的过程就是从具体数据集中“泛化”的过程,即通过对训练集中瓜的学习以获得对没见过的瓜进行判断的能力。我们可以把学习过程看作一个在所有假设(hypothesis)组成的空间中进行搜索的过程,搜索目标是找到与训练集“匹配”(fit)的假设,即能够将训练集中的瓜判断正确的假设。
例如在表1.1的训练集上,我们可以找到匹配训练样本的假设列表,展示如下:
(色泽=*,根蒂=蜷缩,敲声=*) -> 好瓜 (1)
(色泽=*,根蒂=*,敲声=浊响) -> 坏瓜 (2)
(色泽=*,根蒂=蜷缩,敲声=浊响) -> 坏瓜 (3)
算法选择依据
从上文中我们可以得知在同一个训练集上进行匹配,有可能会匹配出多个假设,那么机器学习的具体过程中算法的选择依据是什么呢?
在现实问题中我们常面临很大的假设空间,可学习过程是基于有限样本训练集进行的,因此,可能有多个假设与训练集一致,即存在着一个与训练集一致的“假设集合”,我们称之为“版本空间”,上边的假设(1)(2)(3)即在西瓜数据集上“泛化”出的假设空间。
那么当我们遇到一个新收来的瓜(色泽=青绿,根蒂=蜷缩,敲声=沉闷),那么我们该选用哪个假设来进行判断呢?如果使用假设(1)时,这是一个好瓜,可如果使用假设(2)(3)时,这就是一个坏瓜了。
这时候的选择偏好被称为“归纳偏好”,而任何一个有效的机器学习算法必有其归纳偏好,否则它必然被假设空间中等效的假设所迷惑,而无法产生确定的学习结果。
一种常用的、自然科学研究中最基本的“正确的”偏好原则是“奥卡姆剃刀”(Occam's razor)原则
奥卡姆剃刀原则:若有多个假设与观察一致,则选最简单的那个
事实上,归纳偏好对应了学习算法本身所做出的关于“什么样的模型更好”的假设。在具体的现实问题中,算法的归纳偏好是否与问题本身匹配,大多数时候直接决定了算法能否取得好的性能。
举个例子,在下边回归学习的1.3图示中,每个训练样本是图中的一个点,要习得一个和训练集一致的模型,相当于找到一条穿过所有训练样本点的曲线。显然,这样的曲线有很多条。如果使用奥卡姆剃刀偏好原则的话,更为平滑的曲线A会比曲线B要好。
可实际情况,A曲线却并不一定比B曲线好,因为用来训练的样本只是全量数据的一部分,真正的数据到底是更贴近曲线A还是曲线B是无法得知的。如图1.4所示,真实的数据是两种情况都有可能出现。换言之,对于一个学习算法a,若它在某些问题上比学习算法b好,则必然存在另一些问题,在那里b比a好。
可NFL定理有一个重要前提:所有“问题”出现的机会相同、或所有问题同等重要。但实际情况并不是这样的,很多时候,我们只关注自己正在试图解决的问题。比如,要找到快速从A地到B地的算法,如果我们考虑A地是南京鼓楼、B地是南京新街口,那么“骑自行车”是很好的解决方案;但是这个方案对A地是南京鼓楼、B地是北京新街口的情形显然很糟糕,但我们对此并不关心。
所以,NFL定理最重要的寓意,是让我们清楚意识到,脱离具体问题,空泛地谈论“什么学习算法更好”毫无意义,因为若考虑所有潜在的问题,则所有的算法都一样好。针对具体问题选择具体的算法和归纳偏好才是正确的做法。
基础概念
1)基本术语
数据集:对于这组数据的集合;(即,关于西瓜的数据)
示例或样本:每条记录关于一个事件或对象的描述;(例,(色泽=乌黑,根蒂=稍蜷,敲声=沉闷))
属性或特征:反应事件或对象在某方面的表现或性质的事项;(即,“色泽”、“根蒂”,“敲声”)
属性空间:属性张成的空间;(即,我们把“色泽”、“根蒂”,“敲声”作为三个坐标轴,则它们张成一个用于描述西瓜的三维空间,也称“样本空间”或“输入空间”)
特征向量:每个样本在属性空间中对应的坐标向量;
学习或训练:从数据中学得模型的过程,通过执行某个学习算法来完成;
训练数据:训练过程中使用的数据;
训练样本:训练数据中每个样本;
训练集:训练样本组成的集合;
如果希望学得一个能帮助我们判断没剖开的是不是“好瓜”的模型,仅有前面的示例数据显然是不够的。要建立这样的关于“预测”(prediction)的模型,我们需要获得训练样本的“结果”信息,例如“((色泽=青绿,根蒂=蜷缩,敲声=浊响),好瓜)”。
标记(label):关于示例结果的信息;(例如,好瓜)
样例(example):拥有了标记信息的示例;
测试:用已学得的模型进行预测的过程;
测试样本:被预测的样本;
2)算法分类
分类(classification):目标标记为类别型数值(category);(例如“好瓜”“坏瓜”)
回归(regression):目标标记为连续性数值(continuous numeric value);(例如西瓜成熟度0.95、0.37)
监督学习(supervised learning):是利用已知类别的样本(即有标记的样本 labeled sample,已知其相应的类别),调整分类器的参数,训练得到一个最优模型,使其达到所要求性能,再利用这个训练后的模型,将所有的输入映射为相应的输出,对输出进行简单的判断,从而实现分类的目的,这样,即可以对未知数据进行分类。
通俗的来讲,我们给计算机一堆选择题(训练样本),并同时提供了它们的标准答案,计算机努力调整自己的模型参数,希望自己推测的答案与标准答案越一致越好,使计算机学会怎么做这类题。然后再让计算机去帮我们做没有提供答案的选择题(测试样本)。
无监督学习(unsupervised learning):实现没有有标记的、已经分类好的样本,需要我们直接对输入数据集进行建模,例如聚类,最直接的例子就是我们常说的『人以群分,物以类聚』。我们只需要把相似度高的东西放在一起,对于新来的样本,计算相似度后,按照相似程度进行归类就好。
通俗的来讲,我们给计算机一堆选择题(训练样本),但是不提供标准答案,计算机尝试分析这些题目之间的关系,对题目进行分类,计算机也不知道这几堆题的答案分别是什么,但计算机认为每一个类别内的题的答案应该是相同的。
强化学习:所谓强化学习就是智能系统从环境到行为映射的学习,以使奖励信号(强化信号)函数值最大,强化学习不同于连接主义学习中的监督学习,主要表现在教师信号上,强化学习中由环境提供的强化信号是对产生动作的好坏作一种评价(通常为标量信号),而不是告诉强化学习系统RLS(reinforcement learning system)如何去产生正确的动作。
通俗的来讲,我们给计算机一堆选择题(训练样本),但是不提供标准答案,计算机尝试去做这些题,我们作为老师批改计算机做的对不对,对的越多,奖励越多,则计算机努力调整自己的模型参数,希望自己推测的答案能够得到更多的奖励。不严谨的讲,可以理解为先无监督后有监督学习。
迁移学习:考虑到大部分数据或任务是存在相关性的,所以通过transfer learning我们可以将已经学到的parameter 分享给新模型从而加快并优化模型的学习不用像之前那样learn from zero。把已学训练好的模型参数迁移到新的模型来帮助新模型训练数据集。
机器学习应用
语音识别、自动驾驶、语言翻译、计算机视觉、推荐系统、无人机、识别垃圾邮件
总结
1、如果说计算机科学是研究关于“算法”的学问,那么类似的,可以说机器学习是研究关于“学习算法”的学问。
2、机器学习的本质是构建起输入和输出之间的关系模型,并利用这个关系模型来解决未知的情况。
3、机器学习的学习过程是对数据集的泛化过程。
4、并没有绝对好的机器学习算法,脱离具体问题,空泛地谈论“什么学习算法更好”毫无意义,因为若考虑所有潜在的问题,则所有的算法都一样好。
5、针对具体问题选择具体的算法和归纳偏好才是正确的做法。