Python深度学习:模型、方法与实现
上QQ阅读APP看书,第一时间看更新

1.1 神经网络的数学基础

接下来的几节将讨论与神经网络相关的数学分支。讨论完后,将回到神经网络本身。

1.1.1 线性代数

线性代数可以处理线性方程组(如a1x1+a2x2+…+anxn+b=0)和线性变换(或线性函数)及其表示(如矩阵和向量)。

线性代数识别下列数学对象:

  • 标量:单个数字。
  • 向量:一个一维的数字(或分量)数组。数组的每个分量都有一个索引。在文献中,我们会看到向量用上标箭头000或黑斜体(x)表示。下面是一个向量的例子:
  • 000

    我们可以直观地将一个n维向量表示为n维欧几里得空间ℝn中的某一点的坐标,ℝn相当于一个坐标系。在这种情况下,我们称向量为欧几里得向量,每个向量分量代表沿相应轴的坐标,如下图所示:

    000

    3空间中的向量表示

    然而,欧几里得向量不仅仅是一个点,我们也可以用以下两个属性来表示它:

    • 大小(或长度)是毕达哥拉斯(勾股)定理在n维空间中的推广:
    000
    • 方向是向量沿空间各轴的角度。

000 本书主要使用黑斜体(x)图形符号。但在某些情况下,会用到不同来源的公式,而我们会尽量保留它们最初的符号。

  • 矩阵:这是一个二维的数字数组。每个元素由两个索引(行和列)标识。矩阵通常用黑斜体大写字母表示,例如A。每个矩阵元素用小写的矩阵字母和一个下标索引表示,例如aij。让我们看一个矩阵符号的例子:
000

我们可以将一个向量表示为单列n×1矩阵(称为列矩阵)或单行1×n矩阵(称为行矩阵)。

  • 张量:在解释它们之前,我们必须先声明一下。张量最初来自数学和物理,在ML中开始使用它们之前就已经存在很久了。张量在这些领域中的定义与在ML中的不同。本书只考虑ML中的张量。此处,张量是一个具有以下属性的多维数组:
  • :表示数组的维数。例如,2阶张量是一个矩阵,1阶张量是一个向量,0阶张量是一个标量。然而,张量在维数上没有限制。实际上,有些类型的神经网络使用4阶张量。
  • 形状:每个维度的大小。
  • 张量元素的数据类型:这些值在库之间可能不同,但通常包括16、32以及64位浮点数和8、16、32和64位整数。

现代DL库如TensorFlow和PyTorch使用张量作为其主要数据结构。

000 可以在这里找到关于张量本质的详细讨论:https://stats.stackexchange.com/questions/198061/why-the-sudden-fascination-with-tensors。还可以查阅TensorFlow(https://www.tensorflow.org/guide/tensors)和PyTorch(https://pytorch.org/docs/stable/tensors.html)的张量定义。

我们已经介绍了线性代数中的对象类型,下一节将讨论可以应用于它们的一些运算。

向量与矩阵运算

