4728 words
24 minutes
CH07-Linear Algebra

7.1 Introduction#

线性代数的研究对象是矩阵和向量

7.1.1 Notation#

本章节中使用的一些符号:

7.1.1.1 Vectors#

一个向量 xRn\boldsymbol{x} \in \mathbb{R}^n 是 n 个数值的列表,通常写成列向量的形式:

x=[x1x2xn]\boldsymbol{x} = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}

全 1 向量:1\boldsymbol{1};全 0 向量:0\boldsymbol{0}

单位向量 ei\boldsymbol{e}_i 是除了位置 i 为 1 之外全为 0 的向量,也称为 one-hot vector

ei=(0,,0,1,0,,0)\boldsymbol{e}_i = (0,\dots,0,1,0,\dots,0)

7.1.1.2 Matrices#

A=[a11a12a1na21a22a2nam1am2amn]\mathrm 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}

矩阵转置的性质:

(AT)T=A(AB)T=BTAT(A+B)T=AT+BT(\mathrm A^\mathsf T)^\mathsf T = \mathrm A \\ (\mathrm {AB})^\mathsf T = \mathrm B^\mathsf T \mathrm A^\mathsf T \\ (\mathrm {A+B})^\mathsf T = \mathrm A^\mathsf T + \mathrm B^\mathsf T

如果一个方阵满足 A=AT\mathrm A = \mathrm A^\mathsf T​,称其为对称矩阵,我们记所有大小为 n 的对称矩阵为:Sn\mathbb S^n.

7.1.1.3 Tensors#

张量是机器学习术语,是 2d 数组推广到多于 2d 的情况。

image-20220104210625165

7.1.2 向量空间#

7.1.2.1 向量相加和缩放#

我们可以把一个向量 xRnx \in \mathbb{R}^n 看成 n 维欧几里得空间里的一个点。一个向量空间是一系列向量的集合,这些向量可以互相相加或乘以标量来缩放。

7.1.2.2 线性无关,张成和基向量#

如果一组向量 {x1,x2,,xn}\{x_1,x_2,\dots,x_n\} 中没有向量可以被表示成其余向量的线性组合,那么这组向量被认为线性无关。反之,如果一个向量可以被表示为其余向量的线性组合,这组向量就是线性相关的。

一组向量 {x1,x2,,xn}\{x_1,x_2,\dots,x_n\}张成 span指的是由 {x1,x2,,xn}\{x_1,x_2,\dots,x_n\} 的所有线性组合组成的集合。

span({x1,,xn}){v:v=i=1nαixi,  αiR}\mathrm {span}(\{ x_1,\dots,x_n \}) \triangleq \left \{ v:v=\sum_{i=1}^n \alpha_ix_i,\ \ \alpha_i \in \mathbb{R} \right \}

{x1,x2,,xn}\{x_1,x_2,\dots,x_n\} 是一组线性无关向量且 xiRnx_i \in \mathbb{R}^n,则 span({x1,,xn})=Rn\mathrm {span}(\{ x_1,\dots,x_n \})=\mathbb{R}^n. 换句话说,任何向量 vRnv \in \mathbb{R}^n 可以被写成 {x1,x2,,xn}\{x_1,x_2,\dots,x_n\} 的线性组合。

一个基 basis B\mathcal B 是一组张成整个空间的线性无关向量,即 span(B)=Rn\mathrm {span}(\mathcal B)=\mathbb{R}^n.

7.1.2.3 线性映射与矩阵#

一个线性映射线性变换指的是任何满足下面条件的函数 f:VWf:\mathcal V \rightarrow \mathcal W

f(v+w)=f(v)+f(w)f(v+w)=f(v)+f(w)f(a v)=af(v)f(a\ \boldsymbol v)=af(\boldsymbol v) for all v,wVv,w \in \mathcal V

假设 V=Rn, W=Rm\mathcal V = \mathbb{R}^n,\ \mathcal W = \mathbb{R}^m,我们可以按如下方式对任意 xRnx\in \mathbb{R}^n 计算 y=f(x)Rmy=f(x)\in \mathbb{R}^m :

y=(j=1na1jxj,,j=1namjxj)y = \left( \sum_{j=1}^n a_{1j}x_j,\dots,\sum_{j=1}^n a_{mj}x_j \right)

上式可以简化为用一个 m×nm\times n 的矩阵 A\mathrm A 乘以向量 xx

y=Axy = \mathrm A x

具体见 Section 7.2.

如果函数可逆:

x=A1yx = \mathrm A^{-1}y

具体见 Section 7.3.

7.1.2.4 矩阵的值域空间和零值空间#

假设我们把一个矩阵 ARm×n\mathrm A \in \mathbb{R}^{m\times n} 看成 Rn\mathbb{R}^n 空间的 m 个向量,矩阵的值域空间 range(又称 column space)为 A\mathrm A 的列向量的张成,即:

range(A){vRm:v=Ax,xRn}\mathrm {range}(\mathrm A) \triangleq \{ v\in \mathbb{R}^m:v=\mathrm Ax,x\in\mathbb{R}^n \}

