线性代数之基本概念与矩阵乘法

文章目录

      • 前言
        • 一、基础概念和符号
          • 1.1 基本符号
      • 二、矩阵乘法
          • 2.1 向量-向量乘法
          • 2.2 矩阵-向量乘法
          • 2.3 矩阵-矩阵乘法
          • 2.4 矩阵的初等变换

前言

线性代数相关的学习笔记,仅供自己备忘及网友学习交流使用。

一、基础概念和符号

线性代数提供了一种紧凑地表示和操作线性方程组的方法。例如,以下方程组:
6 x 1 + 8 x 2 = 77 6 x_1 + 8 x_2 = 77 6x1+8x2=77
3 x 1 − 9 x 2 = 19 3 x_1 - 9 x_2 = 19 3x19x2=19
这是两个方程和两个变量,正如你从高中代数中所知,你可以找到 x 1 x_1 x1 x 2 x_2 x2 的唯一解(除非方程以某种方式退化,例如,如果第二个方程只是第一个的倍数,但在上面的情况下,实际上只有一个唯一解)。在矩阵表示法中,我们可以更紧凑地表达:
A x = b Ax = b Ax=b
w i t h A = [ 6 8 3 − 9 ] , b = [ 77 19 ] with \quad A = \begin{bmatrix} 6 & 8\\ 3 & -9 \end{bmatrix}, b = \begin{bmatrix} 77\\ 19 \end{bmatrix} withA=[6389],b=[7719]

我们可以看到,这种形式的线性方程有许多优点(比如明显地节省空间)。

1.1 基本符号

我们使用以下符号:

  • A ∈ R m × n A \in \mathbb{R}^{m \times n} ARm×n ,表示 A A A 为由实数组成具有 m m m 行和 n n n 列的矩阵。
  • x ∈ R n x \in \mathbb{R}^n xRn ,表示 x x x 是具有 n n n 个元素的向量。 通常,向量 x x x 将表示列向量: ( x 1 , x 2 , . . . , x n ) T (x_1, x_2, ..., x_n)^T (x1,x2,...,xn)T ,即 x x x 是具有 n n n 行和 1 1 1 列的矩阵。 如果我们想要明确地表示行向量:具有 1 1 1 行和 n n n 列的矩阵 - 我们通常写成 x T x^T xT(这里 x T x^T xT 表示为 x x x 的转置)。
  • x i x_i xi 表示向量 x x x 的第 i i i 个元素:
    x = [ x 1 x 2 ⋮ x n ] x = \begin{bmatrix} x_1\\ x_2\\ \vdots \\ x_n \end{bmatrix} x=x1x2xn
  • 我们使用符号 a i j a_{ij} aij(或 A i j A_{ij} Aij , A i , j A_{i,j} Ai,j 等)来表示 A A A 矩阵中第 i i i 行和第 j j j 列的元素:
    A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} A=a11a21am1a12a22am2a1na2namn
  • 我们用 a j a^j aj 或者 A : , j A_{:,j} A:,j 表示矩阵 A A A 的第 j j j 列:
    A = [ ∣ ∣ ∣ a 1 a 2 ⋯ a n ∣ ∣ ∣ ] A = \begin{bmatrix} | & | & & | \\ a^1 & a^2 & \cdots & a^n \\ | & | & & | \end{bmatrix} A=a1a2an
  • 我们用 a i T a_i^T aiT 或者 A i , : A_{i,:} Ai,: 表示矩阵的第 i i i 行:
    A = [ − a 1 T − − a 2 T − ⋮ − a m T − ] A = \begin{bmatrix} -& a_1^T & - \\ -& a_2^T & - \\ & \vdots & \\ -& a_m^T & - \end{bmatrix} A=a1Ta2TamT
  • 在许多情况下,将矩阵视为列向量或行向量的集合非常重要且方便。 通常,在向量而不是标量上操作在数学上(和概念上)更清晰。只要明确定义了符号,用于矩阵的列或行的表示方式并没有通用约定。

