乐读窝

深度学习

乐读窝 > 文学理论 > 深度学习

第2章 线性代数

书籍名:《深度学习》    作者:伊恩.古德费洛



线性代数作为数学的一个分支,广泛应用于科学和工程中。然而,因为线性代数主要是面向连续数学,而非离散数学,所以很多计算机科学家很少接触它。掌握好线性代数对于理解和从事机器学习算法相关工作是很有必要的,尤其对于深度学习算法而言。因此,在开始介绍深度学习之前,我们集中探讨一些必备的线性代数知识。

如果你已经很熟悉线性代数,那么可以轻松地跳过本章。如果你已经了解这些概念,但是需要一份索引表来回顾一些重要公式,那么我们推荐The  Matrix  Cookbook(Petersen  and  Pedersen,2006)。如果你没有接触过线性代数,那么本章将告诉你本书所需的线性代数知识,不过我们仍然强烈建议你参考其他专门讲解线性代数的文献,例如Shilov(1977)。最后,本章略去了很多重要但是对于理解深度学习非必需的线性代数知识。



2.1 标量、向量、矩阵和张量


学习线性代数,会涉及以下几个数学概念:

标量(scalar):一个标量就是一个单独的数,它不同于线性代数中研究的其他大部分对象(通常是多个数的数组)。我们用斜体表示标量。标量通常被赋予小写的变量名称。在介绍标量时,我们会明确它们是哪种类型的数。比如,在定义实数标量时,我们可能会说“令表示一条线的斜率”;在定义自然数标量时,我们可能会说“令表示元素的数目”。

向量(vector):一个向量是一列数。这些数是有序排列的。通过次序中的索引,我们可以确定每个单独的数。通常我们赋予向量粗体的小写变量名称,比如x。向量中的元素可以通过带脚标的斜体表示。向量x的第一个元素是x1,第二个元素是x2,等等。我们也会注明存储在向量中的元素是什么类型的。如果每个元素都属于,并且该向量有n个元素,那么该向量属于实数集的n次笛卡儿乘积构成的集合,记为。当需要明确表示向量中的元素时,我们会将元素排列成一个方括号包围的纵列:

我们可以把向量看作空间中的点,每个元素是不同坐标轴上的坐标。

有时我们需要索引向量中的一些元素。在这种情况下,我们定义一个包含这些元素索引的集合,然后将该集合写在脚标处。比如,指定x1、x3和x6,我们定义集合S={1,3,6},然后写作xS。我们用符号-表示集合的补集中的索引。比如x−1表示x中除x1外的所有元素,x−S表示x中除x1、x3、x6外所有元素构成的向量。

矩阵(matrix):矩阵是一个二维数组,其中的每一个元素由两个索引(而非一个)所确定。我们通常会赋予矩阵粗体的大写变量名称,比如A。如果一个实数矩阵高度为m,宽度为n,那么我们说。我们在表示矩阵中的元素时,通常以不加粗的斜体形式使用其名称,索引用逗号间隔。比如,A1,1表示A左上的元素,Am,n表示A右下的元素。我们通过用“:”表示水平坐标,以表示垂直坐标i中的所有元素。比如,Ai,:表示A中垂直坐标i上的一横排元素。这也被称为A的第i行(row)。同样地,A:,i表示A的第i列(column)。当需要明确表示矩阵中的元素时,我们将它们写在用方括号括起来的数组中:

有时我们需要矩阵值表达式的索引,而不是单个元素。在这种情况下,我们在表达式后面接下标,但不必将矩阵的变量名称小写化。比如,f(A)i,j表示函数f作用在A上输出的矩阵的第i行第j列元素。

张量(tensor):在某些情况下,我们会讨论坐标超过两维的数组。一般的,一个数组中的元素分布在若干维坐标的规则网格中,我们称之为张量。我们使用字体来表示张量“A”。张量中坐标为(i,j,k)的元素记作Ai,j,k。

转置(transpose)是矩阵的重要操作之一。矩阵的转置是以对角线为轴的镜像,这条从左上角到右下角的对角线被称为主对角线(main  diagonal)。图2.1显示了这个操作。我们将矩阵A的转置表示为,定义如下

向量可以看作只有一列的矩阵。对应地,向量的转置可以看作只有一行的矩阵。有时,我们通过将向量元素作为行矩阵写在文本行中,然后使用转置操作将其变为标准的列向量,来定义一个向量,比如。

图2.1 矩阵的转置可以看作以主对角线为轴的一个镜像

标量可以看作只有一个元素的矩阵。因此,标量的转置等于它本身,。

只要矩阵的形状一样,我们可以把两个矩阵相加。两个矩阵相加是指对应位置的元素相加,比如C=A﹢B,其中Ci,j=Ai,j﹢Bi,j  。

标量和矩阵相乘,或是和矩阵相加时,我们只需将其与矩阵的每个元素相乘或相加,比如D=a·B﹢c,其中Di,j=a·Bi,j﹢c。

在深度学习中,我们也使用一些不那么常规的符号。我们允许矩阵和向量相加,产生另一个矩阵:C=A﹢b,其中Ci,j=Ai,j﹢bj。换言之,向量b和矩阵A的每一行相加。这个简写方法使我们无须在加法操作前定义一个将向量b复制到每一行而生成的矩阵。这种隐式地复制向量b到很多位置的方式,称为广播(broadcasting)。