线性代数在机器学习(ML)和深度学习(DL)中是必不可少的。即使我们努力为许多理论创建精确的机器学习模型,线性代数仍然是这些研究中的重要工具。本文会跳过一些基本知识,比如什么是向量,什么是矩阵,以及如何相加和相乘。我将快速更新基本概念,并更深入地介绍一些重要主题。 基本矩阵行为: 如最后一个等式所示,矩阵不可交换。转置 按照惯例,矢量x被写为列矢量。这是矢量和矩阵的转置。 属性 如果AA,则矩阵是对称的。如果AA,则称为反对称。内积 内积a,b(或AB)是一个标量函数。两个向量的内积定义为: 任何标量值的转置等于它自己。您可以在许多机器学习论文中看到以下操作。 单位向量是具有单位长度的向量。 两个向量u和v之间的角度是 向量遵循以下不等式 属性 最后一个等式很重要。下面是它的证明: 外积 不要将xy与xy混肴。内积xy产生标量,但外积xy产生矩阵。 两个矩阵的乘法是A的第i列和B的第i行之和。 例 这个矩阵乘法的观点看起来很奇怪,但是当我们研究矩阵分解时就变得非常重要。逆 矩阵A的逆矩阵定义为: 属性: 注意:仅当A和B可逆时,上述才为真。即使A是非方形矩阵也不是这样。(逆矩阵假设A是nn方阵。)为了求解线性方程组Axb,我们可以将A的逆矩阵与b相乘以求解x。 如果A不可逆,则此方法失败。我们需要一些其他方法,如高斯消元法来解它。我们在左侧引入上面的逆左逆。如果它在右侧引入,则称为右逆。 对于方形矩阵,两者都是相同的,我们只称它为逆。 然而,即使逆矩阵在文献中似乎无处不在,但在实践中我们要避免对任意矩阵求逆。在机器学习(ML)中,我们处理许多稀疏矩阵一个主要由零值元素组成的矩阵。由于空间和计算复杂性,稀疏矩阵的逆是密集的并且不太理想。此外,逆矩阵在数值上可能是不稳定的输入中的一个小的不精确或误差可能触发一个大的误差。奇异矩阵 那么什么矩阵不是可逆的呢?奇异(退化)矩阵是不具有逆的方形矩阵。下列方程计算一个33的逆矩阵。 对于存在的逆,行列式不能为0。例如,下面的矩阵是奇异矩阵。 它的行列式等于0。因此,它没有逆。 行空间和列空间 可以将向量分组以形成向量空间。R是包含所有n维实数向量的向量空间。空间可以划分为子空间以供进一步研究。例如,R是3D空间,平面是R的子空间。 根据定义,如果u和v在一个空间中,uv和cu(其中c是常数)必须在同一个空间中。这个定义也适用于子空间。这是一个非常抽象的定义。它不局限于向量。事实上,包括多项式函数在内的许多对象可以形成一个空间。例如,任意阶的多项式函数构成一个空间。两个x的多项式函数相加仍然是一个多项式。 列向量的所有线性组合的集合构成一个子空间,称为矩阵A的列空间(columnspace)或列张成(columnspan),用符号CoI(A)表示。 如果上面的所有列向量都是线性无关的,那么列空间张成整个三维空间。但是,上面的列向量是线性相关的。第三列向量是前两列的线性组合。 我们可以在表示A的列空间时删除第三列向量。因此,该矩阵的列空间仅张成平面。 Ax是A列向量的线性组合的概念非常基础。所以,花几秒钟来习惯这个概念。 这个方程也以一种更熟悉的形式给出 其中a1到an张成A的列空间。类似地,行在创建行空间时形成行向量。 如果我们用C(A)表示A的列空间,我们可以转置A和C(A)代表A的行空间。线性依赖 一个n维空间不能有超过n个线性无关的向量。在下面的左图中,绿色的向量可以用蓝色和红色的向量表示。两个向量在三维空间中形成一个平面。平面上的任何向量,像下面的黄色向量,都是红色向量的线性组合。 在数学上,一组线性无关的向量,它满足 只有当所有线性因子c都为0。简而言之,任何向量都不能表示为其他向量的线性组合。此外,A的列是线性无关的,如果Ax0的唯一的解是 要获得0以外的解,A必须是奇异的。即 否则,我们可以计算逆,v只有一个解等于0。 对于Ax0以具有非零解,A是奇异的且det(A)0。秩 秩度量a的列行之间的线性无关性,它是这些列行的维张成的空间,决定了线性系统Axb中解空间的维数。矩阵的秩等于 对于任何矩阵,列空间和行空间具有相同的维数(秩)。因此,矩阵的秩可以通过行或列来计算。下面是不同矩阵的秩。 如果一个矩阵是可逆的,它的逆是唯一的。将会有一个解xAb。然而,在方形矩阵中,如果列行是线性相关的,则矩阵是奇异的且不可逆的。矩阵A的秩(通常对于任何矩阵)可以帮助我们确定线性依赖关系以及是否有唯一解。下图展示了如何用矩阵形式表示线性方程组及其解的个数。 如果b不在A的列空间中,则解为零,即A中的列的线性组合不能达到b。 高斯消元和回代(backsubstitution) 如前所述,我们很少计算A的逆来解出Axb。一种最常见的方法是高斯消元和回代。许多人已经知道如何通过这种方法求解线性方程。所以我会快速介绍一下并介绍一些关键术语。要解 我们应用消去来为x1列中的第2行和第3行创建前导零。一旦我们消去了x1列,我们重复x2和x3的过程。 该矩阵A可以被消去为具有非零前导值的两行。这两个非零值称为pivots。 矩阵的秩等于pivots的个数。(在消去之后,我们只留下两个有意义的方程。)如果nn矩阵具有小于n个pivots,则矩阵是奇异的。最下面一行的所为零,不包括b列。 列中一个pivot对应的变量称为主元。其他的变量叫做自由变量,它可以取无穷多个值。在上面的例子中,我们有两个主元(x,x)和一个自由变量x。在消去步骤之后,与变量x相关联的矩阵形成上三角矩阵。 为了解Axb,我们执行回代。从最下面一行开始,每次解析一个变量。 如果我们将自由变量x3设置为0,那么将有一个特解 让我们用pivots解另一个例子。在行消去之后,我们使用b列中的非零值来设置这些主元,然后将所有自由变量设置为0。这就变成了x的解。 考虑Axb,其中A是mn矩阵,其中秩为r,x具有n个分量。行消去后,排除列b,矩阵将具有mr全零行。 如果任何所有零行有b0,则它没有解,我们不能在上图中得出02的结论,线性方程彼此冲突。如果秩r小于n,x张成nr维。换句话说,如果我们有r个线性无关方程来解x中的n个变量,只要方程中没有冲突x就有nr个自由度。高斯若尔当消元法(英语:GaussJordanElimination) 我们使用的方法称为GaussJordan消元。这是一个非奇异矩阵的例子。 为了找到A的逆,我们可以用nn单位矩阵I代替b。 在处理线性代数时,计算的精度是有限的,这一点尤为重要。此外,我们希望计算速度快。幸运的是,我们有库为我们处理这些工作。因此,我们将只简要介绍一下。行交换。通过一些巧妙的行交换,行消去和回代将不易受舍入误差的影响。在一行消去之前,如果系数的比例存在巨大差异,我们就用前导值最大的那一行来交换第一行。如果不重新排序,解决方案可能会有很大的偏差。 提升和保持矩阵的稀疏性可以减少运算次数(我们可以忽略0乘以任何数)。在矩阵操作中,我们希望非零值只位于矩阵的对角线上。 零空间左零空间 我们已经介绍了行空间和列空间。还有两个更重要的子空间。下面x张成的空间叫做A的零空间,记作N(A) 它包含Ax0的所有解。它至少包含x0。A的行向量乘以x(内积)等于0。 因此,行空间中的任何向量都垂直于零空间。即A的行空间与A的零空间正交。 例, 这个矩阵的秩是2。有主元的列叫做主列,有自由变量的列叫做自由列。自由列数等于列数减去秩。如下所示,相应的自由变量是x和x。 一次一个,我们把每个自由变量设为1,其他自由变量设为0。有了两个自由变量,我们可以推导出两个特解。 通解将是特解的任何线性组合,其形成零空间,秩为2。如前所示,如果A中的列是线性无关的,那么零空间只包含向量0。类似地,存在与列空间正交的左零空间N(A),即Ax0。行空间,列空间,零空间和左零空间形成矩阵A的四个基本子空间。通解 以前,我们只为Axb找到一个特解。如果A是奇异的,它可以有很多或没有。让我们现在找到一个通解。 首先,首先找到特解。 接下来,求Ax0的解。A的秩是2,因此我们可以找到2(422)个独立解。 通解是特解加上Ax0解的任何线性组合。 图形上,这是二维示例的上面的虚线。下面的等式是我们的例子的通解,其中c是常数。 正交和子空间 如果两个向量的内积x,y等于零,则它们是正交的。 如果它们是二维或三维向量,则它们可以被视觉化为彼此垂直。 如果正交向量有单位长度,它们叫做标准正交。如果来自每个子空间的任何向量总是彼此正交,则两个子空间彼此正交。在3D空间中,x轴和y轴是彼此正交的两个子空间。然而,并非所有垂直于x轴的向量都属于y轴。它可以是yz平面上的任何向量。如果垂直于一个子空间的任何向量必须属于另一个子空间,则一个子空间与另一个子空间正交。组合来自每个子空间的一个向量重建R空间。如果一个子空间正交补的维数是k,那么另一个子空间的维数一定是nk。 列空间,行空间,零空间和左零空间从mn矩阵A形成四个基本子空间。列空间:C(A)行空间:C(A)零空间:N(A)左零空间:N(A) 这些子空间的关系是:列空间和行空间具有相同的维度和秩。A的秩(r)等于列空间和行空间的秩。行空间是零空间的正交补()。列空间是左零空间的正交补()。行空间有r维,零空间有nr维。列空间有r维,左零空间有mr维。 在求解Axb的x时,如果b不在A的列空间中,它是不可解的,Axb的特解在行空间中。Ax0的解在零空间中。通解是通过在零空间中加入特解和任何解的线性组合而得到的。 机器学习与线性代数简明教程(下)