深度学习Goodfellow第二章线性代数笔记

目录

  • 一、数学概念
  • 二、矩阵逆的存在条件和一些分析方法
    • 1. 矩阵逆存在的条件
    • 2. 特征分解


一、数学概念

标量(scalar):一个标量就是单独的一个数。一般用斜体的小写字母表示标量,会明确数的类型。例如, s ∈ R s \in \mathbb{R} sR 表示一个实数标量。

向量(vector):一个向量是一列数。一般用粗体的小写字母表示, x ∈ R n \boldsymbol{x} \in \mathbb{R}^{n} xRn 表示该向量属于实数集 R \mathbb{R} R n n n次笛卡尔乘积构成的集合。向量里的数是有序的,例如,向量 x \boldsymbol{x} x 的第一个元素是 x 1 x_{1} x1 。当我们需要明确向量中的元素,我们可以把向量表示为
x = [ x 1 x 2 ⋮ x n ] \boldsymbol{x}=\left[\begin{array}{c} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{array}\right] x=x1x2xn
向量可以视为空间中的点,每个元素是不同坐标轴上的坐标。

矩阵(matrix):一个矩阵是一个二维数组。一般用粗体的大写字母表示, A ∈ R m × n \boldsymbol{A} \in \mathbb{R}^{m \times n} ARm×n 就表示一个高为 m m m,宽为 n n n的实数矩阵。 A m , n A_{m, n} Am,n表示矩阵中的一个元素, A i , : \boldsymbol{A}_{i,:} Ai,:表示 A \boldsymbol{A} A 的第 i i i 行(row), A : , i \boldsymbol{A}_{:,i} A:,i表示 A \boldsymbol{A} A 的第 i i i 列(column)。当我们需要明确矩阵中的元素时,我们可以把矩阵表示为
[ A 1 , 1 A 1 , 2 A 2 , 1 A 2 , 2 ] \left[\begin{array}{ll} A_{1,1} & A_{1,2} \\ A_{2,1} & A_{2,2} \end{array}\right] [A1,1A2,1A1,2A2,2]

张量(tensor):张量表示坐标超过两维的数组。一般使用不斜体的粗体大写字母表示,张量  A  \text { A }  A 中的一个元素可表示为 A i , j , k A_{i, j, k} Ai,j,k

主对角线(main diagonal):从矩阵的左上角到右下角的直线是主对角线。

转置(transpose):矩阵的转置是以主对角线为轴的镜像。我们将矩阵 A \boldsymbol{A} A 的转置表示为 ( A ⊤ ) \left(\boldsymbol{A}^{\top}\right) (A), 定义如下
( A ⊤ ) i , j = A j , i \left(\boldsymbol{A}^{\top}\right)_{i, j}=A_{j, i} (A)i,j=Aj,i