在这一节中,我们将讨论与神经网络相关的向量和矩阵运算。让我们开始吧:

  • 向量加法是将两个或多个向量相加到一个输出向量和的运算。输出为另一个向量,计算公式如下:
  • a+b=[a1+b1a2+b2,…,an+bn

  • 点积(标量积)接受两个向量并输出一个标量值。我们可以用以下公式计算点积:
  • a·b=|a||b|cosθ

    此处,|a|和|b|是向量的大小,θ是两个向量之间的夹角。假设这两个向量是n维的,它们的分量是a1b1a2b2等。此处,上面的公式等价于以下公式:

    a·b=a1b1+a2b2+…+anbn

二维向量ab的点积如下图所示。

000

向量的点积。上图为向量分量,下图为两个向量的点积

点积是两个向量之间的一种相似性度量——如果两个向量的夹角θ很小(它们的方向相似),那么它们的点积会因为cosθ而增大。

根据这个思想,可以将两个向量之间的余弦相似度定义如下:

000
  • 叉积(向量积)取两个向量并输出另一个向量,这个向量垂直于两个初始向量。可以用以下公式计算叉积输出向量的大小:

a×b=|a||b|sinθ

下图展示了两个二维向量之间的叉积的例子。

000

两个二维向量的交叉乘积

如前所述,输出向量垂直于输入向量,这也意味着向量垂直于包含它们的平面。输出向量的大小等于以向量ab为边的平行四边形的面积(如上图所示)。

000 还可以通过向量空间定义向量,向量空间是对象(本书中是向量)的集合,可以用标量值相加和相乘。向量空间允许我们将线性变换定义为一个函数f,它可以将向量空间V的每个向量(点)转换为另一个向量空间W的向量(点),fVW。对于任意两个向量(uvV),f必须满足以下要求:

  • 加性:fu+v)=fu)+fv
  • 齐次性:fcu)=cfu),c为标量时
  • 矩阵转置:沿着主对角线翻转矩阵(主对角线是矩阵元素aij的集合,其中i=j)。将转置运算记为上标T。矩阵AT中的元素aij等于矩阵A中的元素aji
  • [AT]ij=Aji

    m×n矩阵的转置是n×m矩阵。下面是一些转置的例子:

    000
  • 矩阵-标量乘法是一个矩阵乘以一个标量值。下面的例子中,y是一个标量:
  • 000
  • 矩阵-矩阵加法是一个矩阵与另一个矩阵进行元素上的加法。对于这个运算,两个矩阵必须具有相同的大小。下面是一个例子:
  • 000
  • 矩阵-向量乘法是一个矩阵与一个向量的乘法。为了使这个运算有效,矩阵列的数目必须等于向量的长度。m×n矩阵与一个n维向量相乘的结果是一个m维向量。下面是一个例子:
  • 000

    可以把矩阵的每一行看作一个单独的n维向量。输出向量的每个元素对应矩阵行与x的点积,下面是一个数值例子:

    000
  • 矩阵乘法是一个矩阵与另一个矩阵的乘法。为了使其有效,第一个矩阵的列数必须等于第二个矩阵的行数(这是一个不能更改顺序的运算)。我们可以把这个运算看作矩阵-向量的多重乘法,其中第二个矩阵的每一列都是一个向量。一个m×n矩阵乘以一个n×p矩阵的结果是一个m×p矩阵。下面是一个例子:
  • 000

如果把两个向量看作行矩阵,则可以将一个向量点积表示为矩阵乘法,即a·b=abT

线性代数的介绍到此结束。在下一节中,我们将介绍概率论。

1.1.2 概率介绍

本节讨论与神经网络相关的概率和统计的一些知识。

先介绍一下统计实验的概念,它有以下几个特点:

  • 由多个独立试验组成。
  • 每次试验的结果都是不确定的,也就是说,结果是偶然的。
  • 可能的结果不止一种。这些结果称为事件(在集合中会讨论事件)。
  • 实验的所有可能结果都是预先知道的。

一个统计实验的例子是抛硬币,它有两种可能的结果——正面或反面。另一个例子是掷骰子,有六种可能的结果:1、2、3、4、5和6。

我们将概率定义为某事件e发生的可能性,用Pe)表示。概率是一个在[0,1]范围内的数字,其中0表示该事件不可能发生,1表示该事件始终会发生。如果Pe)=0.5,则事件发生的概率是50%,以此类推。

有两种方法可以得到概率:

  • 理论:我们感兴趣的事件与可能发生的事件总数的比较。所有事件的概率都是一样的。
  • 000

    为了理解这一点,使用有两种可能结果的抛硬币的例子。每种可能结果的理论概率是P(正面)=P(反面)=1/2。掷骰子得到每一面的理论概率是1/6。

  • 经验:我们感兴趣的事件发生的次数与试验总数的比较。
  • 000

    实验结果可能表明这些事件不是等概率的。例如,假设我们抛100次硬币,56次正面朝上。此处,正面的经验概率是P(正面)=56/100=0.56。试验次数越多,计算出的概率就越准确(这称为大数定律)。

下一节讨论集合中的概率。

概率和集合

一个实验的所有可能结果(事件)的集合称为样本空间。样本空间可以被看作一个数学集合,通常用大写字母表示,可以用{}列出集合的所有结果(与Python集合相同)。例如,抛硬币事件的样本空间为Sc={正面,反面},而掷骰子的样本空间为Sd={1,2,3,4,5,6}。集合中的一个结果(例如正面)称为样本点事件是样本空间的一个结果(样本点)或结果的组合(子集)。一个组合事件的例子是骰子落在一个偶数上,即{2,4,6}。

假设有一个样本空间S={1,2,3,4,5},两个子集(事件)为A={1,2,3},B={3,4,5}。可以用它们进行以下运算:

  • 交集:结果是一个新的集合,只包含在两个集合中都存在的元素。
  • AB={3}

    交集为空集{}的集合是不相交的。

  • 补集:结果是一个新的集合,包含了给定集合中不包含的样本空间的所有元素。
  • A′={4,5} B′={1,2}

  • 并集:结果是一个新的集合,包含可以在任意一个集合中找到的元素。
  • AB={1,2,3,4,5}