二、矩阵乘法

两个矩阵相乘,其中 A ∈ R m × n a n d B ∈ R n × p A \in \mathbb{R}^{m \times n} \quad and \quad B \in \mathbb{R}^{n \times p} ARm×nandBRn×p ,则:
C = A B ∈ R m × p C = AB \quad \in \quad \mathbb{R}^{m \times p} C=ABRm×p
其中:
C i j = ∑ k = 1 n A i k B k j C_{ij} = \sum_{k=1}^n A_{ik}B_{kj} Cij=k=1nAikBkj
请注意,为了使矩阵乘积存在, A A A 中的列数必须等于 B B B 中的行数。有很多方法可以查看矩阵乘法,我们将从检查一些特殊情况开始。

2.1 向量-向量乘法

给定两个向量 x , y ∈ R n x, y \in \mathbb{R}^n x,yRn x T y x^Ty xTy 通常称为向量内积或者点积,结果是个实数
x T y ∈ R n = [ x 1 x 2 ⋯ x n ] [ y 1 y 2 ⋮ y n ] = ∑ i = 1 n x i y i x^Ty \in \mathbb{R}^n = \begin{bmatrix} x_1 & x_2 & \cdots & x_n \end{bmatrix} \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} = \sum_{i=1}^n x_iy_i xTyRn=[x1x2xn]y1y2yn=i=1nxiyi
注意: x T y = y T x x^Ty = y^Tx xTy=yTx 始终成立。

给定向量 x ∈ R m x \in \mathbb{R}^m xRm y ∈ R n y \in \mathbb{R}^n yRn (他们的维度是否相同都没关系), x y T ∈ R m × n xy^T \in \mathbb{R}^{m \times n} xyTRm×n 叫做向量外积 , 当 ( x y T ) i j = x i y j (xy^T)_{ij} = x_i y_j (xyT)ij=xiyj 的时候,它是一个矩阵
x y T ∈ R m × n = [ x 1 x 2 ⋮ x m ] [ y 1 y 2 ⋯ y n ] = [ x 1 y 1 x 1 y 2 ⋯ x 1 y n x 2 y 1 x 2 y 2 ⋯ x 2 y n ⋮ ⋮ ⋱ ⋮ x m y 1 x m y 2 ⋯ x m y n ] xy^T \in \mathbb{R}^{m \times n} = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_m \end{bmatrix} \begin{bmatrix} y_1 & y_2 & \cdots y_n \end{bmatrix} = \begin{bmatrix} x_1 y_1 & x_1 y_2 & \cdots & x_1 y_n \\ x_2 y_1 & x_2 y_2 & \cdots & x_2 y_n \\ \vdots & \vdots & \ddots & \vdots \\ x_m y_1 & x_m y_2 & \cdots & x_m y_n \end{bmatrix} xyTRm×n=x1x2xm[y1y2yn]=x1y1x2y1xmy1x1y2x2y2xmy2x1ynx2ynxmyn

举一个外积如何使用的一个例子:让 1 ∈ R n 1 \in \mathbb{R}^n 1Rn 表示一个 n n n 维向量,其元素都等于 1 ,此外,考虑矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} ARm×n ,其列全部等于某个向量 x ∈ R m x \in \mathbb{R}^m xRm 。我们可以使用外积紧凑地表示矩阵 A A A
A = [ ∣ ∣ ∣ x x ⋯ x ∣ ∣ ∣ ] = [ x 1 x 1 ⋯ x 1 x 2 x 2 ⋯ x 2 ⋮ ⋮ ⋱ ⋮ x m x m ⋯ x m ] = [ x 1 x 2 ⋮ x m ] [ 1 1 ⋯ 1 ] = x 1 T A = \begin{bmatrix} | & | & & | \\ x & x & \cdots & x \\ | & | & & | \end{bmatrix} = \begin{bmatrix} x_1 & x_1 & \cdots & x_1 \\ x_2 & x_2 & \cdots & x_2 \\ \vdots & \vdots & \ddots & \vdots \\ x_m & x_m & \cdots & x_m \end{bmatrix} = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_m \end{bmatrix} \begin{bmatrix} 1 & 1 & \cdots 1 \end{bmatrix} = x \mathbf{1}^T A=xxx=x1x2xmx1x2xmx1x2xm=x1x2xm[111]=x1T