广播(broadcasting):深度学习中允许矩阵和向量相加,产生另一个矩阵: C = A + b \boldsymbol{C}=\boldsymbol{A}+\boldsymbol{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 \boldsymbol{b} b和矩阵 A \boldsymbol{A} A的每一行相加。这种隐式地复制向量的方式被称作广播。

矩阵乘法(matrix product):如果矩阵 A \boldsymbol{A} A 的形状是 m × n m \times n m×n, 矩阵 B \boldsymbol{B} B 的形状是 n × p n \times p n×p, 那么矩阵 C \boldsymbol{C} C 的形状是 m × p 。  m \times p_{\text {。 }} m×p 。矩阵乘法表示为
C = A B C=A B C=AB
具体地, 该乘法操作定义为
C i , j = ∑ k A i , k B k , j C_{i, j}=\sum_{k} A_{i, k} B_{k, j} Ci,j=kAi,kBk,j
矩阵乘积满足分配律和结合律,但不满足交换律。
矩阵乘积的转置如下
( A B ) ⊤ = B ⊤ A ⊤ (\boldsymbol{A} \boldsymbol{B})^{\top}=\boldsymbol{B}^{\top} \boldsymbol{A}^{\top} (AB)=BA

元素对应乘积(element-wise product):指使两个矩阵中对应元素相乘,记作 A ⊙ B \boldsymbol{A} \odot \boldsymbol{B} AB

点积(dot product):指使两个维度相同的向量做矩阵乘积,记作 x ⊤ y \boldsymbol{x}^{\top} \boldsymbol{y} xy。点积满足交换律。

线性方程组:线性方程组可表示为:
A x = b \boldsymbol{A} \boldsymbol{x}=\boldsymbol{b} Ax=b
其中 A ∈ R m × n \boldsymbol{A} \in \mathbb{R}^{m \times n} ARm×n 是一个已知矩阵, b ∈ R m \boldsymbol{b} \in \mathbb{R}^{m} bRm 是一个已知向量, x ∈ R n \boldsymbol{x} \in \mathbb{R}^{n} xRn 是一个我们要
求解的末知向量。向量 x x x 的每一个元素 x i x_{i} xi 都是末知的。矩阵 A \boldsymbol{A} A 的每一行和 b \boldsymbol{b} b 中对 应的元素构成一个约束。
该线性方程组还可表示为:
A 1 , : x = b 1 A 2 , : x = b 2 … A m , : x = b m \begin{gathered} \boldsymbol{A}_{1,:} \boldsymbol{x}=b_{1} \\ \boldsymbol{A}_{2,:} \boldsymbol{x}=b_{2} \\ \ldots \\ \boldsymbol{A}_{m,:} \boldsymbol{x}=b_{m} \end{gathered} A1,:x=b1A2,:x=b2Am,:x=bm
或更明确的表示为:
A 1 , 1 x 1 + A 1 , 2 x 2 + ⋯ A 1 , n x n = b 1 A 2 , 1 x 1 + A 2 , 2 x 2 + ⋯ A 2 , n x n = b 2 … A m , 1 x 1 + A m , 2 x 2 + ⋯ A m , n x n = b m . \begin{gathered} \boldsymbol{A}_{1,1} x_{1}+\boldsymbol{A}_{1,2} x_{2}+\cdots \boldsymbol{A}_{1, n} x_{n}=b_{1} \\ \boldsymbol{A}_{2,1} x_{1}+\boldsymbol{A}_{2,2} x_{2}+\cdots \boldsymbol{A}_{2, n} x_{n}=b_{2} \\ \ldots \\ \boldsymbol{A}_{m, 1} x_{1}+\boldsymbol{A}_{m, 2} x_{2}+\cdots \boldsymbol{A}_{m, n} x_{n}=b_{m} . \end{gathered} A1,1x1+A1,2x2+A1,nxn=b1A2,1x1+A2,2x2+A2,nxn=b2Am,1x1+Am,2x2+Am,nxn=bm.

单位矩阵(identity matrix):单位矩阵是个正方形,沿主对角线的元素都是1,其他位置的元素都是0。如下图:
[ 1 0 0 0 1 0 0 0 1 ] \left[\begin{array}{lll} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array}\right] 100010001
任意向量和单位矩阵相乘,都不会改变。我们将保持 n n n 维向量不变的单位矩阵记作 I n ∘ \boldsymbol{I}_{n \circ} In 形式上, I n ∈ R n × n \boldsymbol{I}_{n} \in \mathbb{R}^{n \times n} InRn×n,
∀ x ∈ R n , I n x = x . \forall \boldsymbol{x} \in \mathbb{R}^{n}, \boldsymbol{I}_{n} \boldsymbol{x}=\boldsymbol{x} . xRn,Inx=x.

矩阵逆(matrix inversion):矩阵 A A A 的 矩阵逆记作 A − 1 A^{-1} A1, 其定义的矩阵满足如下条件
A − 1 A = I n .  \boldsymbol{A}^{-1} \boldsymbol{A}=\boldsymbol{I}_{n} \text {. } A1A=In
现在我们可以通过以下步骤求解线性方程组 :
A x = b A − 1 A x = A − 1 b I n x = A − 1 b x = A − 1 b . \begin{gathered} \boldsymbol{A} \boldsymbol{x}=\boldsymbol{b} \\ \boldsymbol{A}^{-1} \boldsymbol{A} \boldsymbol{x}=\boldsymbol{A}^{-1} \boldsymbol{b} \\ \boldsymbol{I}_{n} \boldsymbol{x}=\boldsymbol{A}^{-1} \boldsymbol{b} \\ \boldsymbol{x}=\boldsymbol{A}^{-1} \boldsymbol{b} . \end{gathered} Ax=bA1Ax=A1bInx=A1bx=A1b.
当然, 这取决于我们能否找到一个逆矩阵 A − 1 \boldsymbol{A}^{-1} A1 。逆矩阵的存在是有条件的。

