第一阶段:推理时期,时间在1960s,主要体现在:赋予机器逻辑推理能力使机器获得智能;当时的Al程序证明力一些著名的数学定理,但由于缺乏知识,远不能实现真正的智能。
第二阶段:知识时期,时间在1970s,主要体现在:将人类的知识总结出来教给机器使机器获得智能;即“专家系统”,在很多领域获得大量进展,但由于人类知识量巨大,故出现“知识工程瓶颈”。
第三阶段:机器学习时期,在1980s时期,连接主义较为流行,神经网络的概念被提出,但由于受到当时计算机性能的影响,连接主义很快被取代,在1990s,统计学习占据舞台。代表方法为支持向量机,决策树等等。但是随着计算机性能的不断提升,在21世纪,深度神经网络被提出,连接主义卷土重来。以深度学习为基础的诸多AI应用逐渐成熟。
首先我们拥有大量的历史数据,我们的目的是寻找到他们直接隐含的规律,使用这个隐含的规律进行预测或者分类。
比例如我们现在有一组历史房价的数据,我们可以用我们寻找到的规律来预测下一年的房价。
站在机器学习的角度上来看我们的目标可以换一种说法,首先我们拥有一组样本数据,我们的目标是得到一个函数,使得我们的输入经过该函数处理后,可以得到一个我们预期的结果。
目标:使得我们学习到的函数能够很好的适应于新样本,即该函数具有更好的泛化能力。
①数据集:样本的集合被称为数据集。数据集被分为了“训练集”和“测试集”(这两个概念在稍后会做出解释)。
例如我们有一批西瓜的数据:(色泽:青绿;根蒂:蜷缩;敲声:浊响),(色泽:乌黑;根蒂:稍蜷;敲声:沉闷)…,这组记录的集合就被称为数据集。
②特征:反应事件或者对象在某方面的表现或性质的事项。
例如上面所说的西瓜的“色泽”,“根蒂”,“敲声”都被称为西瓜的特征。
③特征向量:例如,我们把上面提到的三种特征作为三个坐标轴,则它们会构成一个用于描述西瓜三维空间,每一个西瓜都可以在这个空间上找到自己的坐标位置,由于空间中每一个点对应着一个坐标向量,因此我们也把一个示例称为一个“特征向量”。
④学习(训练):从数据中学习得处模型的过程称为学习或者训练。训练过程中使用的数据称为“训练数据”,其中每一个样本被称为“训练样本”,而这些样本构成的集合被称为“训练集”。
⑤分类:若我们预测的是离散值,则该学习任务被称之为分类任务。例如区分一个西瓜是“好西瓜”还是“坏西瓜”。
⑥回归:若我们预测的是离散值,则该学习任务被称之为回归任务。例如预测一个西瓜的成熟度为0.97,0.95。
⑦测试:学习得到模型后,使用我们的模型进行预测的过程称为测试。被预测的样本被称为“测试样本”,而这些样本的集合被称为“测试集”。
⑧聚类:假设我们有一堆水果,里面事先没有给这些数据集进行标注它们的类别,将训练集中水果分为若干个组,每个组被称为一个“簇”,这些自动形成的簇可能会对应一些潜在的划分,比如“苹果”,“香蕉”,“橘子”。这样的学习过程有助于我们了解数据的内在规律,能为更深入的分析数据建立基础。
⑨监督学习和无监督学习:学习任务根据训练集是否拥有标记信息可以分为两类------“监督学习”和“无监督学习”。分类和回归任务是前者的代表而聚类则是后者的代表。
数据在机器学习方法框架中的流动,会按顺序经历三个过程,分别对应机器学习的三大要素:1. 模型;2. 学习准则;3. 优化算法
模型:谈到机器学习,经常会谈到机器学习的“模型”。在机器学习中,模型的实质是一个“假设空间”,这个“假设空间”是“输入到输出所有映射”的一个集合,这个空间的假设属于我们的先验知识。然后,机器学习通过“数据+三要素”的训练,目标是获得假设空间的一个最优解,简单来说一下就是求模型的最优参数。
了解机器学习的学习准则,最关键是掌握10个名词:欠拟合、过拟合、经验风险、经验风险最小化、结构风险、结构风险最小化、损失函数、代价函数、目标函数、正则化。
为了更好的理解这些名词,我们从一个例子出发。如上图所示其中蓝色的线为训练出的模型,红色的叉叉为样本,第1个子图中的模型没有很好的拟合样本,这种情况就叫做“欠拟合”,欠拟合的问题在于无法很好地拟合当前训练样本。
为了避免欠拟合的问题,需要有一个标准来表示拟合的好坏,通常用一个函数来度量拟合的程度,比如常见的平方损失函数(Square loss function),这个公式是对某一个样本得拟合程度函数:
这个函数就称为损失函数,是常见损失函数的一种。损失函数越小,就代表模型对某个样本拟合得越好。
期望风险函数是损失函数的期望,但是无法计算计算期望风险函数。我们是有历史数据的,就是我们的训练集,关于训练集的平均损失称作经验风险,我们常用经验风险替代期望风险,因为根据大数定理,当样本容量趋于无穷时,经验风险也就趋于期望风险,经验风险可表示为,
我们希望经验风险最小,称为经验风险最小化,而这个度量经验风险的函数称为代价函数。
如果到这一步就完了的话,那我们看上面的图片,那肯定是第3个子图的经验风险函数最小了,因为它对历史的数据拟合的最好嘛。但是他在实际应用会中肯定不是最好的,因为它过度学习历史数据,导致它在真正预测时效果会很不好,比如此时右上方按照目前的趋势再有一堆新样本,该模型就废掉了,这种情况称为过拟合。
为什么会造成这种结果?简单来说就是它的函数太复杂了,这就引出了下面的概念,我们不仅要让经验风险最小化,还要让结构风险最小化。这个时候就定义了一个度量函数
这个函数专门用来度量模型的复杂度,表示模型的结构风险(Structural risk),在机器学习中也叫正则化(Regularization),为了让模型尽可能结构简单,我们的优化目的又多一个,即结构风险最小化(Structural risk minimization)。在机器学习中正则化使用得极其广泛。到了这一步,我们就可以给出最终的优化函数:
相信通过上述名词解释,大家可以对机器学习中的学习准则有一个大致了解。
在高数中我们学习过极值和最值得概念,通常来说,最小值必然是极值点,而连续函数的极值点可以通过求一阶导数并令导数等于0,最后找到值最小的极值点,就是最小值点。而在机器学习中,由于目标函数的复杂性,高数中的解法绝大多数情况行不通,这个时候需要一些别的算法。机器学习求解目标函数常用的算法有最小二乘法、梯度下降法(属于迭代法的一种),最小二乘法针对线性模型,而梯度下降法适用于任意模型,适用最为广泛。
在一些最优化问题中,比如曲线拟合,目标函数由若干函数的平方和构成,一般可以写成
把极小化 F(x) 称为最小二乘问题。最小二乘法分为线性最小二乘问题和非线性最小二乘问题,解决线性最小二乘问题的最常用方法就是最小二乘法。
还记得概率论与数理统计课本里关于线性回归(线性拟合)的某一节中不要求掌握的公式吗?对于坐标为(x,y)的n个样本,假设拟合直线为y=ax+b, 通过使
最小,然后对a和b分别求偏导,得到的了a和b关于n个样本的表示,这种方法就叫做最小二乘法,这是一种基于高斯分布假设的回归方法。
梯度下降法(GD)是机器学习中最常见的迭代方法:梯度是上升最快的方向,那么如果逆着上升最快的方向就是此刻下降最快的方向,所以GD通常也称最速下降法(Steepest descent method)。
梯度下降法的基本思想可以类比为一个下山的过程。
假设这样一个场景:一个人被困在山上,需要从山上下来(找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低;因此,下山的路径就无法确定,必须利用自己周围的信息一步一步地找到下山的路。这个时候,便可利用梯度下降算法来帮助自己下山。怎么做呢,首先以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着下降方向走一步,然后又继续以当前位置为基准,再找最陡峭的地方,再走直到最后到达最低处;同理上山也是如此,只是这时候就变成梯度上升算法了。
数学公式:
梯度下降法由于可对任意函数求最优解,故在机器学习中广泛使用;但GD也有如下明显的缺点:
1.从上面迭代公式可以看到,GD是线性收敛,所以收敛速度较慢。
2.当目标为非凸函数时,GD求得的解不保证是全局最优解。
对数据进行预处理,例如:对一些具有特征值缺失的样本进行剔除或根据某种准则进行填充,或者对于图片进行去除噪声,对文字进行分割。
对原始数据中提取一些有效的特征,比如在图像分类中,提取边缘、尺度不变的特征变换特征等。
对特征进行一定的加工,比如降维和升维,降维包括特征抽取和特征选择两种途径,常用的特征转换方法由主成分分析、线性判别分析等。
机器学习的核心部分,学习一个函数进行预测。(上面的基本术语有更详细的解释)
《Python3从入门到实战》董洪伟 著
《机器学习》(西瓜书) 周志华 著
《机器学习实战------基于Scikit-Learn、Keras和TensorFlow》(蜥蜴书) [法]奥雷利安•杰龙(Aurélien Géron)著
《深度解剖深度学习原理》董洪伟 著
《深度学习》(花书) [美]Ian Goodfellow [加]Yoshua Bengio [加]Aaron Courville 著