range 可以理解为可以由矩阵 A\mathrm A 生成的所有向量的集合;它是 Rm\mathbb{R}^m 的子空间,维数由 A\mathrm A 的秩决定(见 Section 7.1.4.3)

零值空间 nullspace 是所有乘以矩阵 A\mathrm A 后为 0 的向量集合,即:

nullspace(A){xRn:Ax=0}\mathrm {nullspace}(\mathrm A)\triangleq \{ x\in \mathbb{R}^n:\mathrm A x =0 \}image-20220105093608971

A\mathrm A 的行的张成是 A\mathrm A 的 nullspace 的补集。

上图展示了矩阵 range 和 nullspace 的直观表示。下面我们会在 Section 7.5.4 讨论如何计算这两个空间。

7.1.2.5 线性投影#

一个向量 yRmy \in \mathbb{R}^m 的在 span({x1,,xn}), xiRm\mathrm{span}(\{x_1,\dots,x_n\}),\ x_i\in \mathbb{R}^m 上的投影是指在 span({x1,,xn})\mathrm{span}(\{x_1,\dots,x_n\}) 空间上且和 yy 的欧式距离 vy2||v-y||_2 尽可能接近的向量。我们记为 Proj(y;{x1,,xn})\mathrm{Proj}(y;\{x_1,\dots,x_n\}),定义如下:

Proj(y;{x1,,xn})=argminvspan({x1,,xn})vy2\mathrm{Proj}(y;\{x_1,\dots,x_n\})=\mathop{\arg\min}_{v\in\mathrm{span}(\{x_1,\dots,x_n\})} ||v-y||_2

给定一个满秩矩阵 ARm×n\mathrm A \in \mathbb{R}^{m\times n}mnm\geq n,我们可以定义向量 yRmy\in \mathbb{R}^mA\mathrm A 的 range 上的投影为:

Proj(y;{x1,,xn})=argminvR(A)vy2=A(ATA)1ATy\mathrm{Proj}(y;\{x_1,\dots,x_n\})=\mathop{\arg\min}_{v\in\mathcal{R}(\mathrm A)} ||v-y||_2 = \mathrm A(\mathrm A^\mathsf T\mathrm A)^{-1}\mathrm A^\mathsf Ty

这个公式和 Section 11.2.2.2 的 normal equation 是一致的。

7.1.3 向量和矩阵的范数#

本部分中我们讨论如何度量向量和矩阵的“大小”。

7.1.3.1 向量范数#

向量的范数 x||x|| 不正规地说就是向量长度的一种测量。正式的说法是,一个范数是满足下列4个条件的任意函数 f:RnRf:\mathbb{R}^n\rightarrow \mathbb{R}

  • Non-negativity:对所有 xRn, f(x)0x\in \mathbb{R}^n,\ f(x)\geq0
  • Definitenessf(x)=0 if and only if x=0f(x)=0\ \mathrm{if\ and\ only\ if\ }x=0
  • Absolute value homogeneity:对所有 xRn, tR, f(tx)=tf(x)x\in \mathbb{R}^n,\ t\in \mathbb{R},\ f(tx)=|t|f(x)
  • Triangle inequality::对所有 x,yRn, f(x+y)f(x)+f(y)x,y\in \mathbb{R}^n,\ f(x+y)\leq f(x)+f(y)

下面是常用范数:

  • p-normxp=(i=1nxip)1/p, for p1||x||_p=(\sum_{i=1}^n|x_i|^p)^{1/p},\ \mathrm{for\ } p\geq1
  • 2-normx2=i=1nxi2||x||_2=\sqrt{\sum_{i=1}^n x_i^2},又称欧式范数。注意性质:x22=xTx||x||^2_2=x^\mathsf T x
  • 1-normx1=i=1nxi||x||_1=\sum_{i=1}^n |x_i|
  • Max-normx=maxixi||x||_{\infty}=\mathrm{max}_i|x_i|
  • 0-normx0=i=1nI(xi>0)||x||_0 = \sum_{i=1}^n\mathbb I(|x_i|>0). 这是伪范数,因为它不满足同质性,它指的是 xx 中的非零元素的数量。如果我们定义 00=00^0 =0,我们可以把它写成 x0=i=1nxi0||x||_0 = \sum_{i=1}^nx_i^0.

7.1.3.2 矩阵范数#

由于矩阵并没有长度的概念,因此将矩阵范数看作是对矩阵长度的度量并不可行。

假设我们认为一个矩阵 ARm×n\mathrm A \in \mathbb{R}^{m\times n} 定义了一个线性函数 f(x)=Axf(x)=\mathrm A x 我们定义 A\mathrm A诱导范数 induced norm 为对输入的最大放大倍数:

Ap=maxx0Axpxp=maxx=1Axp||\mathrm A||_p=\max_{x\neq0}\frac{||\mathrm A x||_p}{||x||_p}=\max_{||x||=1}||\mathrm A x||_p