范数(norm):范数是可以衡量一个向量的大小的函数。 L p L^{p} Lp 范数定义如下
∥ x ∥ p = ( ∑ i ∣ x i ∣ p ) 1 p \|\boldsymbol{x}\|_{p}=\left(\sum_{i}\left|x_{i}\right|^{p}\right)^{\frac{1}{p}} xp=(ixip)p1
其中 p ∈ R , p ≥ 1 p \in \mathbb{R}, p \geq 1 pR,p1
p = 2 p=2 p=2 时, L 2 L^{2} L2 范数被称为 欧几里得范数(Euclidean norm)。
p = 1 p=1 p=1 时, L 1 L^{1} L1 范数可简化为
∥ x ∥ 1 = ∑ i ∣ x i ∣ \|x\|_{1}=\sum_{i}\left|x_{i}\right| x1=ixi
L 1 L^{1} L1 范数相比 L 2 L^{2} L2 范数能更好的区分零和非零元素。
L ∞ L^{\infty} L范数被称为 最大范数(max norm)。
∥ x ∥ ∞ = max ⁡ i ∣ x i ∣ \|\boldsymbol{x}\|_{\infty}=\max _{i}\left|x_{i}\right| x=imaxxi
衡量矩阵的大小可用用 Frobenius 范数 ( Frobenius norm ),
∥ A ∥ F = ∑ i , j A i , j 2 \|\boldsymbol{A}\|_{F}=\sqrt{\sum_{i, j} A_{i, j}^{2}} AF=i,jAi,j2
两个向量的点积可以用范数来表示。具体地,
x ⊤ y = ∥ x ∥ 2 ∥ y ∥ 2 cos ⁡ θ \boldsymbol{x}^{\top} \boldsymbol{y}=\|\boldsymbol{x}\|_{2}\|\boldsymbol{y}\|_{2} \cos \theta xy=x2y2cosθ
其中 θ \theta θ 表示 x x x y y y 之间的夹角。

对角矩阵(diagonal matrix):只在主对角线上含有非零元素,其他位置都是零。形式上, 矩阵 D \boldsymbol{D} D 是对角矩阵, 当且仅当对于所有的 i ≠ j , D i , j = 0 i \neq j, D_{i, j}=0 i=j,Di,j=0 。我们用 diag ⁡ ( v ) \operatorname{diag}(\boldsymbol{v}) diag(v) 表示一个对角元素 由向量 v v v 中元素给定的对角方阵。
对角矩阵的乘法很高效。计算乘法 diag ⁡ ( v ) x \operatorname{diag}(\boldsymbol{v}) \boldsymbol{x} diag(v)x, 我们只需要将 x \boldsymbol{x} x 中的每个元素 x i x_{i} xi 放大 v i v_{i} vi 倍。换言之, diag ⁡ ( v ) x = v ⊙ x ∘ \operatorname{diag}(\boldsymbol{v}) \boldsymbol{x}=\boldsymbol{v} \odot \boldsymbol{x}_{\circ} diag(v)x=vx
计算对角方阵的逆矩阵也很高效。对角方阵的逆矩阵存在, 当且仅当对角元素都是非零值, 在这种情况下, diag ⁡ ( v ) − 1 = diag ⁡ ( [ 1 / v 1 , … , 1 / v n ] ⊤ ) \operatorname{diag}(\boldsymbol{v})^{-1}=\operatorname{diag}\left(\left[1 / v_{1}, \ldots, 1 / v_{n}\right]^{\top}\right) diag(v)1=diag([1/v1,,1/vn])

