分类目录:《算法设计与分析》总目录
线性代数作为数学的一个分支,广泛应用于科学和工程中。然而,因为线性代数主要是面向连续数学,而非离散数学,所以很多计算机科学家很少接触它。掌握好线性代数对于理解和从事机器学习算法相关工作是很有必要的,尤其对于深度学习算法而言。
量的表示
学习线性代数,会涉及以下几类数学概念:
- 标量:一个标量就是一个单独的数,它不同于线性代数中研究的其他大部分对象,标量通常被赋予小写的变量名称。当我们介绍标量时,会明确它们是哪种类型的数。比如,在定义实数标量时,我们可能会说“令 s ∈ R s\in R s∈R表示一条线的斜率”,在定义自然数标量时,我们可能会说“令 n ∈ N n\in N n∈N表示元素的数目”。
- 向量:一个向量是一列数,这些数是有序排列的。通过次序中的索引,我们可以确定每个单独的数。向量中的元素可以通过带脚标来表示。向量 x x x的第一个元素是 x 1 x_1 x1,第二个元素是 x 2 x_2 x2等等。我们也会注明存储在向量中的元素是什么类型的。如果每个元素都属于 R R R,并且该向量有 n n n个元素,那么该向量属于实数集 R R R的 n n n次笛卡尔乘积构成的集合,记为 R n R^n Rn。当需要明确表示向量中的元素时,我们会将元素排列成一个方括号包围的纵列。
- 矩阵:矩阵是一个二维数组,其中的每一个元素被两个索引所确定。如果一个实数矩阵高度为 m m m,宽度为 n n n,那么我们说 A ∈ R m × n A\in R^{m×n} A∈Rm×n。我们在表示矩阵中的元素时,索引用逗号间隔。
- 张量:在某些情况下,我们会讨论坐标超过两维的数组。一般地,个数组中的元素分布在若干维坐标的规则网格中,我们称之为张量。
转置
转置是矩阵的重要操作之一。矩阵的转置是以对角线为轴的镜像,这条从左上角到右下角的对角线被称为主对角线。我们将矩阵
A
A
A的转置表示为
A
T
A^T
AT,定义如下:
A
i
,
j
T
=
A
j
,
i
A^T_{i, j}=A_{j, i}
Ai,jT=Aj,i
向量可以看作只有一列的矩阵。对应地,向量的转置可以看作是只有一行的矩阵。有时,我们通过将向量元素作为行矩阵写在文本行中,然后使用转置操作将其变为标准的列向量,来定义一个向量,比如:
x
=
[
x
1
,
x
2
,
x
3
]
x=[x_1, x_2, x_3]
x=[x1,x2,x3]。
标量可以看作是只有一个元素的矩阵。因此,标量的转置等于它本身。
矩阵相加
只要矩阵的形状一样,我们可以把两个矩阵相加。两个矩阵相加是指对应位置的元素相加,比如 C = A + B C=A+B C=A+B,其中 C i , j = A i , j + B i , j C_{i, j}=A_{i, j}+B_{i, j} Ci,j=Ai,j+Bi,j。标量和矩阵相乘或是和矩阵相加时,我们只需将其与矩阵的每个元素相乘或相加,比如 D = a ∗ B + c D=a*B+c D=a∗B+c,其中 D i , j = a ∗ B i , j + c D_{i, j}=a*B_{i, j}+c Di,j=a∗Bi,j+c。
在深度学习中,我们也使用一些不那么常规的符号。我们允许矩阵和向量相加,产生另一个矩阵: C = A + b C=A+b C=A+b,其中 C i , j = A i , j + b j C_{i, j}=A_{i, j}+b_j Ci,j=Ai,j+bj。换言之,向量 b b b和矩阵 A A A的每一行相加。这个简写方法使我们无需在加法操作前定义一个将向量 b b b复制到每一行而生成的矩阵。这种隐式地复制向量b到很多位置的方式,被称为广播。