下面的维恩图说明了这些不同的集合关系。

000

可能的集合关系的维恩图

可以将集合属性转换为事件和事件的概率。假设事件是独立的——一个事件的发生不影响另一个事件发生的概率。例如,每次抛硬币的结果都是相互独立的。让我们学习如何在事件域中转换集合运算:

  • 两个事件的交集是两个事件中包含的结果的子集。交集的概率称为联合概率,计算公式如下:
  • PAB)=PA)*PB

    假设我们想计算一张红扑克牌(红桃或方块)是Jack的概率。红牌的概率是P(红牌)=26/52=1/2。得到Jack的概率是Pj)=4/52=1/13。因此,联合概率为P(红牌,Jack)=(1/2)*(1/13)=1/26。在这个例子中,假设这两个事件是独立的,然而这两个事件同时发生(我们抽一张牌)。如果它们连续发生,例如,抽两次牌,其中一张是Jack,另一张是红牌,那么我们就进入了条件概率的领域。这个联合概率也记为PAB)或PAB)。

    单个事件PA)发生的概率也称为边际概率(与联合概率相对)。

  • 如果两个事件没有共同的结果,那么事件就是不相交的(或相互排斥的)。即它们各自的样本空间子集是不相交的。例如,奇数或偶数骰子的事件是不相交的。不相交事件的概率如下:
  • 不相交事件的联合概率(这些事件同时发生的概率)为PAB)=0。
  • 不相交事件概率的和是∑P(不相交事件)≤1。
  • 如果多个事件的子集包含它们之间的整个样本空间,那么它们是联合穷举的。上面例子中的事件AB是联合穷举的,因为它们一起填满了整个样本空间(1到5)。联合穷举事件的概率如下:
  • P(联合穷举事件)=1

    如果在同一时间只有两个不相交且联合穷举的事件,则这些事件是互补的。例如,奇数和偶数掷骰子事件是互补的。

  • 把来自AB的结果(不一定同时来自两者)称为AB的并集,这个并集的概率如下:
  • PAB)=PA)+PB)-PAB

目前为止,我们已经讨论了独立事件。下一节讨论相关事件。

条件概率和贝叶斯规则

如果事件A的发生改变了事件B的发生概率,且A发生在B之前,那么两者是相关的。为了说明这一概念,假设从牌堆中顺序地抽出多张牌。当牌堆完整时,抽到红桃的概率是P(红桃)=13/52=0.25。但是一旦抽到的第一张牌是红桃,在第二次抽到红桃的概率就会改变。现在,我们只有51张牌,少一张红桃。我们称第二次抽到的概率为条件概率,用PB|A)表示。这表示假设事件A已经发生(第一次抽牌)时,事件B(第二次抽牌)的概率。继续我们的例子,第二次抽到红桃的概率变成P(红桃2|红桃1)=12/51=0.235。

接下来,可以根据相关事件扩展联合概率公式(在前一节中介绍过)。公式如下:

PAB)=PAPB|A

然而,上面的方程只是两个事件的特例。可以把它扩展到多个事件,A1A2,…,An。这个新的通用公式称为概率链式法则:

PAn∩…∩A1)=PAn|An-1∩…∩A1)·PAn-1∩…∩A1

例如,三个事件的链式法则如下:

PA3A2A1)=PA3|A2A1)·PA2A1)=PA3|A2A1)·PA2|A1)·PA1

也可以推导出条件概率本身的公式:

000

这个公式的解释如下:

  • PAB)表示如果A已经发生,我们对B的发生感兴趣。换句话说,我们感兴趣的是事件的联合发生,这就是联合概率。
  • PA)表示我们只对事件A发生的结果的子集感兴趣。我们已经知道A发生了,因此我们只观察这些结果。

相关事件适用于以下情况:

PAB)=PAPB|A

PAB)=PBPA|B

利用这个等式,可以将条件概率公式中的PAB)的值替换为:

000

如果知道相反的条件概率PB|A),那么上面的公式可以计算条件概率PB|A),该方程称为贝叶斯规则,在ML中经常使用,在贝叶斯统计中,PA)和PB|A)分别称为先验概率和后验概率。