2.2 矩阵-向量乘法

给定矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} ARm×n ,向量 x ∈ R n x \in \mathbb{R}^n xRn , 它们的积是一个向量 y = A x ∈ R m y = Ax \in \mathbb{R}^m y=AxRm 。有几种方法可以查看矩阵向量乘法,我们将依次查看它们中的每一种。

如果我们按行写 A A A ,那么我们可以表示 A x Ax Ax 为:
y = A x = [ − a 1 T − − a 2 T − ⋮ − a m T − ] x = [ a 1 T x a 2 T x ⋮ a m T x ] y = Ax = \begin{bmatrix} -& a_1^T & - \\ -& a_2^T & - \\ & \vdots & \\ -& a_m^T & - \end{bmatrix} x = \begin{bmatrix} a_1^T x \\ a_2^T x \\ \vdots \\ a_m^T x \end{bmatrix} y=Ax=a1Ta2TamTx=a1Txa2TxamTx

换句话说, y y y 中的第 i i i 个元素是 A A A 的第 i i i 行和 x x x 的内积,即: y i = A i , : x = a i T x y_i = A_{i,:} x = a_{i}^T x yi=Ai,:x=aiTx

同样的, 可以把 A A A 写成列的方式,则公式如下:
y = A x = [ ∣ ∣ ∣ a 1 a 2 ⋯ a n ∣ ∣ ∣ ] [ x 1 x 2 ⋮ x n ] = a 1 x 1 + a 2 x 2 + . . . + a n x n y = Ax = \begin{bmatrix} | & | & & | \\ a^1 & a^2 & \cdots & a^n \\ | & | & & | \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix} = a^1 x_1 + a^2 x_2 + ... + a^n x_n y=Ax=a1a2anx1x2xn=a1x1+a2x2+...+anxn

换句话说, y y y A A A 的列的线性组合,其中线性组合的系数由 x x x 的元素给出。

到目前为止,我们一直在右侧乘以列向量,但也可以在左侧乘以行向量。用 y T = x T A y^T = x^T A yT=xTA 表示 A ∈ R m × n x ∈ R m y ∈ R n A \in \mathbb{R}^{m \times n} \quad x \in \mathbb{R}^m \quad y \in \mathbb{R}^n ARm×nxRmyRn 。和之前一样,我们可以用两种可行的方式表达 y T y^T yT ,这取决于我们是否根据行或列表达 A A A

第一种情况,我们把 A A A 用列表示:
y T = x T A = x T [ ∣ ∣ ∣ a 1 a 2 ⋯ a n ∣ ∣ ∣ ] = [ x T a 1 x T a 2 ⋯ x T a n ] y^T = x^T A = x^T \begin{bmatrix} | & | & & | \\ a^1 & a^2 & \cdots & a^n \\ | & | & & | \end{bmatrix} = \begin{bmatrix} x^T a^1 & x^T a^2 & \cdots & x^T a^n \end{bmatrix} yT=xTA=xTa1a2an=[xTa1xTa2xTan]

这表明 y T y^T yT 的第个 i i i 元素等于 x x x A A A 的第 i i i 列的内积。

最后,根据行表示 A A A ,我们得到了向量-矩阵乘积的最终表示:
y T = x T A = [ x 1 x 2 ⋯ x n ] [ − a 1 T − − a 2 T − ⋮ − a m T − ] = x 1 a 1 T + x 2 a 2 T + . . . + x n a n T y^T = x^T A = \begin{bmatrix} x_1 & x_2 & \cdots & x_n \end{bmatrix} \begin{bmatrix} -& a_1^T & - \\ -& a_2^T & - \\ & \vdots & \\ -& a_m^T & - \end{bmatrix} = x_1 a_1^T + x_2 a_2^T + ... + x_n a_n^T yT=xTA=[x1x2xn]a1Ta2TamT=x1a1T+x2a2T+...+xnanT

