第一章 机器学习

机器学习(Machine learning)是一类基于数据或者既往的经验,优化计算机程序的性能标准的方法 。这是机器学习的定义,看起来可能难以理解,我们对它进行分解:

  • 首先,对于手写数字识别这个任务来说,数据或者既往的经验就是已经收集到的手写数字,我们要让程序从这些数据中学习到一种能力/智能,这种能力就是:通过学习,这个程序能够像人一样识别手写数字。

  • 性能标准就是指衡量我们的程序的这种能力高低的指标了。在识别任务中,这个指标就是识别的精度。给定100个手写数字,有99个数字被我们的“智能”程序识别正确,那么精度就是 99% 。

  • 优化就是指基于既往的经验或者数据,让我们的“智能”程序变得越来越聪明,甚至比人类更加聪明。

机器学习,就是能够从经验中不断“学习进步”的算法,在很多情况下,我们将这些经验用数值描述,因此,经验=数据 ,这些收集在一起的数据被称为数据集(Dataset) ,前文提到的手写字数据被称为MNIST数据集(Modified National Institute of Standards and Technology database),每一条数据被称为一个样本,在这些已有的数据集上学习的过程称之为训练(Train) ,因此,这个数据集又被成为训练集(Training Set) ,很显然,我们不仅关心机器学习算法在训练集上的表现,并且希望算法对从未见过的手写数字也能够正确的识别,这种在新的样本(数据)上的性能被称之为 泛化能力(Generalization Ability),对于一个任务而言,泛化能力越强,这个机器学习算法就越成功。

根据数据集的不同,机器学习可以分成如下三类[4]:

  • **监督学习(Supervised Learning):**数据集既包含样本(手写字图片),还包含其对应的标签(每张手写字图片对应的是哪个数字)

  • **无监督学习(Unsupervised Learning):**与监督学习相对应,数据集仅包含样本,不包含样本对应的标签,机器学习算法需要自行确定样本的类别归属

  • **强化学习(Reinforcement Learning):**又称为增强学习,是一种半监督学习,强调如何基于环境而行动,以取得最大化的预期利益。我们在后面的章节中会重点介绍。

当前大热的神经网络,深度学习等都是监督学习,随着大数据时代的到来以及GPU带来的计算能力的提升,监督学习已经在诸如图像识别、目标检测和跟踪、机器翻译、语音识别和自然语言处理的大量领域取得了突破性的进展。然而,当前在无监督学习领域并没有取得像监督学习那样的突破性进展。

监督学习

监督学习是机器学习中的一类方法,也是目前应用最广泛的机器学习方法。

衡量一个机器学习模型的关键在于其泛化能力,一个衡量泛化能力的重要指标就是模型的训练误差测试误差的情况:

  • **训练误差:**模型在训练集上的误差

  • **测试误差:**模型在从未“见过的”测试集上的误差

这两个误差,分别对应了机器学习任务中需要解决的两个问题: 欠拟合(Underfitting)和过拟合(Overfitting)。当训练误差过高时,模型学到的函数并没有满足经验风险最小化。具体地,如果模型在训练集中的识别精度也很差,我们称这种情况为欠拟合。当训练误差低但是测试误差高,即训练误差和测试误差的差距过大时,我们称之为过拟合,此时模型学到了训练集上的一些“多余的规律”,表现为在训练数据集上识别精度很高,在测试数据集(未被用于训练,或者说未被用于调整模型参数的数据集合)上识别精度不高。

模型的容量(Model Capacity)决定了模型是否倾向于过拟合还是欠拟合。模型的容量指的是模型拟合各种函数的能力,一般而言,越复杂的模型能够表述越复杂的函数(或者说规律,或者说模式)。那么对于一个特定的任务(比如说手写字识别),如何去选择合适的模型容量来拟合相应的函数呢?根据奥卡姆剃刀原则(Occam's Razor):在同样能够解释已知观测现象的假设中,我们应该挑选“最简单”的那一个。

梯度下降算法

前面我们说到可以通过“一定的算法”调整神经网络的参数,这里我们就来介绍这个定向(朝着经验风险最小化的方向)调整模型参数的算法——梯度下降算法 (Gradient Descent Algorithm)。

梯度下降算法是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数当前点对应梯度(或者是近似梯度)的反方向的一定距离内进行迭代搜索。这种通过向导数的反方向移动一小步来最小化目标函数(损失函数)的方法,就是梯度下降算法。神经网络这种复杂的模型包含了很多参数,通常,步长被称为学习率(Learning Rate), 它描述了梯度下降的速度。

在本节中,我们快速了解了机器学习任务中的重要成分和结构:

  1. 首先,机器学习是用来完成特定的任务的: 比如说手写字识别、行人检测、房价预测等等。这个任务必须要有一定的性能度量,比如说识别精度,预测误差等等。

  2. 然后,为了处理这个任务 ,我们需要设计模型 ,这个模型能够从数据中基于一定的策略 (比如说经验风险最小化原则) 和一定的算法(比如说梯度下降算法) 去学习数据规律

  3. 最后,这个函数要能够处理没有出现在训练集中的情况,这样,我们的机器学习任务就成功了。

之后的文章会介绍具体的任务、模型、算法,但是总的来说还是遵照这样的基本模式,机器学习尤其是深度学习在无人驾驶的研究中起着非常重要的作用,我们将逐步深入学习无人驾驶中的机器学习算法。

Last updated