对称矩阵(symmetric matrix):转置和自己相等的矩阵。

单位向量(unit vector):具有单位范数(unit norm)的向量。

正交(orthogonal):如果 x ⊤ y = 0 \boldsymbol{x}^{\top} \boldsymbol{y}=0 xy=0, 那么向量 x \boldsymbol{x} x 和向量 y \boldsymbol{y} y 互相正交 。如果两个向量都有非零范数,那么这两个向量之间的夹角为90度。
R n \mathbb{R}^{n} Rn 中, 至多有 n n n 个范数非零范数互相正交。也就是说,在二维空间中,最多就两个向量互相垂直,不会有三个向量互相垂直。

标准正交:如果向量之间不仅互相正交, 并且范数都为 1 , 那么我们称它们是标准正交。

正交矩阵(orthogonal matrix):指行向量和列向量是分别标准正交的方阵:
A ⊤ A = A A ⊤ = I \boldsymbol{A}^{\top} \boldsymbol{A}=\boldsymbol{A} \boldsymbol{A}^{\top}=\boldsymbol{I} AA=AA=I
这意味着
A − 1 = A ⊤ \boldsymbol{A}^{-1}=\boldsymbol{A}^{\top} A1=A
上式是由矩阵逆的定义得到的。
正交矩阵得到关注是因为求逆的计算代价很小。

迹运算:迹运算返回矩阵对角元素的和
Tr ⁡ ( A ) = ∑ i A i , i \operatorname{Tr}(\boldsymbol{A})=\sum_{i} \boldsymbol{A}_{i, i} Tr(A)=iAi,i
迹运算可以清除的表示一些矩阵运算。例如, 迹运算提供了另一种描述矩阵Frobenius范数的方式:
∥ A ∥ F = Tr ⁡ ( A A ⊤ ) . \|A\|_{F}=\sqrt{\operatorname{Tr}\left(\boldsymbol{A A}^{\top}\right)} . AF=Tr(AA) .
迹运算在转置运算下不变:
Tr ⁡ ( A ) = Tr ⁡ ( A ⊤ ) \operatorname{Tr}(\boldsymbol{A})=\operatorname{Tr}\left(\boldsymbol{A}^{\top}\right) Tr(A)=Tr(A)
多个矩阵相乘得到的方阵的迹,和将这些矩阵中的最后一个挪到最前面之后相 乘的迹是相同的。当然,我们需要考虑挪动之后矩阵乘积依然定义良好:
Tr ⁡ ( A B C ) = Tr ⁡ ( C A B ) = Tr ⁡ ( B C A ) \operatorname{Tr}(\boldsymbol{A} \boldsymbol{B C})=\operatorname{Tr}(\boldsymbol{C A} \boldsymbol{B})=\operatorname{Tr}(\boldsymbol{B} \boldsymbol{C A}) Tr(ABC)=Tr(CAB)=Tr(BCA)
即使循环置换后矩阵乘积得到的矩阵形状变了,迹运算的结果依然不变。例如,假 设矩阵 A ∈ R m × n \boldsymbol{A} \in \mathbb{R}^{m \times n} ARm×n ,矩阵 B ∈ R n × m \boldsymbol{B} \in \mathbb{R}^{n \times m} BRn×m ,我们可以得到
Tr ⁡ ( A B ) = Tr ⁡ ( B A ) \operatorname{Tr}(\boldsymbol{A B})=\operatorname{Tr}(\boldsymbol{B A}) Tr(AB)=Tr(BA)
尽管 A B ∈ R m × m \boldsymbol{A} \boldsymbol{B} \in \mathbb{R}^{m \times m} ABRm×m B A ∈ R n × n \boldsymbol{B A} \in \mathbb{R}^{n \times n} BARn×n
另一个有用的事实是标量在迹运算后仍然是它自己: a = Tr ⁡ ( a ) a=\operatorname{Tr}(a) a=Tr(a)

二、矩阵逆的存在条件和一些分析方法

1. 矩阵逆存在的条件

