线性代数

用途

线性代数的概念对于理解机器学习背后的原理非常重要,尤其是在深度学习领域中。它可以帮助我们更好地理解算法内部到底是怎么运行的,借此,我们就能够更好的做出决策。所以,如果你真的希望了解机器学习具体算法,就不可避免需要精通这些线性代数的概念。这篇文章中,我们将向你介绍一些机器学习中涉及的关键线性代数知识。

概念

线性代数是一种连续形式的数学,被广泛应用于理工类学科中;因为它可以帮助我们对自然现象建模,然后进行高效的计算。但是,由于线性代数是一种连续而非离散的数学,因此,很多计算机科学家都不太了解它。另外,线性代数还在几乎所有的数学学科中都拥有着核心地位:例如几何学和泛函分析。

在线性代数中,我们使用 == 线性方程 == 来表示数据,并把它们写成 == 矩阵 == 或 == 向量 == 的形式。因此,基本上你都是在与矩阵和向量打交道,而不是 == 标量 ==(我们会在文章的稍后部分介绍这些概念)。如果你能够想到使用一个合适的库,比如 NumPy,你就可以通过简短的几行代码,轻松实现复杂的矩阵乘法。请注意,这篇文章忽略了那些对机器学习并不重要的线性代数概念。

标量

标量就是一个简单的数,比如 24。

向量

向量是一个有序数组,能够写成一行或者一列的形式。向量只包含一个索引,用来表示向量中的某个特定元素。比如 V_2 表示向量中的第二个元素,在上面淡黄色的图中是 -8。

矩阵

矩阵是一个有序的二维数组,有两个索引。第一个索引表示行,第二个索引表示列。例如,M_23 表示的是第二行、第三列的元素,在上面淡黄色的图中是 8。矩阵可以有多个行或者列,注意一个向量也是一个矩阵,但仅有一行或者一列。

张量

三维张量是按照一定规律排列在方格中的数组,其中一个变量数字表示轴。张量有三个索引,其中第一个索引表示行,第二个索引表示列,第三个索引表示轴。例如,V_232 指向第二行、第三列、第二轴的元素,在下图右边的张量中表示 5。
张量是上面谈到的概念中最常用的一个,因为张量是一个多维数组,同时可以是一个向量或者一个矩阵,具体取决于它的索引数量。例如,一阶张量可以表示向量(1 个索引),二阶张量可以表示矩阵(2 个索引),三阶就是张量(3 个索引),更高阶的称为高阶张量(超过 3 个索引)。

运算法则

矩阵和标量的计算

如果你在一个矩阵上加、减、乘、除一个标量,你所做的就是直接对矩阵的每个元素进行这些数学运算。下图给出了矩阵数乘的一个很好的例子。

矩阵和向量的运算

对一个矩阵乘以一个向量,可以理解为对矩阵的每一行乘以向量的每一列,运算结果会是一个向量,它的行数和矩阵的行数一样。下图展示了这是如何计算的。

为了更好地理解这个概念,我们详细讲解一下第二张图中的计算步骤。为了得到结果向量中的第一个元素 16,选择拿来和矩阵相乘的向量中的元素 1 和 5,把它们与矩阵第一行中的元素 1 和 3 相乘,像这样:11 + 35 = 16。对矩阵第二行的元素进行相同的计算:41 + 05 = 4。同样,再计算矩阵第三行的元素:21 + 15 = 7。

矩阵和向量的运算.jpeg

矩阵间的加减法

矩阵间的加减法非常简单直接。这里要求,两个矩阵需要维度相同,运算结果也会是一个相同维度的矩阵。你只需要将第一个矩阵中的每一个元素和第二个矩阵中对应位置的元素相加或者相减就可以了。

矩阵间的乘法

如果你知道如何计算矩阵和向量间的乘法,矩阵间的乘法就也简单了。注意,只有当第一个矩阵的列数和第二个矩阵的行数相等时,才能把它们两个乘起来。运算结果会是一个矩阵,行数和第一个矩阵的行数相等,列数和第二个矩阵的列数相等。计算方法如下:

你只需要将第二个矩阵分成列向量,然后分别将第一个矩阵和每个列向量相乘。然后,将运算结果拼接成一个新的矩阵(不要把它们加起来!)。

矩阵的乘法性质

矩阵乘法拥有一些性质,根据这些性质,我们可以将大量计算整合成一个矩阵乘法。在下面我们会依次讨论这些性质。为了便于理解,我们会先用标量来解释这些性质,然后再使用矩阵形式。

交换律

数乘满足交换律,但矩阵乘法并不满足。这意味着,当我们在将两个标量乘在一起的时候:7×3 和 3×7 的结果是一样的,但当我们将两个矩阵相乘起来的时候:A×B 并不等于 B×A。

结合律

数乘和矩阵乘法都满足结合律。这意味着,数乘 3×(5×3)等于(3×5)×3,同时矩阵乘法 A×(B×C)等于(A×B)×C。

分配律

数乘和矩阵乘法都满足分配律。这表示,数乘 3×(5+3)等于 3×5+3×3,而矩阵乘法 A×(B+C)等于 A×B +A×C。

单位矩阵

单位矩阵是一种特殊的矩阵,不过首先,我们需要定义什么是「单位」。数字 1 是一个「单位」,因为任何数乘以 1 都等于它自身。因此,任何矩阵乘以一个单位矩阵都应该等于它自己。例如,矩阵 A 乘以单位矩阵还等于矩阵 A。
单位矩阵的主对角线元素都是 1,其余元素都是 0,你可以根据这个性质得到一个单位矩阵。同时它也是一个「方阵」,这表示它的行数和列数是相等的。

矩阵的逆和转置

矩阵的逆和矩阵的转置是两种矩阵特有的性质。同样的,我们首先在实数上讨论这些性质,然后再使用在矩阵中。

逆运算

首先,什么是逆(倒数)? 一个数乘以它的逆(倒数)等于 1。注意,任何非零的数都有倒数。如果将矩阵和它的逆矩阵相乘,结果就应该是单位矩阵。

这是一份文科生都能看懂的线性代数简介