贝叶斯规则可用于医学测试领域。假设要确定一个病人是否患有某种疾病。我们做了一个医学测试,其结果是阳性的,但这并不一定意味着病人患有这种疾病。大多数测试都有一个信度值,即对患有某种疾病的人进行测试,其结果呈阳性的百分比。利用这些信息,我们将应用贝叶斯规则来计算病人患病的实际概率,假设测试结果是阳性的。得到以下结果:

000

此处,P(患病)是没有任何先决条件的疾病的一般概率。把这个看作疾病在一般人群中的概率。

接下来,对这种疾病和测试的准确率做一些假设:

  • 测试可信度为98%,即如果测试结果呈阳性,98%的病例也会呈阳性:P(测试结果=阳性|患病)=0.98。
  • 50岁以下的人中只有2%患有这种疾病:P(患病)=0.02。
  • 50岁以下的人的测试中只有3.9%的人的测试结果是阳性的:P(测试结果=阳性)=0.039。

可以问这样一个问题:如果一项测试对癌症的准确率是98%,而一个45岁的人做了测试,结果是阳性,那么他患病的概率是多少?利用上式,可以计算出:

000

下一节将在概率的基础上讨论随机变量和概率分布。

随机变量和概率分布

统计学中将变量定义为描述给定实体的属性。属性值可以因实体而异。例如,可以用一个变量来描述一个人的身高,这个变量对不同的人来说是不同的。假设多次测量同一个人的身高。由于一些随机因素,比如人的姿势或者测量不准确,我们每次会得到略微不同的值。因此,尽管测量相同的东西,变量高度的值也会有所不同。为了解释这些变化,我们将引入随机变量。这些变量的值由一些随机事件决定。与常规变量不同,随机变量可以有多个值,每个值都与某个概率相关。

随机变量有两种:

  • 离散的,可以取不同的单独值。例如,足球比赛中的进球数是一个离散变量。
  • 连续的,它可以取给定区间内的任意值。例如,高度测量是一个连续变量。

随机变量用大写字母表示,随机变量X的某个值x的概率用PX=x)或px)表示。随机变量的每一个可能值的概率集合称为概率分布。

根据变量类型,我们有两种概率分布:

  • 离散变量的概率质量函数(PMF)。下图是PMF的一个示例。x轴表示可能的值,y轴表示每个值的概率。
  • 000

    PMF的一个示例

    PMF只针对随机变量的可能值定义。PMF的所有值都是非负的,它们的和是1。也就是说,PMF的事件是互斥但联合穷举的。我们用PX)表示PMF,其中X是随机变量。

  • 连续变量的概率密度函数(PDF)。与PMF不同,PDF在两个值之间是不间断的(为每个可能的值定义),因此反映了连续变量的性质。下图是一个PDF的示例。
  • 000

    PDF的一个示例

    在PDF中,概率的计算是针对一个值区间,由该区间所包围的曲线下的表面积给出(如前面图表中标记的阴影面积)。曲线下的总面积是1。用fX表示PDF,其中X是随机变量。

接下来,让我们关注随机变量的一些属性:

  • 平均值(期望值)是一个经过多次观察的实验的预期结果。我们用μ000来表示。对于离散变量,它的均值是所有可能值乘以其概率的加权和:
  • 000

    以前面的离散变量示例为例,其中定义了一个具有六个可能值(0、1、2、3、4、5)及其各自概率(0.1、0.2、0.3、0.2、0.1、0.1)的随机变量。此处,均值是μ=0*0.1+1*0.2+2*0.3+3*0.2+4*0.1+5*0.1=2.3。

    连续变量的均值定义为:

    000

    对于离散变量,可以将PMF看作一个查找表,而PDF可能更复杂(一个实际的函数或方程),这就是为什么两者之间有不同的符号。我们不会深入讨论连续变量的均值。

  • 方差定义为随机变量偏离均值μ的平方差的期望值:
  • 000

    换句话说,方差度量的是随机变量的值与其均值之间的差异。

    离散随机变量的方差为:

    000

    使用前面的例子,我们计算的平均值是2.3。新的方差将是Var(X)=(0-2.3)2*0+(1-2.3)2*1+…+(5-2.3)2*5=2.01。

    连续变量的方差定义为:

    000
  • 标准差度量随机变量的值与期望值之间的差异程度。如果这个定义听起来像方差,那是因为它确实是方差。实际上,标准差的公式如下:
  • 000

    也可以用标准差来定义方差:

    000

    标准差与方差的区别是,标准差用与平均值相同的单位表示,而方差用平方单位表示。

这一节定义了什么是概率分布。接下来,讨论不同类型的概率分布。

概率分布