通常令 p=2p=2,此时:

A2=λmax(ATA)=maxiσi||A||_2= \sqrt{\lambda_{max}(\mathrm A^\mathsf T\mathrm A)}=\max_i\sigma_i

其中 σi\sigma_iA\mathrm A 的奇异值。

核范数,又叫迹范数,定义为:

A=tr(ATA)=iσi||\mathrm A||_*=\mathrm{tr}(\sqrt{\mathrm A^\mathsf T\mathrm A})=\sum_i\sigma_i

其中 ATA\sqrt{\mathrm A^\mathsf T\mathrm A} 是矩阵平方根。由于奇异值总是非负的,我们有:

A=iσi=σ1||\mathrm A||_* = \sum_i|\sigma_i|=||\sigma||_1

使用该范数作为正则项会鼓励许多奇异值变为0,进而导致一个低秩矩阵。更一般的情况下,我们可以定义 Schatten p-norm 为:

Ap=(iσip(A))1/p||\mathrm A||_p = \left( \sum_i \sigma_i^p(\mathrm A) \right )^{1/p}

如果我们将一个矩阵当成一个向量,我们就可以用向量范数定义矩阵范数,A=vec(A)||\mathrm A||=||\mathrm{vec(A)}||. 如果向量范数是 2-norm,对应的矩阵范数称作 Frobenius norm

AF=i=1mj=1naij2=tr(ATA)=vec(A)2||\mathrm A||_F = \sqrt{\sum_{i=1}^m\sum_{j=1}^n a_{ij}^2}= \sqrt{\mathrm{tr}(\mathrm A^\mathsf T\mathrm A)}=||\mathrm{vec(A)}||_2

如果 A\mathrm A 的计算代价太大,但 Av\mathrm A v 的代价很小(对一个随机向量 vv),我们可以用 Hutchinson trace estimator 对 Frobenius norm 做一个随机近似:

AF2=tr(ATA)=E[vTATAv]=E[Av22]||\mathrm A||_F^2 = \mathrm{tr}(\mathrm A^\mathsf T \mathrm A)= \mathbb E[v^\mathsf T \mathrm A^\mathsf T\mathrm Av]=\mathbb E[||\mathrm A v||_2^2]

其中 vN(0,I)v \sim \mathcal N (\boldsymbol{0},\mathrm{I}).

7.1.4 矩阵的性质#

本部分讨论矩阵的各种标量性质。

7.1.4.1 方阵的迹 trace#

方阵 ARn×n\mathrm A\in \mathbb{R}^{n\times n} 的迹,记为 tr(A)\mathrm{tr(A)},定义为矩阵对角线元素之和:

tr(A)i=1nAii\mathrm{tr(A)} \triangleq \sum_{i=1}^n \mathrm A_{ii}

迹拥有以下性质,令 cRc\in \mathbb{R} 为一个标量,A,BRn×n\mathrm{A,B}\in \mathbb{R}^{n\times n} 均为方阵吗,λi\lambda_iA\mathrm A 的特征值:

tr(A)=tr(AT)tr(A+B)=tr(A)+tr(B)tr(cA)=c tr(A)tr(AB)=tr(BA)tr(A)=i=1nλi\mathrm{tr(A)}=\mathrm{tr(A^\mathsf T)}\\ \mathrm{tr(A+B)}=\mathrm{tr(A)} + \mathrm{tr(B)}\\ \mathrm{tr}(c\mathrm A) = c\ \mathrm{tr(A)}\\ \mathrm{tr(AB)}=\mathrm{tr(BA)}\\ \mathrm{tr(A)} = \sum_{i=1}^n \lambda_i\quad

重要性质:cyclic permutation property,对 ABC\mathrm {ABC} 为方阵的 A,B,C\mathrm {A,B,C} 有:

tr(ABC)=tr(BCA)=tr(CAB)\rm tr(ABC) = tr(BCA) = tr(CAB)

由此我们还可以推导出迹技巧,可以将标量内积 xTAxx^\mathsf T \mathrm A x 重写为:

xTAx=tr(xTAx)=tr(xxTA)x^\mathsf T \mathrm A x = \mathrm{tr}(x^\mathsf T \mathrm A x)= \mathrm{tr}(xx^\mathsf T \mathrm A )

有些情况下,直接计算矩阵 A\mathrm A 的代价高昂,但计算矩阵向量乘积 Av\mathrm A v 的代价较低。假设 vv 是一个随机向量且 E[vvT]=I\mathbb E [vv^\mathsf T] = \mathrm I. 在这种情况下,我们可以用下列关系对 tr(A)\mathrm {tr(A)} 进行蒙特卡洛近似:

tr(A)=tr(AE[vvT])=E[tr(AvvT)]=E[tr(vTAv)]\mathrm {tr(A)}=\mathrm{tr(A}\mathbb E [vv^\mathsf T])= \mathbb E [\mathrm {tr(A}vv^\mathsf T)]= \mathbb E[\mathrm{tr}(v^\mathsf T\mathrm Av)]