如果逆矩阵 A − 1 \boldsymbol{A}^{-1} A1存在,那么 A x = b \boldsymbol{A} \boldsymbol{x}=\boldsymbol{b} Ax=b肯定对于每一个向量 b \boldsymbol{b} b恰好存在一个解。
这里可以这样理解,因为 A − 1 \boldsymbol{A}^{-1} A1存在,所以 A x = b \boldsymbol{A} \boldsymbol{x}=\boldsymbol{b} Ax=b必定可以写成 A − 1 A x = A − 1 b \boldsymbol{A}^{-1}\boldsymbol{A} \boldsymbol{x}=\boldsymbol{A}^{-1}\boldsymbol{b} A1Ax=A1b,即 x = A − 1 b \boldsymbol{x}=\boldsymbol{A}^{-1}\boldsymbol{b} x=A1b,那么无论 b \boldsymbol{b} b取什么值,必定有个唯一的 x \boldsymbol{x} x与之对应。
但是实际上,对于 b \boldsymbol{b} b的某些值,有可能无解,也有可能有无数多个解,多于一个解少于无数个解的情况不存在。
因为方程恰好存在一个解,矩阵逆才有可能存在,所以接下来我们需要分析方程有多少个解。我们可以将 A \boldsymbol{A} A的列向量看作从原点出发的不同方向,确定有多少种方法可以到达向量 b \boldsymbol{b} b,向量 x \boldsymbol{x} x中每个元素表示沿着这个列向量走多远:
A x = ∑ i x i A : , i \boldsymbol{A} \boldsymbol{x}=\sum_{i} \boldsymbol{x}_{i}\boldsymbol{A}_{:,i} Ax=ixiA:,i
这里是说, A \boldsymbol{A} A中的每个列向量乘的都是相同的 x i x_{i} xi,所以可以理解为每个列向量缩放再向量相加,能不能和向量 b \boldsymbol{b} b重合。
这种操作叫线性组合(linear combination)。一组向量的线性组合是指每个向量乘以对应标量系数之后的和,即:
∑ i c i v ( i ) \sum_{i}c_{i}\boldsymbol{v}^{(i)} iciv(i)

一组向量的生成子空间(span)是原始向量线性组合后所能抵达的点的集合,即 b \boldsymbol{b} b的取值。
确定 A x = b \boldsymbol{A} \boldsymbol{x}=\boldsymbol{b} Ax=b是否有解相当于确定向量 b \boldsymbol{b} b是否再 A \boldsymbol{A} A列向量的生成子空间中。 A \boldsymbol{A} A列向量的生成子空间被称为 A \boldsymbol{A} A列空间(column space)
为了使 A x = b \boldsymbol{A} \boldsymbol{x}=\boldsymbol{b} Ax=b对于任意向量 b ∈ R m \boldsymbol{b} \in \mathbb{R}^{m} bRm都有解,那么 A \boldsymbol{A} A的列向量要构成整个 R m \mathbb{R}^{m} Rm,也就是说 A \boldsymbol{A} A至少有 m m m列,即 n ⩾ m n \geqslant m nm,这是方程对每一点有解的必要条件。我们还需要 A \boldsymbol{A} A的列向量是线性无关(linearly independent)的,即一组向量中的任意一个向量都不能表示成其他向量的线性组合,如若可以,则是线性相关(linearly dependence)的。也就是说 A \boldsymbol{A} A的列向量至少包含 m m m个线性无关的向量。若要保证方程只有一个解,那么 A \boldsymbol{A} A最多只能有 m m m个列向量。
因此,矩阵逆存在,意味着整个矩阵是个方阵(square),即 m = n m=n m=n,而且列向量是线性无关的。
列向量线性相关的方阵被称为奇异的(singular)方阵。奇异方阵的方程或者不是方阵的方程仍可能有解,但无法用矩阵逆去解。
方阵的左逆和右逆相等,因为他的行和列数目是一样的。

2. 特征分解

我们可以分解矩阵来发现矩阵表示成数组元素时不明显的函数性质。
特征分解(eigendecomposition)是将矩阵分解成一组特征向量和特征值。

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