所以我们看到 y T y^T yT A A A 的行的线性组合,其中线性组合的系数由 x x x 的元素给出。

2.3 矩阵-矩阵乘法

有了这些前置知识,我们现在可以看看四种不同的(形式不同,但结果是相同的)矩阵-矩阵乘法:也就是本节开头所定义的 C = A B C = AB C=AB 的乘法。

首先,我们可以将矩阵 - 矩阵乘法视为一组向量-向量乘积。从定义中可以得出:最明显的特点是 C C C ( i , j ) (i, j) (i,j) 元素等于 A A A 的第 i i i 行和 B B B 的第 j j j 列的内积。如下面的公式所示:
C = A B = [ − a 1 T − − a 2 T − ⋮ − a m T − ] [ ∣ ∣ ∣ b 1 b 2 ⋯ b n ∣ ∣ ∣ ] = [ a 1 T b 1 a 1 T b 2 ⋯ a 1 T b n a 2 T b 1 a 2 T b 2 ⋯ a 2 T b n ⋮ ⋮ ⋱ ⋮ a m T b 1 a m T b 2 ⋯ a m T b n ] C = AB = \begin{bmatrix} -& a_1^T & - \\ -& a_2^T & - \\ & \vdots & \\ -& a_m^T & - \end{bmatrix} \begin{bmatrix} | & | & & | \\ b^1 & b^2 & \cdots & b^n \\ | & | & & | \end{bmatrix} = \begin{bmatrix} a_1^T b^1 & a_1^T b^2 & \cdots & a_1^T b^n \\ a_2^T b^1 & a_2^T b^2 & \cdots & a_2^T b^n \\ \vdots & \vdots & \ddots & \vdots \\ a_m^T b^1 & a_m^T b^2 & \cdots & a_m^T b^n \end{bmatrix} C=AB=a1Ta2TamTb1b2bn=a1Tb1a2Tb1amTb1a1Tb2a2Tb2amTb2a1Tbna2TbnamTbn

这里 A ∈ R m × k B ∈ R k × n a i ∈ R k b j ∈ R k A \in \mathbb{R}^{m \times k} \quad B \in \mathbb{R}^{k \times n} \quad a_i \in \mathbb{R}^k \quad b^j \in \mathbb{R}^k ARm×kBRk×naiRkbjRk ,所以它们可以计算内积。我们用通常用行表示 A A A 而用列表示 B B B 。或者,我们可以用列表示 A A A ,用行表示 B B B ,这时 A B AB AB 是求外积的和。公式如下:
C = A B = [ ∣ ∣ ∣ a 1 a 2 ⋯ a n ∣ ∣ ∣ ] [ − b 1 T − − b 2 T − ⋮ − b m T − ] = ∑ i = 1 n a i b i T C = AB = \begin{bmatrix} | & | & & | \\ a^1 & a^2 & \cdots & a^n \\ | & | & & | \end{bmatrix} \begin{bmatrix} -& b_1^T & - \\ -& b_2^T & - \\ & \vdots & \\ -& b_m^T & - \end{bmatrix} = \sum_{i = 1}^{n} a^{i}b_{i}^T C=AB=a1a2anb1Tb2TbmT=i=1naibiT

换句话说, A B AB AB 等于所有的 A A A 的第 i i i 列和 B B B 的第 i i i 行的外积的和。因此,在这种情况下, a i ∈ R m a_i \in \mathbb{R}^m aiRm b j ∈ R n b^j \in \mathbb{R}^n bjRn , 外积 a i b i T a^{i}b_{i}^T aibiT 的维度是 m × n m \times n m×n ,与 C C C 的维度一致。