这被称为 Hutchinson trace estimator.

7.1.4.2 方阵的行列式#

方阵的行列式 determinant 记为 det(A)\rm \det(A) or A|\rm A| 是对一个单位体积在线性变换后的变化程度的度量。(更正式的定义较为复杂,这里不需要讨论)

行列式的性质,其中 A,BRn×n\mathrm {A,B} \in \mathbb{R}^{n\times n}

A=ATcA=cnAAB=ABA=0  iff A is singularA1=1/A  if A is not singular A=i=1nλi  where λi are the eigenvalues of A|\mathrm A|=|\mathrm A^\mathsf T|\\ |c\mathrm A| = c^n|\mathrm A|\\ |\mathrm {AB}| = |\mathrm A||\mathrm B|\\ |\mathrm A| =0 \ \ \rm iff \ A\ is\ singular\\ |\mathrm A^{-1}| =1/|\mathrm A| \ \ \rm if \ A\ is\ not\ singular\\\ |\mathrm A| =\prod_{i=1}^{n}\lambda_i \ \ \mathrm {where}\ \lambda_i \ \rm are\ the\ eigenvalues\ of\ A

对于一个正定矩阵 A\mathrm A,我们可以写成如下形式:A=LLT\mathrm {A =LL^\mathsf T},其中 L\mathrm L 是下三角 Cholesky 分解。此时可得:

det(A)=det(L)det(LT)=det(L)2logdet(A)=2logdet(L)=2logiLii=2trace(log(diag(L)))\mathrm {\det(A)=\det(L)\det(L^\mathsf T)=\det(L)^2}\\ \log\det(\mathrm A)=2\log\det(\mathrm L)=2\log\prod_i L_{ii}= 2\mathrm{trace}(\log(\rm{diag(L)}))

7.1.4.3 矩阵的秩#

矩阵 A\mathrm A列矩 column rank 是它的列张成的空间的维度,行距 row rank 是它的行张成的空间的维度。线性代数的一个基本事实:对任意矩阵 A\mathrm Acolumnrank(A)=rowrank(A)\rm columnrank(A)=rowrank(A),因此这个量就简化为 A\rm A 的秩,记为 rank(A)\rm rank(A). 秩的基本性质如下:

  • For ARm×n, rank(A)min(m,n)\mathrm A \in \mathbb{R}^{m\times n},\ \mathrm{rank(A)}\leq\min(m,n). 如果 rank(A)=min(m,n)\mathrm{rank(A)}=\min(m,n),则 A\mathrm A满秩 full rank 的,否则就是欠秩 rank deficient 的。
  • For ARm×n, rank(A)=rank(AT)=rank(ATA)=rank(AAT)\mathrm A \in \mathbb{R}^{m\times n},\ \mathrm{rank(A)}=\mathrm{rank(A^\mathsf T)}=\mathrm{rank(A^\mathsf T A)}=\mathrm{rank(AA^\mathsf T)}.
  • For ARm×n, BRn×p, rank(AB)min(rank(A),rank(B))\mathrm A \in \mathbb{R}^{m\times n},\ \mathrm B\in \mathbb{R}^{n\times p},\ \rm rank(AB)\leq\min(rank(A),rank(B)).
  • For A,BRm×n, rank(A+B)rank(A)+rank(B)\mathrm {A,B} \in \mathbb{R}^{m\times n},\ \rm rank(A+B) \leq rank(A) + rank(B).

另外可以证明方阵当且仅当是满秩时是可逆的。

7.1.4.4 条件数#

矩阵的条件数描述的是矩阵计算中的的数值稳定性,定义如下:

κ(A)AA1\kappa(\mathrm A)\triangleq ||\mathrm A||\cdot||\mathrm A^{-1}||

其中 A||\rm A|| 是矩阵的范数。我们可以证明 κ(A)1\kappa(\mathrm A)\geq 1. (条件数依赖于范数的选取,我们默认用 2\ell_2 范数)

  • 如果 κ(A)\kappa(\mathrm A) 较小(close to 1),则我们称 A\mathrm A 是 well-conditioned.
  • 如果 κ(A)\kappa(\mathrm A) 较大,则我们称 A\mathrm A 是 ill-conditioned.

较大的条件数意味着 A\mathrm A 是接近奇异的,这是一个对奇异性接近度的度量,且是一个比行列式的大小更好的度量。例如,假设 A=0.1I100×100\mathrm A =0.1\mathrm I_{100\times 100},则 det(A)=10100\rm det(A)=10^{-100},意味着 A\rm A 接近奇异矩阵,但是 κ(A)=1\kappa(\mathrm A)=1,表示 A\rm A 是 well-conditioned,实际上 Ax\mathrm A x 仅仅将输入 xx 缩放为 0.1 倍。

当使用 2\ell_2 norm 时,条件数等于最大和最小的奇异值的比值,而奇异值是特征值的平方根:

κ(A)=σmaxσmin=λmaxλmin\kappa(\mathrm A)=\frac{\sigma_{max}}{\sigma_{min}}=\sqrt \frac{\lambda_{max}}{\lambda_{min}}

我们可以进一步考虑一个二次目标函数 f(x)=xTAxf(x)=x^\mathsf T \mathrm A x,我们可以画出这个函数的水平线,它是椭圆形的,见 Section 7.4.4. 当我们增加 A\rm A 的条件数,椭圆在某个方向上变得越来越狭长,像函数空间的一个狭窄山谷。如果 κ=1\kappa =1,也就是可以取到的最小值,水平线会变成圆形的。

7.1.5 特殊矩阵#

7.1.5.1 对角矩阵#

非对角线元素均为0

D=diag(d1,d2,,dn)=(d1d2dn)\mathrm D = \mathrm{diag}(d_1,d_2,\dots,d_n)= \left( \begin{matrix} d_{1} \\ & d_2 \\ & &\ddots \\ & & & d_n \\ \end{matrix} \right)

单位矩阵 identity matrix,记为 IRn×n\mathrm I \in \mathbb{R}^{n\times n},是对角元素均为1,其他元素均为0的方阵,I=diag(1,1,,1)\mathrm I = \mathrm{diag}(1,1,\dots,1). 它拥有性质:对于所有 ARn×n\mathrm A \in \mathbb{R}^{n\times n}AI=A=IA\rm AI=A=IA.

7.1.5.2 Triangular matirces#

上三角和下三角矩阵。它的一个常用性质是对角元素即为特征值,因此行列式的值就是对角元素的乘积。

7.1.5.3 正定矩阵#

给定一个方阵 ARn×n\mathrm A \in \mathbb{R}^{n\times n} 和一个向量 xRnx \in \mathbb{R}^n,标量 xTAxx^\mathsf T \mathrm A x 被称为二次形

xTAx=i=1nj=1nAijxixjx^\mathsf T \mathrm A x=\sum_{i=1}^n\sum_{j=1}^n A_{ij}x_ix_j

注意:

xTAx=(xTAx)T=xTATx=xT(12A+12AT)xx^\mathsf T \mathrm A x = (x^\mathsf T \mathrm A x)^\mathsf T=x^\mathsf T \mathrm A^\mathsf T x=x^\mathsf T ( \frac{1}{2} \mathrm A +\frac{1}{2} \mathrm A^\mathsf T)x

所以我们常常隐式地假设二次型的矩阵是对称的。

我们给出如下定义:

  • 一个对称矩阵 ASn\mathrm A \in \mathbb S^n 是正定矩阵 iff 对于所有非零向量 xRnx \in \mathbb{R}^n,均有 xTAx>0x^\mathsf T \mathrm A x>0,记为 A0\mathrm A \succ 0 or just A>0\mathrm A >0. 如果存在 xTAx=0x^\mathsf T \mathrm A x = 0,我们说这个矩阵是半正定的。我们记所有的正定矩阵为 S++n\mathbb{S}_{++}^n.
  • 一个对称矩阵 ASn\mathrm A \in \mathbb S^n 是负定矩阵 iff 对于所有非零向量 xRnx \in \mathbb{R}^n,均有 xTAx<0x^\mathsf T \mathrm A x<0,记为 A0\mathrm A \prec 0 or just A<0\mathrm A < 0. 如果存在 xTAx=0x^\mathsf T \mathrm A x = 0,我们说这个矩阵是半负定的。
  • 一个对称矩阵 ASn\mathrm A \in \mathbb S^n 是不定矩阵 if 它既不是半正定又不是半负定矩阵。

正定和负定矩阵总是可逆的。在 Section 7.4.3.1 中,我们会证明对称矩阵是正定矩阵 iff 它的所有特征值都是正的。

一个对称矩阵为正定矩阵的充分条件是对角主导

aii>jiaijfor all i|a_{ii}|>\sum_{j\neq i}|a_{ij}|\quad \mathrm{for\ all}\ i

2d情况下,任何 2×22\times 2 矩阵 (abbd)\dbinom{a\quad b}{b\quad d} 是正定矩阵 iff a>0,d>0,adb2>0a>0,d>0,ad-b^2>0.

最后,有一种正定矩阵很常见,需要额外注意。对任意矩阵 ARm×n\mathrm A \in \mathbb{R}^{m\times n}(不需要对称或方阵),Gram matrix G=ATAG = \mathrm{A^\mathsf T A} 总是半正定的,如果 mnm\geq n (这里为了方便假设 A\mathrm A 是满秩矩阵),那么矩阵 G=ATAG = \mathrm{A^\mathsf T A} 是正定矩阵。

7.1.5.4 正交矩阵#

两向量 x,yRnx,y \in \mathbb{R}^n 如果 xTy=0x^\mathsf T y =0 则称两向量正交。一个向量 xRnx\in \mathbb{R}^n 如果 x2=1||x||_2=1 则该向量是标准化的。一组向量相互正交且标准化被称为标准正交。一个方阵 URn×n\mathrm U \in \mathbb{R}^{n\times n} 如果所有列均标准正交则这个矩阵被称为正交矩阵。

