1.机器学习基础知识
1.1什么是机器学习
机器学习是一种让计算机利用数据而不是指令来进行各种工作的方法。
传统的编程理念:对于一个需要解决的问题,通常是先制定规则,然后根据规则编写代码,最后让计算机去执行。
但是,当问题的规则无法制定,或问题的规则在不断的变化时,使用传统的编程理念是不可行的,于是引入了机器学习。
例:让计算机去识别一只猫。
难点:由于猫的种类多种多样,因此难以制定规则去识别猫的特征。
人类是如何学习呢?
获取一定的样本资料,如猫的图片;通过学习、归纳和总结来获取一定的经验和知识,如猫的特征;当我们遇到一只动物时,很容易区分出它是不是一只猫。
机器学习同样如此。我们提供数百万张猫的图片来对机器进行培训,机器在这些图片中找到重复的特征,并确定该如何定义猫的外观。当我们向机器提供一个猫的图片时,就会很容易区分这是不是一只猫。
机器学习中监督学习的一般流程如下:
机器学习是目前是实现人工智能的主要方法,其本质是利用数据来回答问题。
1.2基本术语
由于鸢尾花的特征较少,因此使用鸢尾花的数据集来讲解基本术语,如下所示。
花萼长度 | 花萼宽度 | 花瓣长度 | 花瓣宽度 | 鸢尾花种类 |
4.9 | 3.0 | 1.4 | 0.2 | Setosa |
4.7 | 3.2 | 1.3 | 0.2 | Setosa |
5.5 | 2.6 | 4.4 | 1.2 | Versicolour |
5.7 | 2.8 | 4.5 | 1.3 | Versicolour |
6.3 | 2.5 | 5.0 | 1.9 | Virginica |
(1)一组数据的集合,称为数据集;如表中所包含的5行数据。
(2)关于一个对象的描述,称为样本(或示例);如表中的每一行数据(除第一行)都是一个样本。
(3)样本在某一方面的性质,称为特征(或属性);如鸢尾花数据集中有4个特征,花萼长度、花萼宽度、花瓣长度、花瓣宽度。
(4)特征的数量称为维数;鸢尾花数据集的维数为4。
(5)特征(可以2-4个特征)所组成的空间,称为特征空间(或属性空间、样本空间)。
(6)特征空间中,样本对应的点称为特征向量,如X(1) = (4.9; 3.0; 1.4; 0.2)表示第一个样本的特征向量。
(7)训练过程中使用的数据集,称为训练样本(或训练集);测试过程中使用的数据集,称为测试样本(或测试集)。
(8)通过学习得到的模型,称为学习器或模型。
(9)通过模型得到的结果,称为标记(或标签);如Setosa、Versicolour、Virginica。
为了书写上的统一,标量使用未加粗的小写字母表示,如x;向量使用加粗的小写字母表示,如x;矩阵使用大写字母表示,如X;行向量使用(a,b,c)的形式表示;列向量使用(a;b;c)的形式来表示(特征向量一般写作列向量)。
由于上述鸢尾花特征值的数据集是矩阵,因此使用X来表示,则第i个样本的特征向量写作X(i);第i个样本的第j个特征写作X(i)j。若将上述鸢尾花标签值的数据集使用y来表示,则第i个样本的标签值写作y(i)。每个样本由特征向量和标签值组成,可以写作((X(i))T, y(i))。正常情况下,特征向量通常使用列向量来表示,因此X = ( (X(1))T;(X(2))T;(X(3))T;(X(4))T;(X(5))T )。
1.3算法分类
学习算法主要分为监督学习、无监督学习、半监督学习、强化学习。
1.3.1监督学习
监督学习的样本数据中包含标签值,常用算法有k近邻、线性回归、多项式回归、逻辑回归、决策树和随机森林,可解决分类任务和回归任务。
在监督学习中,当标签值是离散值,则为分类任务;若标签值为连续值,则为回归任务。
分类任务可以分为二分类和多分类。当标签值包含2个离散值时,为二分类任务;如判断这个动物是不是一只猫。当标签值包含多于2个离散值时,为多分类任务;如判断这个数字是0-9中的哪一个。
如何理解回归任务呢?比如根据一个人的专业、工作年限、学历等特征来推测这个人的收入;又比如分析房价的走势等都是回归任务。
1.3.2无监督学习
无监督学习的样本数据中不包含标签值,可解决聚类任务、数据降维任务和异常检测任务。
聚类任务根据样本数据中的某些特征,自动将样本分组,每一组称为“簇”。如数据集中有很多人的数据信息,无监督学习可能将这些人按照肤色分为黄种人、白种人、黑种人,也可能按照地域分为亚洲人、非洲人、欧洲人和美国人。常用算法有DBSCAN、OPTIONS等。
数据降维是针对数据集中特征过多的情况,如数据集中的某些特征和我们要解决的问题毫无关联。常用算法有PCA。
异常检测任务是针对样本数据集中有些数据存在明显异常的情况,如离群点。
1.3.3半监督学习
半监督学习的样本数据中一部分包含标签值,一部分不包含标签值。对于这样的样本数据,通常都是先使用无监督学习的算法进行数据处理,再用监督学习的算法进行模型的训练。
1.3.4强化学习
强化学习是一类特殊的机器学习算法,它根据“环境参数”来确定要执行的动作,若动作正确则作出奖励,若动作错误则作出惩罚;训练完成后用得到的新模型再去测试样本。
1.4机器学习应用领域
(1)人机对弈:人机对弈是人工智能的传统问题,常见的有棋类AI,它需要在落棋时找到最优的棋布。DeepMind公司的AlphaGo由多个神经网络组成,采用深度强化学习的技术,实现对最优棋布的搜索。
(2)人脸检测:人脸检测是机器视觉领域的经典问题,在安防监控等方面具有重要的应用价值。
(3)无人驾驶:无人驾驶是对人类生活具有重大影响的技术,其核心问题有车辆定位、环境感知、路径规划等。
除此之外,人工智能在航天领域、医药领域、语音识别领域、机器翻译领域等都有很高的应用价值。