购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第1章
机器学习入门

本章结构

本书的目标是“通过数学来理解机器学习和深度学习”。

本章中,我们将用高中数学知识,通过清晰易懂的例子,来说明“到底什么是机器学习和深度学习”和“为什么机器学习和深度学习中非用数学不可”。

1.1
人工智能(AI)与机器学习

所谓人工智能(AI)与机器学习嘛……虽说我们老是听说,但如果问起定义,你能立刻答上来吗?

关于人工智能,据笔者所知还没有通用、明确、严密的定义。如果问起“什么是人工智能”,那一定是众说纷纭。从1950年开始,也就是设计“图灵测试 ”的阿兰·图灵那个时代,人们就试图回答这个问题。实践中也将其称为“规则库系统 ”,它包含基于知识数据推演来发现答案的方式。不得不说,人工智能这个词表达的范围非常广泛。

与此相对,机器学习所指的内容和操作很明确,一定程度上可以严格定义。本书讨论的内容就是“机器学习”这个概念的内涵。

因此,本书原则上不使用“人工智能”这个词,而代之以“机器学习”来表达,将“深度学习”当作一种特定的“机器学习”的名字即可。至于是怎么个特定法,本章的后半部分会说明。

1.2
机器学习

那么,机器学习到底是什么呢?虽然机器学习所指的东西是很明确的,但是表述的方法因人而异。为了统一认识,以下按照笔者的思路简单说明一下机器学习的定义。

1.2.1 机器学习模型

本书定义的机器学习模型为满足以下两个原则的系统。

原则1: 机器学习模型是对输入数据执行函数输出结果的模型。

原则2: 机器学习模型的操作是通过学习得来的。

下面我们举例说明。请看表1-1的鸢尾花数据集,它是从机器学习中经常使用的公开数据抽取特定行、列的关于鸢尾花瓣尺寸的数据。class表示花的品种,length表示花瓣的长度,width表示花瓣的宽度。

表1-1 2种鸢尾花瓣的尺寸

这里我们考虑构建模型,只要输入length和width的值,就能输出品种的名字class。我们先人工观察一下表1-1中的6个数据。

只要实现这样的逻辑,我们就可以构造出一个能正确运转的黑箱。

但是,上述根据条件做判断的场景里有人参与,所以不是机器学习。既然是机器学习模型,人只要给模型输入数据就可以了,上述程序里条件的判断标准必须由模型自己发现,也就是前文第2条原则“操作是通过学习得来的”的意思。

1.2.2 学习的方法

机器学习模型必须学习,具体来讲有3种方法。

监督学习

这种方法在给模型输入用于学习的数据时也输入对应的真实值(即有标签的数据)。

无监督学习

这种方法在输入学习的数据时,没有真实值,让模型自己学出点什么。根据样本数据自动分类的聚类分析就是无监督学习的代表。

强化学习

这是一种介于监督与无监督学习之间的学习法。外部对模型输入观测值,模型根据所谓策略来行动,然后外部给出反馈。模型在输入步骤尚不知道真实值是什么,但后面通过收益就理解了真实值是什么。

以上三种学习方法中,监督学习的原理最简单易懂。本书介绍的便是监督学习。

1.2.3 监督学习与回归和分类

举例来说,预测商店一天销售收入的数值,根据照片判断动物种类的离散值(称为“类别”或“标签”),都是监督学习模型。我们把前者称为回归模型,后者称为分类模型,如图1-1所示。本书中对回归模型与分类模型都有介绍。

图1-1 回归模型与分类模型

1.2.4 训练步与预测步

监督学习中,有“训练步”与“预测步”两个步骤。

训练步如图1-2所示,我们把样本数据与真实值(标签)作为训练数据输入,构造尽可能精确(预测结果与真实值接近)的模型。

图1-2 训练步

预测步里我们只输入样本数据,不带真实值(见图1-3)。机器学习模型用来预测输入样本的真实值是什么,并将其作为系统的输出。

图1-3 预测步

1.2.5 损失函数与梯度下降法

