第 1 章 基础 基础
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
不要死记硬背这些公式。如果你理解了这些概念,就可以发明自己的符号。
约翰-科克伦,《2006 年投资说明
本章的目的是解释一些基础思维模型,这些模型对于理解神经网络的工作原理至关重要。具体来说,我们将介绍嵌套数学函数及其导数。我们将从最简单的构件出发,说明我们可以构建由 "链式 "组成函数构成的复杂函数,即使其中一个函数是矩阵乘法,需要输入多个输入,也可以计算函数输出相对于输入的导数。了解这一过程的工作原理对于理解神经网络至关重要,从技术上讲,我们要到第 2 章才开始涉及神经网络。
在我们了解神经网络的这些基础构件时,我们将从三个方面系统地描述我们介绍的每个概念:
-
数学,以一个或多个方程式的形式出现
-
代码,尽可能减少额外的语法(因此 Python 是理想的选择)
-
在编码面试中,你可以在白板上画一个图表,解释正在发生的事情。
正如 在序言中提到的,理解神经网络的挑战之一在于它需要多种心智模型。我们将在本章中感受到这一点:这三种视角中的每一种都排除了我们将要涉及的概念的某些基本特征,只有当它们结合在一起时,才能提供嵌套数学函数如何以及为什么以这种方式工作的全貌。事实上,我独树一帜地认为,任何试图解释神经网络构件的尝试,如果排除了这三个视角中的一个,都是不完整的。
说完这些,我们该迈出第一步了。我们将从一些极其简单的构件开始,来说明我们如何从这三个角度来理解不同的概念。我们的第一个构件将是一个简单而关键的概念:函数。
功能
什么 是函数,我们该如何描述它?与神经网络一样,描述函数也有多种方法,但没有一种方法能单独描绘出一幅完整的图画。与其尝试用一句话来精辟描述,不如让我们扮演盲人摸象的角色,逐一了解这三种心智模式。
数学
这里有两个用数学符号描述的函数例子:
-
f1(x)=x2
-
f2(x)=max(x, 0)
这个符号表示,我们任意称作f1和f2 的函数接受一个数字x作为输入,并将其转换为x2(第一种情况)或max(x,0)(第二种情况)。
图表
描绘功能的一种方法是:
-
绘制x-y平面(其中x指横轴,y指纵轴)。
-
绘制一堆点,其中点的 x 坐标是函数在某个范围内的输入(通常是均匀分布的),y 坐标是函数在该范围内的输出。
-
将这些绘制的点连接起来。
这是法国哲学家勒内-笛卡尔(René Descartes)首次采用的方法,在数学的许多领域,尤其是微积分领域都非常有用。图 1-1显示了这两个函数的曲线图。
图 1-1. 两个连续的、大部分可微的函数
不过,,还有另一种描绘函数的方法,这种方法在学习微积分时并不那么有用,但在我们思考 Deep Learning 模型时却非常有用。我们可以将函数看作是接收数字作为输入并产生数字作为输出的盒子,就像迷你工厂一样,它们有自己的内部规则来处理输入。图 1-2展示了这些函数作为一般规则的描述,以及它们如何对特定输入进行操作。
图 1-2. 观察这些功能的另一种方法
代码
最后,我们 可以用代码来描述这些函数。在此之前,我们应该先介绍一下我们将在其上编写函数的 Python 库:NumPy。