我们将从二项试验中离散变量的二项分布开始。二项试验只有两种可能的结果:成功或失败。它同时满足以下要求:

  • 每个试验都是独立于其他试验的。
  • 成功的可能性总是一样的。

二项试验的一个例子是抛硬币实验。

现在,假设这个试验包含n次试验。其中x是成功的,而每次试验的成功概率为p。变量X(不要与x混淆)的二项式PMF公式如下:

000

此处,n!/(x!(n-x)!是二项式系数。这是x个成功试验的组合,可以从n个试验中选择。如果n=1,有一个二项分布的特殊情况叫作伯努利分布

接下来,讨论连续变量的正态分布(或高斯分布),它非常接近许多自然过程。正态分布定义如下指数PDF公式,称为正态方程(最常用的符号之一):

000

此处,x是随机变量的值,μ为平均值,σ为标准差,σ2为方差。由上式得到钟形曲线,如下图所示。

000

正态分布

正态分布的一些特点如下所示:

  • 曲线的中心是对称的,也是最大值。
  • 曲线的形状和位置可以用均值和标准差充分描述,其中有:
  • 曲线的中心(及其最大值)等于平均值。也就是说,平均值决定曲线在x轴上的位置。
  • 曲线的宽度由标准差决定。

下页图中,我们可以看到具有不同的μσ值的正态分布的示例。

000

具有不同μσ值的正态分布示例

  • 正态分布在正/负无穷趋于0,但不会变成0。因此,正态分布下的随机变量可以有任何值(尽管有些值的概率很小)。
  • 曲线下的表面积等于1,这是由指数前的常数000确定的。
  • 000(位于指数位置)被称为标准分数(或z分数)。一个标准化正态变量的均值为0,标准差为1。一旦被转换,随机变量就会以标准化的形式参与到方程中。

下一节介绍信息理论的多学科领域,这将帮助我们在神经网络的背景下使用概率论。

信息理论

信息理论试图确定一个事件拥有的信息量。信息量遵循以下原则:

  • 事件发生的概率越高,该事件的信息量就越少。相反,如果概率较低,则事件包含更多的信息内容。例如,掷硬币的结果(概率为1/2)提供的信息少于掷骰子的结果(概率为1/6)。
  • 独立事件所携带的信息量是其各自信息内容的总和。例如,两次投掷骰子的结果为同一面(假设是4)的信息量是单独投掷的两倍。

将事件x的信息量(或自信息量)定义如下:

Ix)=-logPx

此处,log是自然对数。例如,如果事件的概率是Px)=0.8,则Ix)=0.22。或者,如果Px)=0.2,则Ix)=1.61。可以看出,事件信息量与事件概率呈反比关系。自信息Ix)的数量是用自然信息单位(nat)来衡量的。也可以用以2为底的对数Ix)=-log2Px))来计算Ix),这种情况下用位(bit)来度量它。这两个版本之间没有区别。本书使用自然对数版本。

000 讨论一下为什么在前面的公式中使用对数,即使负概率也满足自信息量和概率之间的互易性。主要原因是对数的积除法规则:

log(x1x2)=log(x1)+log(x2

log(x1/x2)=log(x1)-log(x2

此处,x1x2是标量值。无须过多细节,这些属性允许我们在训练网络期间轻松地最小化误差函数。

到目前为止,已经定义了单个结果的信息内容。但是其他的结果呢?为了测量它们,需要度量随机变量概率分布上的信息量。用IX)表示信息量,X是一个随机离散变量(此处我们关注离散变量)。回想一下,我们将离散随机变量的均值(或期望值)定义为所有可能值乘以其概率的加权和。此处类似,但是要将每个事件的信息内容乘以该事件的概率。

这个度量称为香农熵(或简称为熵),其定义如下:

000

此处,xi表示离散变量值。概率高的事件比概率低的事件有更多权重。可以把熵看作概率分布的事件(结果)的预期(平均)信息量。为了理解这一点,试着计算我们熟悉的抛硬币实验的熵。我们将计算两个例子:

  • 首先,假设P(正面)=P(反面)=0.5。此时熵为:
  • HX)=-P(正面)log(P(正面))-P(反面)log(P(反面))=0.5*(-0.69)-0.5*(-0.69)=0.7

  • 接下来假设,由于某种原因,结果不是等概率的概率分布是P(正面)=0.2,P(反面)=0.8。熵值为:
  • HX)=-P(正面)log(P(正面))-P(反面)log(P(反面))=-0.2*(-1.62)-0.8*(-0.22)=0.5