U\mathrm U 为正交矩阵当且仅当:UTU=I=UUT\mathrm {U^\mathsf T U=I=UU^\mathsf T}.

换句话说,正交矩阵的逆即为转置。

正交矩阵的一个例子是旋转矩阵,例如,一个 3d 空间关于 z 轴旋转 α\alpha 度的矩阵为:

R(α)=(cos(α)sin(α)0sin(α)cos(α)0001)\mathrm{R}(\alpha)= \left(\begin {matrix} \cos(\alpha) & -\sin(\alpha) & 0 \\ \sin(\alpha) & \cos(\alpha) & 0 \\ 0 & 0 & 1 \\ \end{matrix}\right)

正交矩阵的一个良好性质是一个向量乘以正交矩阵不会改变非零向量的欧式范数,Ux2=x2||\mathrm{U}x||_2=||x||_2

相似的是,我们可以发现两向量的夹角在正交矩阵变换后也得已保存:

cos(α(x,y))=xTyxy\cos(\alpha(x,y))=\frac{x^\mathsf T y}{||x||||y||}

so

cos(α(Ux,Uy))=(Ux)T(Uy)UxUy=xTyxy=cos(α(x,y))\cos(\alpha(\mathrm{U}x,\mathrm{U}y))= \frac{(\mathrm{U}x)^\mathsf T (\mathrm{U}y)} {||\mathrm{U}x|| ||\mathrm{U}y||}= \frac{x^\mathsf T y}{||x||||y||}=\cos(\alpha(x,y))

总的来说,正交矩阵变换是旋转和反射变换的扩展,都保存夹角和长度。

注意有一个 Gram Schmidt orthogonalization 的方法可以让任何方阵正交化,但这里我们不讨论。

7.2 矩阵乘法#

两矩阵 ARm×n,BRn×p\mathrm A \in \mathbb{R}^{m\times n},\mathrm B \in \mathbb{R}^{n\times p} 的乘积:

C=ABRm×p\mathrm {C=AB}\in\mathbb{R}^{m\times p}

矩阵的乘法一般需要 O(mnp)O(mnp) 的时间,所以需要 GPU or TPU 这样的特殊硬件来加速,一般是通过并行计算行或者列实现。

矩阵乘法的基本性质:

  • 结合律:(AB)C=A(BC)\rm (AB)C=A(BC)
  • 分配律:A(B+C)=AB+AC\rm A(B+C)=AB+AC
  • 不满足交换律:ABBA\rm AB \neq BA

7.2.1 向量-向量 乘积#

给定两个向量 x,yRnx,y \in \mathbb{R}^n,则 xTyx^\mathsf T y 被称为内积点积标量积。 注意总是有 xTy=yTxx^\mathsf T y = y^\mathsf T x.

给定向量 xRm,yRnx \in \mathbb{R}^m,y \in \mathbb{R}^n,则 xyTxy^\mathsf T 被称作外积xyTRm×nxy^\mathsf T \in \mathbb{R}^{m\times n} .

7.2.2 矩阵-向量 乘积#

矩阵和向量乘积有两种理解:

A\mathrm A 写成行的形式:

y=Ax=[a1Ta2TamT]x=[a1Txa2TxamTx]y = \mathrm Ax = \begin{bmatrix} \Large - & a_1^\mathsf T & \Large - \\ \Large - & a_2^\mathsf T & \Large - \\ & \vdots & \\ \Large - & a_m^\mathsf T & \Large - \end{bmatrix} x = \begin{bmatrix} a_1^\mathsf T x \\ a_2^\mathsf T x \\ \vdots \\ a_m^\mathsf T x \end{bmatrix}

A\mathrm A 写成列的形式:

y=Ax=[a1a2an][x1x2xn]=[a1]x1+[a2]x2++[an]xny = \mathrm Ax = \begin{bmatrix} \vert & \vert & & \vert\\ a_1 & a_2 & \cdots & a_n \\ \vert & \vert & & \vert\\ \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}\\ =\begin{bmatrix} | \\ a_1 \\ | \end{bmatrix}x_1+ \begin{bmatrix} | \\ a_2 \\ | \end{bmatrix}x_2+ \cdots+ \begin{bmatrix} | \\ a_n \\ | \end{bmatrix}x_n

7.2.3 矩阵-矩阵 乘积#

对矩阵乘法最“自然”的表示:把 A\mathrm A 表示成行且把 B\mathrm B 表示成列。