以上介绍的机器学习模型定义里,并不涉及内部结构,总之机器学习模型是个黑箱,根据外部输入来操作输出。要实现这样的功能,方法多种多样。例如有种分类模型叫作决策树,就是观察数据,自动做出if then else的规则,很近似人的思考方法。

但是,本书涉及的模型完全不同,其结构中自带参数,需要做函数的数值计算。因此,我们要以输出为目标,来调整模型中函数的参数。

利用损失函数学习的方法如图1-4所示。

图1-4 利用损失函数学习的方法

损失函数是表示模型的预测值与真实值(标签)相近程度的指标。两者相差越大,函数值越大。如果对于全部训练数据有 yp = yt (预测值=真实值),损失函数值就是零。

“梯度下降法”是为了使损失函数值最小,调节模型的参数到最优的算法。

简而言之,这部分的目标就是帮助你理解“损失函数”与“梯度下降法”的思想。现在,光看上面的说明,你可能还是一头雾水,不过一点一点就能懂了。现在请把这两个词和图1-4都记住吧。

1.3
机器学习模型初步

我们来举个简单的例题,使你对上一节所说的“损失函数”有个更具体的印象。虽然用“偏微分”推导更省时间,但是本书完全不使用高等数学知识,只需要用高中二次函数之类的数学知识即可说明。读了一遍之后,你就有了“使用基础数学知识来解机器学习模型”的印象。最好继续努力,争取能自己推导出来。

一元回归就是输入一个实数值( x ),用模型来预测另一个实数值( y )。比如,输入成年男子的身高(cm),输出体重(kg)。模型的结构叫作“线性回归”。

线性回归是一次函数的预测模型,输入数据记作 x ,输出数据记作 y ,线性回归的预测表达式如下。 [1]

y = w 0 + w 1 x (1.3.1)

请看表1-2中的前3个样本。

表1-2 学习样本1

事实上,由于在数据上做了手脚,可以很容易地得出公式:

那么,表1-3中的5个样本又如何呢?

表1-3 学习样本2

随着这样的样本数的增加,谁也不知道预测表达式会成什么样子。我们必须用数学方法来解决问题。

首先,把表1-3中的样本用散点图表示出来(图1-5)。

图1-5 学习样本的2维散点图

图1-6中,我们画出了一条参数与模型预测值 关系的直线。

图1-6 实际值与预测值的误差图

y t 是真实值, yp 是模型的预测值,回归模型的误差就是( y t yp ),相当于图1-6中的灰色线段。但是,多点的误差有正有负互相抵消,这如何是好?我们考虑把样本的真实值 yt 与预测值 yp 的差做二次方,再对所有点求和作为损失函数来评价。

这种思路叫作“残差平方和”,它就是线性回归模型的标准损失函数。

现在损失函数是什么样子的呢?我们来实际计算一下。预测值用 yp 表示,从式(1.3.1)得到

我们把5个样本点的坐标表示为( x ( i ) , y ( i ) ),其中右上角的数字用来区别不同样本点。这样,损失函数 L ( w 0 , w 1 )就成了下式。

把上式展开,对 w 0 w 1 进行整理,得到下式。

(1.3.2)

式(1.3.2)是关于 w 0 w 1 的二次式。这个式子里 w 0 w 1 w 0 的系数只与输入样本的 x 坐标和 y 坐标有关。然后,我们建立新坐标系,并把原样本点坐标值的平均值当作新原点建立新坐标系,如图1-7所示。

图1-7 原点的移动

我们来实际计算一下。 x 坐标的平均值是171.0, y 坐标的平均值是65.4,用 X Y 表示样本坐标减去它们后得到新的学习样本(表1-4)。

表1-4 学习样本3

在新坐标系上做散点图,如图1-8。

图1-8 新坐标系上的散点图

新坐标系上的权重记作 W 0 W 1 ,预测式变成如下式子。

(1.3.3)

把新坐标系里的表1-4的 X Y 值代入式(1.3.3),具体计算损失函数如下 [2]

(1.3.4)

