第二章 机器学习中的线性代数知识
线性代数作为数学中的一个重要的分支,广发应用在科学与工程中。掌握好线性代数对于理解和从事机器学习算法相关的工作是很有必要的,尤其是对于深度学习而言。因此,在开始介绍深度学习之前,先集中探讨一些必备的线性代数知识。
2.1 标量,向量,矩阵和张量
标量(scalar):一个标量就是一个单独的数。用斜体表示标量,如 $s \in R$.
向量(vector):一个向量是一列数,我们用粗体的小写名称表示向量。比如 $\bf x$,将向量$\bf x$ 写成方括号包含的纵柱:
$$
{\bf x}= \begin {bmatrix} x_1\x_2\ \vdots \x_n\ \end{bmatrix}
$$
矩阵(matrix):矩阵是二维数组,我们通常赋予矩阵粗体大写变量名称,比如$\bf A$ 。如果一个矩阵高度是$m$,宽度是$n$,那么说$\bf A\in \bf R ^{m \times n}$ 。一个矩阵可以表示如下:
$$
{\bf A}= \begin{bmatrix} x_{11} &x_{12}\ x_{21} & x_{22}\ \end{bmatrix}
$$
张量(tensor):某些情况下,我们会讨论不止维坐标的数组。如果一组数组中的元素分布在若干维坐标的规则网络中,就将其称为张量。用$\bf A$ 表示,如张量中坐标为$(i,j,k)$的元素记作${\bf A}_{i,j,k}$。
转置(transpose):矩阵的转置是以对角线为轴的镜像,这条从左上角到右下角的对角线称为主对角线(main diagonal)。将矩阵$\bf A$的转置表示为${\bf A^\top}$。定义如下:
$$
({\bf A^\top}){i,j}=\bf A{j,i}
$$
$$
{\bf A} = \begin{bmatrix} x_{11} &x_{12}\ x_{21} & x_{22}\ x_{31} & x_{32} \end{bmatrix} \implies {\bf A^\top}= \begin{bmatrix} x_{11} &x_{21}&x_{31} \ x_{21} & x_{22}& x_{32} \end{bmatrix}
$$
2.2 矩阵和向量相乘
矩阵乘法是矩阵运算中最重要的操作之一。两个矩阵$\bf A$和$\bf B$ 的矩阵乘积(matrix product)是第三个矩阵$\bf C$ 。矩阵乘法中$\bf A$ 的列必须和 $\bf B$ 的行数相同。即如果矩阵 $\bf A$ 的形状是 $m \times n$ ,矩阵 $\bf B$ 的形状是 $n \times p$ ,那么矩阵 $\bf C$ 的形状就是 $m \times p$ 。即
$$
\bf C = \bf A \times \bf B
$$
具体的地,其中的乘法操作定义为
$$
{\bf C}{i,j} = \sum_k {\bf A}{i,k} {\bf B}_{k,j}
$$
矩阵乘积服从分配律
$$
\bf A(B + C) = \bf AB+AC
$$
矩阵乘积也服从结合律
$$
\bf A(BC) = (AB)C
$$
注意:矩阵乘积没有交换律
点积(dot product)两个相同维数的向量$\bf x$ 和 $\bf y$ 的点积可看作是矩阵乘积 $\bf x\top y$
矩阵乘积的转置
$$
(\bf AB)\top = B \top A\top
$$
利用向量的乘积是标量,标量的转置是自身的事实,我们可以证明(10)式:
$$
\bf x \top y = (x\top y)\top = y\top x
$$
线性方程组
$$
\bf Ax = b
$$
2.3 单位矩阵和逆矩阵
线性代数中提供了 矩阵逆(matrix inverse) 的工具,使得我们能够解析地求解(11)中的 $\bf A$.
单位矩阵(identity matrix):任意向量与单位矩阵相乘都不会改变。我们将保持 $n$ 维向量不变地单位矩阵记作为 $\bf I_n$ ,形式上 $\bf I_n \in \Bbb R ^{n\times n}$ ,
$$
\forall \bf x \in \Bbb R^n, \bf I_nx=x
$$
矩阵 $\bf A$ 的矩阵逆被记作 $\bf A^{-1}$ ,被定义为如下形式:
$$
\bf A{-1}A=AA{-1}=I_n
$$
(11)式方程组的求解:
$$
\bf Ax = b \
A^{-1}Ax = A^{-1}b \
I_n x=A^{-1}b \
x = A^{-1}b
$$
方程组的解取决于能否找到一个逆矩阵 $\bf A^{-1}$ 。接下来讨论逆矩阵 $\bf A^{-1}$ 的存在的条件。
2.4 线性相关和生成子空间
如果逆矩阵 $\bf A^{-1}$ 存在,那么(11)式肯定对于每一个向量 $\bf b$ 恰好存在一个解。分析方程有多少个解,我们可以看成是 $\bf A$ 的列向量的 线性组合(linear combination)。
$$
{\bf Ax} = \sum_i x_i {\bf A}_{:,i}
$$
形式上,某个集合中向量的线性组合,是指每个向量乘以对应系数之后的和,即
$$
\sum_i c_i {\bf v}^{(i)}
$$
一组向量的生成空间(span) 是原始向量线性组合后所能抵达的点的集合。
线性无关(linearly independent): 如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量被称之为线性无关。
要想使矩阵可逆,首先必须矩阵是一个方阵(square),即 $m=n$ ,其次,所有的列向量都是线性无关的。
一个列向量线性相关的方阵被称为 奇异的(singular)。
2.5 范数
有时候我们需要衡量一个向量的大小,在机器学习中,我们使用称为范数(norm)的函数来衡量矩阵大小,形式上, $L^p$ 范数如下:
$$
||{\bf x}||_p = (\sum_i |x_i|p)\frac{1}{2}
$$
其中 $p \in \Bbb R, p \geq 1$。
范数是将向量映射到非负值的函数。直观上来说,向量 $\bf x$ 的范数就是衡量从原点到 $\bf x$ 的举例。更严格来说,范数满足下列性质的函数:
- ${\bf f(x)}=0 \implies {\bf x} =0$
- ${\bf f(x+y)} \leq {\bf f(x)} + {\bf f(y)}$
- $\forall \alpha \in \Bbb R, \bf f(\alpha {\bf x}) = |\alpha|f({\bf x})$
当 $p=2$ 时, $L^2$ 被称作 欧几里得范数(Euclidean norm)。它表示从原点出发到向量 $\bf x$ 确定的点的欧几里得距离。平方 $L^2$ 范数常被用来衡量向量的大小,因为它便于求导计算(如对向量中每个元素的导数只取决于对应的元素,但是它也有缺陷,即它在原点附近增长得十分缓慢),可以简单用点积 $ \bf x \top x$ 来计算。
max 范数(max norm):这个范数表示向量中具有最大幅度得元素的绝对值,用 $L^\infty$ 范数表示,期形式为:
$$
||{\bf x}||\infty = \sqrt {\sum{(i,j)} {\bf A}^ 2_{i,j}}
$$
两个向量的点积(dot product)也可以用范数来表示。具体地,
$$
\bf x \top y = ||x||_2||y||_2 \cos \theta
$$
2.6 特殊类型的矩阵和向量
对角矩阵(diagonal matrix) 只在主对角线上含有非零元素,其它位置都是零。矩阵 $\bf D$ 是对角矩阵,当且仅当 $\forall i \neq j, {\bf D}_{i,j} = 0$ ,用 $diag(\bf v)$ 表示一个对角元素由向量 $\bf v$ 中元素给定的对角矩阵。
对称(symmetric) 矩阵是任意转置和自己相等的矩阵:
$$
\bf A = A \top
$$
即在矩阵 $\bf A$ 中,有 ${\bf A}{i,j}={\bf A}{j,i}$ 。
单位向量(unit vector) 是具有单位范数(unit norm) 的向量:
$$
||{\bf x}||_2 = 1
$$
如果 ${\bf x \top y } = 0$ ,那么向量 $\bf x$ 和向量 $\bf y$ 互相正交(orthogonal)。如果两个向量都有非零范数,那么表示这两个向量之间的夹角是90 度。在$\Bbb R^n$ 中,至多有$n$ 个范数非零向量互相正交。如果这些向量不仅互相正交,并且范数都为1,那么我们称它们是标准正交(orthonormal) 。
正交矩阵(orthonormal matrix) 是指行向量是标准正交的,列向量是标准正交的方阵:
$$
\bf A \top A = A A\top = I
$$
这意味着
$$
\bf A^{-1} = A\top
$$
所以正交矩阵受到关注是因为求逆计算代价小。需要注意正交矩阵的定义。反直觉地,正交矩阵的行向量不仅是正交的,还是标准正交的。对于行向量或列向量互相正交但不是标准正交的矩阵没有对应的专有术语。