C=AB=[a1Ta2TamT][b1b2bp]=[a1Tb1a1Tb2a1Tbpa2Tb1a2Tb2a2TbpamTb1amTb2amTbp]\mathrm C = \mathrm {AB} = \begin{bmatrix} \Large - & a_1^\mathsf T & \Large - \\ \Large - & a_2^\mathsf T & \Large - \\ & \vdots & \\ \Large - & a_m^\mathsf T & \Large - \end{bmatrix} \begin{bmatrix} \vert & \vert & & \vert\\ b_1 & b_2 & \cdots & b_p \\ \vert & \vert & & \vert\\ \end{bmatrix}\\ = \begin{bmatrix} a_1^\mathsf T b_1 & a_1^\mathsf T b_2 & \cdots & a_1^\mathsf T b_p \\ a_2^\mathsf T b_1 & a_2^\mathsf T b_2 & \cdots & a_2^\mathsf T b_p \\ \vdots & \vdots & \ddots & \vdots \\ a_m^\mathsf T b_1 & a_m^\mathsf T b_2 & \cdots & a_m^\mathsf T b_p \\ \end{bmatrix}

ARm×n\mathrm A \in \mathbb{R}^{m\times n}BRn×p\mathrm B \in \mathbb{R}^{n\times p}aiRna_i \in \mathbb{R}^n and bjRnb_j \in \mathbb{R}^n

image-20220506144718646

Notation:

  • A2\mathrm A ^ 2AA\mathrm{AA} 的简写;
  • 要表示矩阵每个元素的平方,记作 A2=[Aij2]\mathrm A ^ {\bigodot 2} = [A^2_{ij}].
  • 如果 A\mathrm A 是 对角矩阵,那么 A2=A2\mathrm A^2=\mathrm A ^{\bigodot 2}.
  • 我们同样可以这样定义平方的逆运算,矩阵平方根:A=M\mathrm A = \sqrt{\mathrm M} if A2=M\mathrm A ^2 = \mathrm M

7.2.4 应用:操作数据矩阵#

7.2.4.1 切片求和#

假设 X\mathrm X 是一个 N×DN \times D 的矩阵,我们可以通过前乘一个 1×N1\times N 的全1矩阵实现按行求和:

1NTX=(nxn1    nxnD)\mathrm{1}_N^\mathsf{T}\mathrm{X}=(\sum_nx_{n1}\ \ \cdots\ \ \sum_nx_{nD})

因此,数据向量的均值可以表示为:

xˉT=1N1NTX\bar{x}^\mathsf{T} = \frac{1}{N}\mathrm{1}_N^\mathsf{T}\mathrm{X}

同理,后乘一个 D×1D\times 1 的全1矩阵实现按列求和:

X1D=(dx1ddxNd)\mathrm{X}\mathrm{1}_D = \left(\begin {matrix} \sum_d x_{1d} \\ \vdots \\ \sum_d x_{Nd} \\ \end{matrix}\right)

由此我们可以对一个矩阵的所有元素实现求和:

1NTX1D=ijXij\mathrm{1}_N^\mathsf{T}\mathrm{X}\mathrm{1}_D = \sum_{ij} X_{ij}

所有元素的均值为:

xˉ=1ND1NTX1D\bar x = \frac{1}{ND} \mathrm{1}_N^\mathsf{T}\mathrm{X}\mathrm{1}_D

7.2.4.2 对矩阵按行或列 scaling#

我们经常想要对数据矩阵按行或列进行标准化。我们现在展示怎样用矩阵记号进行表示

对数据矩阵 X\mathrm X 前乘一个对角矩阵 S=diag(s)\mathrm S= \mathrm {diag} (\boldsymbol s),其中 s\boldsymbol s 是一个 长度为 N 的向量,然后我们就对 X\mathrm Xs\boldsymbol s 中的 scale factor 进行了按行缩放:

diag(s)X=(s100sN)(x1,1x1,DxN,1xN,D)=(s1x1,1s1x1,DsNxN,1sNxN,D)\mathrm {diag} (\boldsymbol s) \mathrm{X}= \left(\begin {matrix} s_1 & \cdots & 0 \\ & \ddots & \\ 0 & \cdots & s_N \\ \end{matrix}\right) \left(\begin {matrix} x_{1,1} & \cdots & x_{1,D} \\ & \ddots & \\ x_{N,1} & \cdots & x_{N,D} \\ \end{matrix}\right) = \left(\begin {matrix} s_1x_{1,1} & \cdots & s_1x_{1,D} \\ & \ddots & \\ s_Nx_{N,1} & \cdots & s_Nx_{N,D} \\ \end{matrix}\right)

同理,后乘一个对角矩阵等价于按列缩放:

Xdiag(s)=(x1,1x1,DxN,1xN,D)(s100sD)=(s1x1,1sDx1,Ds1xN,1sDxN,D)\mathrm{X} \mathrm{diag} (\boldsymbol s)= \left(\begin {matrix} x_{1,1} & \cdots & x_{1,D} \\ & \ddots & \\ x_{N,1} & \cdots & x_{N,D} \\ \end{matrix}\right) \left(\begin {matrix} s_1 & \cdots & 0 \\ & \ddots & \\ 0 & \cdots & s_D \\ \end{matrix}\right) = \left(\begin {matrix} s_1x_{1,1} & \cdots & s_Dx_{1,D} \\ & \ddots & \\ s_1x_{N,1} & \cdots & s_Dx_{N,D} \\ \end{matrix}\right)