W 0 有关的项只有5 W 0 2 。这部分在 W 0 =0时取最小值0。我们把剩余的58 W 1 2 −211.2 W 1 +214.96看成 W 1 的二次函数,用配方法来求出最小值。

据此,我们知道当 W 1 =1.82068...时函数取最小值为22.6951...。图1-9为 L (0, W 1 )的函数的图像。

图1-9 L 0 W 1 )的图像

由此,我们就能得到损失函数(1.3.4)在新坐标系里取最小值的点,即

(1.3.5)

最佳预测函数与回归直线方程的图像表示

前一节提到,“训练步”“预测步”中,“训练步”的目的是计算最佳 W 0 , W 1 。接下来开始讨论“预测步”。

把前面式(1.3.5)得到的参数值代入式(1.3.3),得到下式。

(1.3.6)

这就是本次计算得到的回归模型的预测公式。在原来的散点图里叠加上这条回归直线得到图1-10。

图1-10 散点图与回归直线(坐标系变换后)

可以看出这5个点可用直线近似拟合。最后再把坐标系移回原坐标系,得出原问题对应的回归模型预测公式。

可得

(1.3.7)

(1.3.8)

把式(1.3.7)和式(1.3.8)代入式(1.3.6),得到下式

把这个函数图像叠加到原来的散点图上,就有了一条拟合直线,如图1-11所示。这个模型叫作 一元线性回归 ,它是机器学习里最简单的模型,只需高中数学知识就可以理解了。

图1-11 原坐标系上的散点图与预测公式函数图像

1.4
本书中采用的机器学习模型

前一节中谈的是预测数值类型的回归模型,但本书最终目的是深度学习,多为预测离散值类型的分类模型。尽管如此,这里我们先介绍回归模型,是因为它在数学上很优美,理解它可以更容易地理解分类模型。

实现分类功能的模型各种各样,表1-5总结了其中的典型模型。

表1-5 典型分类模型

本书从这些分类模型中选了“ 逻辑回归 ”和“ 神经网络 ”作特别介绍。这两种模型有相通点,然后本书的最终目标“ 深度学习 ”就是这两种模型的进阶版。

我把“逻辑回归”“神经网络”“深度学习”的共同特点整理如下,可列为(A)到(E)。

(A)模型的结构是事先确定的,只有参数能自由调节。

(B)构建模型过程如下:

(1)将各输入值乘以参数(称为“ 权重 ”);

(2)对乘积求和;

(3)把(2)的结果输入函数(称为“ 激活函数 ”),输出作为最终的预测值( yp )。

(C)通过学习将参数(权重)最优化。

(D)用“ 损失函数 ”来判断模型对真实值预测的准确度。

(E)用“ 梯度下降法 ”来获取损失函数中的合适参数。

图1-12所示为(B)的模型结构。

图1-12 预测模型的结构

逻辑回归是指具有一层图1-12结构的模型。神经网络中,在其中间加了一个“隐藏层”,形成两层的结构(图1-13)。

图1-13 神经网络模型的结构

具有三层以上(含两层隐藏层以上)的学习模型一般叫作深度学习模型。这里的三个模型层数不同,预测、学习的方式基本相同。