其次,我们还可以将矩阵 - 矩阵乘法视为一组矩阵向量积。如果我们把 B B B 用列表示,我们可以将 C C C 的列视为 A A A B B B 的列的矩阵向量积。公式如下:
C = A B = A [ ∣ ∣ ∣ b 1 b 2 ⋯ b n ∣ ∣ ∣ ] = [ ∣ ∣ ∣ A b 1 A b 2 ⋯ A b n ∣ ∣ ∣ ] C = AB = A \begin{bmatrix} | & | & & | \\ b^1 & b^2 & \cdots & b^n \\ | & | & & | \end{bmatrix} = \begin{bmatrix} | & | & & | \\ Ab^1 & Ab^2 & \cdots & Ab^n \\ | & | & & | \end{bmatrix} C=AB=Ab1b2bn=Ab1Ab2Abn
这里 C C C 的第 i i i 列由矩阵向量乘积给出,右边的向量为 c i = A b i c_i = Ab^i ci=Abi 。 这些矩阵向量乘积可以使用前一小节中给出的两个观点来解释。 最后,我们有类似的观点,我们用行表示 A A A C C C 的行作为 A A A B B B 的行之间的矩阵向量积。公式如下:
C = A B = [ − a 1 T − − a 2 T − ⋮ − a m T − ] B = [ − a 1 T B − − a 2 T B − ⋮ − a m T B − ] C = AB = \begin{bmatrix} -& a_1^T & - \\ -& a_2^T & - \\ & \vdots & \\ -& a_m^T & - \end{bmatrix} B = \begin{bmatrix} -& a_1^TB & - \\ -& a_2^TB & - \\ & \vdots & \\ -& a_m^TB & - \end{bmatrix} C=AB=a1Ta2TamTB=a1TBa2TBamTB

这里 C C C 的第 i i i 行由左边的向量与右边的矩阵的乘积给出: c i T = a i T B c_{i}^T = a_i^TB ciT=aiTB
将矩阵乘法剖析到如此大的程度似乎有点过分,特别是当所有这些观点都紧跟在我们在本节开头给出的初始定义(在一行数学中)之后。

这些不同方法的直接优势在于它们允许您在向量的级别/单位而不是标量上进行操作。 为了完全理解线性代数而不会迷失在复杂的索引操作中,关键是要用尽可能多的概念进行操作。

实际上所有的线性代数都是在处理某种矩阵乘法,花一些时间对这里提出的观点进行直观的理解是非常必要的。

除此之外,了解一些更高级别的矩阵乘法的基本属性是很有必要的:

  • 矩阵乘法结合律: ( A B ) C = A ( B C ) (AB)C = A(BC) (AB)C=A(BC)
  • 矩阵乘法分配律: A ( B + C ) = A B + A C A(B + C) = AB + AC A(B+C)=AB+AC
  • 矩阵乘法通常是不满足交换律的;也就是说,通常 A B ≠ B A AB \neq BA AB=BA 。(例如,假设 A ∈ R m × k A \in \mathbb{R}^{m \times k} ARm×k B ∈ R k × n B \in \mathbb{R}^{k \times n} BRk×n ,如果 m m m n n n 不相等,矩阵 B A BA BA 的乘积甚至不存在!)