由此我们可以把标准化操作写成矩阵形式:

standardize(X)=(X1NμT)diag(σ)1\mathrm {standardize(X)} = (\mathrm{X}-\mathrm{1}_N \mu^\mathsf{T}) \mathrm {diag}(\sigma)^{-1}

其中 μ=xˉ\mu = \bar x 是经验均值,且 σ\sigma 是经验标准差向量。

7.2.4.3 Sum of squares and scatter matrix#

Sum of squares matrix 是一个 D×DD\times D 的矩阵,定义为:

S0XTX=n=1NxnxnT=n=1N(xn,12xn,1xn,Dxn,Dxn,1xN,D2)\mathrm {S}_0 \triangleq \mathrm{X}^\mathsf{T}\mathrm{X}=\sum_{n=1}^{N}x_nx_n^\mathsf{T}= \sum_{n=1}^N \left(\begin {matrix} x_{n,1}^2 & \cdots & x_{n,1}x_{n,D} \\ & \ddots & \\ x_{n,D}x_{n,1} & \cdots & x_{N,D}^2 \\ \end{matrix}\right)

Scatter matrix 是一个 D×DD \times D 矩阵,定义为:

Sxˉn=1N(xnxˉ)(xnxˉ)T=(n=1NxnxnT)NxˉxˉT\mathrm {S}_{\bar x} \triangleq \sum_{n=1}^{N} (x_n-\bar x)(x_n-\bar x)^\mathsf{T}= \left( \sum_{n=1}^N x_nx_n^\mathsf{T} \right)- N \bar{x}\bar{x}^{\mathsf T}

易见 scatter matrix 是中心化后数据的 sum of squares matrix,我们也可以用矩阵形式来表示中心化后的数据矩阵,即原矩阵每列减去每列均值:

X~=X1NxˉT=X1N1N1NTX=CNXwhereCNIN1N1N1NT\tilde{\mathrm X} = \mathrm X - 1_N \bar{x}^\mathsf{T}= \mathrm X - \frac{1}{N} 1_N 1_N^\mathsf{T} \mathrm X = \mathrm C_N \mathrm X\\ where \quad \mathrm C_N \triangleq \mathrm I_N - \frac{1}{N}1_N1_N^\mathsf{T}

CN\mathrm C_Ncentering matrix,由此 scatter matrix 可以用如下方式计算:

Sxˉ=X~TX~=XTCNTCNX=XTCNX\mathrm {S}_{\bar x} = \tilde {\mathrm X}^\mathsf{T}\tilde {\mathrm X} = \mathrm X^\mathsf{T} \mathrm C_N^\mathsf{T} \mathrm C_N \mathrm X = \mathrm X^\mathsf{T} \mathrm C_N \mathrm X

这里用到了 CN\mathrm C_N 是对称且幂等的性质,即 CNk=CN (k=1,2,...)\mathrm C_N^k = \mathrm C_N\ (k=1,2,...). (可以理解为我们只要减掉一次均值,再次减去均值就不会起任何作用了)。

7.2.4.4 Gram matrix#

Gram matrix 是一个 N×NN \times N 的内积矩阵:

KXXT=(x1Tx1x1TxNxNTx1xNTxN)\mathrm K \triangleq \mathrm{X} \mathrm{X}^\mathsf{T} = \left(\begin{matrix} x_1^\mathsf{T}x_1 & \cdots & x_1^\mathsf{T}x_N \\ & \ddots & \\ x_N^\mathsf{T}x_1 & \cdots & x_N^\mathsf{T}x_N \end{matrix}\right)

7.2.4.5 Distance matrix#

X\mathrm XNx×DN_x \times D 的数据矩阵,Y\mathrm Y 为另一个 Ny×DN_y \times D 的数据矩阵。我们可以计算他们之间的平方距离

Dij=(xiyj)T(xiyj)=xi22xiTyj+yj2\mathrm D_{ij}=(x_i-y_j)^\mathsf{T}(x_i-y_j) = ||x_i||^2-2x_i^\mathsf{T}y_j+||y_j||^2

7.2.5 Kronecker products#

如果 A\mathrm A 是一个 m×nm\times n 的矩阵且 B\mathrm B 是一个 p×qp\times q 的矩阵,那么 Kronecker product AB\mathrm A \otimes \mathrm B 是一个 mp×nqmp\times nq 的块矩阵:

AB=[a11Ba1nBam1BamnB]\mathrm A \otimes \mathrm B = \begin{bmatrix} a_{11}\mathrm B & \cdots & a_{1n}\mathrm B \\ \vdots & \ddots & \vdots \\ a_{m1}\mathrm B & \cdots & a_{mn}\mathrm B \\ \end{bmatrix}

7.2.6 Einstein summation#

CH07-Linear Algebra
https://www.quahog-dev.tech/posts/probml-notes/ch07-linear-algebra/
Author
Brian & Stewie
Published at
2025-01-13