可以看到,当结果出现的概率相等时熵最大,当其中一个结果出现较为普遍时熵减小。在某种意义上,可以把熵看作不确定性或混乱的度量。下图显示了二项事件(如抛硬币)的熵HX)的图,取决于两种结果的概率分布。

000

左:自然对数的熵;右:以2为底的对数的熵

接下来,假设有一个离散随机变量X,它有两个不同的概率分布。通常情况下,神经网络产生一些输出概率分布QX),在训练中将其与目标分布PX)进行比较。可以测量这两个具有交叉熵的分布的差值,其定义如下:

000

例如,计算前一个抛硬币场景的两个概率分布之间的交叉熵。我们预测了分布Q(正面)=0.2,Q(反面)=0.8,目标(或真实)分布P(正面)=0.5,P(反面)=0.5。交叉熵为:

HPQ)=-P(正面)*log(Q(正面))-P(反面)*log(Q(反面))=-0.5*(-1.61)-0.5*(-0.22)=0.915

另一个衡量两个概率分布差异的方法是Kullback-Leibler散度(KL散度):

000

对数的乘积法则把第一行公式转换成更直观的第二行形式。很容易看出KL散度度量的是目标概率和预测概率之间的差异。如果进一步推导这个方程,还可以看到熵、交叉熵和KL散度之间的关系。

抛硬币示例场景的KL散度如下:

DKLP||Q)=P(正面)*[log(P(正面))-Q(正面)]+P(反面)*[log(P(反面))-Q(反面)]

=0.5(log(0.5)-log(0.2))+0.5(log(0.5)-log(0.8))=0.22

下一节讨论微分学领域,它将有助于训练神经网络。

1.1.3 微分学

在ML算法中,我们关心的是如何通过调整ML算法的参数来逼近目标函数。如果把ML算法本身看作一个数学函数(在神经网络中),我们可以知道,改变这个函数的一些参数(权重)时,它的输出是如何变化的。幸运的是,微分学处理的是一个函数关于它所依赖的变量的变化率。以下是对其衍生品的简短介绍。

假设有一个函数fx),只有一个参数x,其图形见下页。

000

fx)和斜率(点虚线)的曲线图

可以通过计算函数在这一点上的斜率来相对地了解fx)在任意x值下如何随x变化。如果斜率为正,函数值增大。相反,如果斜率是负数,函数值就会减小。斜率的计算公式如下:

000

此处的想法很简单,计算fxxx两个值之间的差别:Δy=fxx)-fx)。然后,计算Δy和Δx的比率来得到斜率。但如果Δx太大,那么测量不会很准确,因为函数的部分图(xxx)之间可能会大幅改变。可以使用一个较小的Δx来最小化这个错误。此处,可以关注图中较小的部分。如果Δx趋于0,可以假设斜率反映了图的一个点。此处,称斜率为fx)的一阶导数。可以用数学形式表示为:

000

此处,f′(x)和dy/dx分别是拉格朗日和莱博尼茨对于导数的符号表示。000是极限的数学概念——把它看作Δx趋近于0。求f的导数的过程叫作微分。下图为不同x值处的斜率。

000

可以看到,在这些点(称为鞍点)上,f局部最小值局部最大值处的斜率为0,f随着x的改变既不增大也不减小。

接下来,假设有一个多参数的函数fx1x2,…,xn)。f对任意参数xi的导数称为偏导数,表示为∂f/∂x。当计算偏导数时,假设所有其他参数(xjxi)都是常数。用000来表示向量分量的偏导数。

最后,介绍一些有用的微分规则:

  • 链式法则fg是函数,hx)=fgx))。此处,对于任意xf关于x的导数如下:
000
  • 求和法则:假设fg是函数,hx)=fx)+gx)。求和法则规定如下:

h′(x)=(fx)+gx))′=f′(x)+g′(x

  • 普通函数:
  • x′=1
  • ax)′=a,其中a是标量
  • a′=0,其中a是标量
  • x2=2x
  • (ex)′=ex

神经网络的数学工具和神经网络本身形成了一种知识层。如果把神经网络的实现想象成构建一所房子,那么数学工具就像混合混凝土。我们可以独立地学习如何混合混凝土而不是建造房子。事实上,除了建造房子的特定目的之外,还可以将混凝土用于多种目的。然而,需要知道在建房子之前如何搅拌混凝土。为了继续我们的类比,既然知道了如何混合混凝土(数学工具),我们将关注实际构建房子(神经网络)。