如果您不熟悉这些属性,请花点时间自己验证它们。 例如,为了检查矩阵乘法的相关性,假设 A ∈ R m × k A \in \mathbb{R}^{m \times k} ARm×k B ∈ R k × n B \in \mathbb{R}^{k \times n} BRk×n C ∈ R n × p C \in \mathbb{R}^{n \times p} CRn×p 。注意 A B ∈ R m × n AB \in \mathbb{R}^{m \times n} ABRm×n ,所以 ( A B ) C ∈ R m × p (AB)C \in \mathbb{R}^{m \times p} (AB)CRm×p 。类似地, B C ∈ R k × p BC \in \mathbb{R}^{k \times p} BCRk×p ,所以 A ( B C ) ∈ R m × p A(BC) \in \mathbb{R}^{m \times p} A(BC)Rm×p 。因此,所得矩阵的维度一致。 为了表明矩阵乘法是相关的,足以检查 ( A B ) C (AB)C (AB)C 的第 ( i , j ) (i, j) (i,j) 个元素是否等于 A ( B C ) A(BC) A(BC) 的第 ( i , j ) (i, j) (i,j) 个元素。 我们可以使用矩阵乘法的定义直接验证这一点:
( ( A B ) C ) i j = ∑ k = 1 p ( A B ) i k C k j = ∑ k = 1 p ( ∑ l = 1 n A i l B l k ) C k j \bigl((AB)C\bigr)_{ij} = \sum_{k=1}^p (AB)_{ik}C_{kj} = \sum_{k = 1}^p \biggl(\sum_{l = 1}^n A_{il}B_{lk}\biggr)C_{kj} ((AB)C)ij=k=1p(AB)ikCkj=k=1p(l=1nAilBlk)Ckj
= ∑ k = 1 p ( ∑ l = 1 n A i l B l k C k j ) = ∑ l = 1 n ( ∑ k = 1 p A i l B l k C k j ) = \sum_{k = 1}^p \biggl(\sum_{l = 1}^n A_{il}B_{lk}C_{kj}\biggr) = \sum_{l = 1}^n \biggl(\sum_{k=1}^p A_{il}B_{lk}C_{kj}\biggr) =k=1p(l=1nAilBlkCkj)=l=1n(k=1pAilBlkCkj)
= ∑ l = 1 n A i l ( ∑ k = 1 p B l k C k j ) = ∑ l = 1 n A i l ( B C ) l j = ( A ( B C ) ) l j = \sum_{l = 1}^n A_{il} \biggl(\sum_{k=1}^p B_{lk}C_{kj}\biggr) = \sum_{l = 1}^n A_{il} (BC)_{lj} = \bigl(A(BC)\bigr)_{lj} =l=1nAil(k=1pBlkCkj)=l=1nAil(BC)lj=(A(BC))lj

证毕。

2.4 矩阵的初等变换

实际上,我们可以通过向量与向量相加,向量与标量相乘的操作,来完成对初始向量的移动、压缩和拉伸
我们将一系列这样的操作合并,就变成了下面这种形式:
A v = w Av = w Av=w
上式我们可以理解为对向量 v v v 做了矩阵 A A A 包含的一系列操作,变成了向量 w w w

举个例子:
A = [ a b c d ] , v = [ x y ] A = \begin{bmatrix} a & b \\ c & d \end{bmatrix}, \quad v = \begin{bmatrix} x \\ y \end{bmatrix} A=[acbd],v=[xy]
w = A v = [ a b c d ] [ x y ] = x [ a c ] + y [ b d ] = [ a x + b y c x + d y ] w = Av = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = x \begin{bmatrix} a \\ c \end{bmatrix} + y \begin{bmatrix} b \\ d \end{bmatrix} = \begin{bmatrix} ax + by \\ cx + dy \end{bmatrix} w=Av=[acbd][xy]=x[ac]+y[bd]=[ax+bycx+dy]
那么矩阵的初等变换其实包含了初等行变换和初等列变换。下面以初等行变换为例,初等变换的操作包含:

① 交换矩阵的两行(对调 i , j i,j i,j ,两行分别记为 r i , r j r_i,r_j rirj );

② 以一个非零数 k k k 乘矩阵的某一行所有元素(第 i i i 行乘以 k k k 记为 r i × k r_i \times k ri×k );

③ 把矩阵的某一行所有元素乘以一个数 k k k 后加到另一行对应的元素(第 j j j 行乘以 k k k 加到第 i i i 行记为 r i + r j × k r_i + r_j \times k ri+rj×k )。

类似地,把以上的“行”改为“列”便得到矩阵初等列变换的操作。

你可能感兴趣的:(机器学习,线性代数)