其实前文介绍的所谓“线性回归”模型,不是分类模型,而是回归模型,但它与现在介绍的分类模型非常相似,只不过缺少(B)-(3)的激活函数,此外从(A)到(D)全都满足。(图1-14

也就是说,仅从预测公式的结构来看,线性回归模型可算是逻辑回归系列分类模型的前置。

图1-14 线性回归模型的结构

这些内容在本书后面的实践篇开头的线性回归模型里都有,此后是分类模型的逻辑回归模型、神经网络,进一步延拓为深度学习。我想以这样方式介绍机器学习模型的进化历程。

1.5
机器学习与深度学习中数学的必要性

本书的实践篇以分类模型为中心,以损失函数为线索,求解最优参数,使用的是1.3节说明的回归模型的基本思想。

1.3节中的模型是一次函数和二次函数,但是之后的预测函数和损失函数形如下式,这使得运算理解难度大大提高。

Sigmoid函数:

[exp ( x )是以自然常数为底的指数函数]

预测函数:

损失函数:

(ln x 是以自然常数为底的对数函数)

对于 自然常数 是什么, 指数函数 对数函数 又是什么, 微分 什么样,如果掌握的数学知识量还不到高三的水平,那还真是束手无策。然后,即使是比分类模型简单的线性回归模型,也有不只用身高,还加上胸围等数据精确地预测体重的 多元回归模型 。对于这种模型,1.3节中介绍的“平移坐标系→二次函数的平方法”这种高一水平的解题方法就搞不定了。至少, 多元函数中 偏微分 的概念必不可少。

无论如何,如果我们想要理解线性回归和逻辑回归系列的机器学习模型,就必须保证对数学理解到一定程度。更何况,如果想理解进阶版的深度学习模型,数学就更必要了。

1.6
本书的结构

前文讲了数学的必要性,本书是理解深度学习的捷径。我在理论篇里介绍了最低限度需要掌握的数学概念。在实践篇里,使用理论篇介绍的数学知识,高效地学习机器学习和深度学习的精华。

各部分的详细结构如下。本书的结构在插页里面,请在阅读过程中随时回顾。

理论篇

理论篇里我将要介绍的是数学的理论体系,也包括数学的演进、深度学习必要的数学概念和公式。这一部分会包含大学程度的内容,以高中生的数学水平也能理解大部分。本书里我选取机器学习和深度学习必要的概念,建立分析体系,使大家尽可能地理解这些概念。

在此目标下,我删掉了很多一般教科书里写的内容(例如三角函数的微分、逆矩阵、特征值、特征向量等)。请看好,本书是直奔目的地去的。

图1-15是理论篇全体概念之间的关系。第2章“微分与积分”与第3章“向量与矩阵”相互独立,但是第4章及以后都依赖这两章。

图1-15 理论篇的结构

图1-16~图1-20表示各章内部概念之间的关系。有“学习重点”标记的方框在实践篇里会直接使用,是实现深度学习必需的概念。另外,灰色方框表示这是非常重要的概念,所以请好好理解。对基础部分已经大体了解的读者,如果阅读重要的部分时有不明白的,也可以沿着这个图追溯不明白的部分。

图1-16 第2章概念之间的关系

图1-17 第3章概念之间的关系

图1-18 第4章概念之间的关系

图1-19 第5章概念之间的关系

图1-20 第6章概念之间的关系

实践篇

在实践篇里,我会按章出例题,沿着主题循序渐进,学习机器学习算法和实现代码。每个主题后面的章节包含很难的内容。

我画了表1-6来对应理论篇里阐述的“必需”的各种概念。第10章里就是我们一直期望掌握的深度学习了。从表中可知,第9章的多分类与第10章的深度学习在必需的概念上几乎没有区别。请一章一章阅读,一步一步前行,总能到达“深度学习”的山顶。

实践篇里,我坚持“码码致知”的原则。各章的最后一节都会附上代码。

在实践里,我们会最大限度地活用NumPy 的特点,目标是“无循环编程”。一实践操作,就能轻易读懂各算法的核心,也容易明白各算法的结构。对于实操必需的NumPy技术,在必要的地方我都有解说。

表1-6 必需的数学概念与机器学习和深度学习的关系

从下一章开始我们就要进入理论篇了。因为设定是从高一的数学水平开始,只要花工夫详细阅读,一定可以融会贯通。虽然包含了部分稍微有难度的叙述,但为了理解深度学习那也必不可少。请抱有这种意识前进吧。

[1] 通常,一次函数表达为 y = ax + b ,在机器学习里, a b 称为“权重”,大多用单词weight的缩写表示(如 w 0 w 1 ),本书也沿用。

[2] 具体而言,相当于与式(1.3.2)对应,把 x yt 用新坐标系中的 X Yt 来计算。 SWi1seyGwrpL2dKakWSciRhZK4V9Zs7azd/R1UWhslxTOyU54NQLkw6gaS6lQStx

点击中间区域
呼出菜单
上一章
目录
下一章
×