分类目录:《算法设计与分析》总目录
有些特殊类型的向量和矩阵是特别有用的,本文将介绍它们。
单位向量是具有单位范数的向量:
∣
∣
x
∣
∣
2
=
1
||x||_2=1
∣∣x∣∣2=1
如果
x
T
y
=
0
x^Ty=0
xTy=0,那么向量
x
x
x和向量
y
y
y互相正交。如果两个向量都有非零范数,那么这两个向量之间的夹角是90度。在
R
n
R^n
Rn中,至多有
n
n
n个范数非零向量互相正交。如果这些向量不仅互相正交,并且范数都为1,那么我们称它们
是标准正交。
正交矩阵是指行向量和列向量是分别标准正交的方阵:
A
T
A
=
A
A
T
=
I
A^TA=AA^T=I
ATA=AAT=I
这意味着
A
T
=
A
−
1
A^T=A^{-1}
AT=A−1
所以正交矩阵受到关注是因为求逆计算代价小。我们需要注意正交矩阵的定义。违反直觉的是,正交矩阵的行向量不仅是正交的,还是标准正交的。对于行向量或列向量互相正交但不是标准正交的矩阵,没有对应的专有术语。
对角矩阵指只在主对角线上含有非零元素,其他位置都是零。
形式上,矩阵 D D D是对角矩阵,当且仅当对于所有的 i ≠ j i\neq j i=j我们有 D i , j = 0 D_{i, j}=0 Di,j=0。前文我们已经看到过一个对角矩阵:单位矩阵,对角元素全部是1。我们用 d i a g ( v ) diag(v) diag(v)表示一个对角元素由向量 v v v中元素给定的对角方阵。对角矩阵受到关注的部分原因是对角矩阵的乘法计算很高效。计算乘法 d i a g ( v ) x diag(v)x diag(v)x,我们只需要将 x x x中的每个元素 x i x_i xi放大 v i v_i vi倍。换言之, d i a g ( v ) x = v ⊙ x diag(v)x=v\odot x diag(v)x=v⊙x。计算对角方阵的逆矩阵也很高效。对角方阵的逆矩阵存在,当且仅当对角元素都是非零值,在这种情况下, d i a g ( v ) − 1 = d i a g ( [ 1 v 1 , 1 v 2 , ⋯ , 1 v n ] T ) diag(v)^{-1}=diag([\frac{1}{v_1}, \frac{1}{v_2}, \cdots, \frac{1}{v_n}]^T) diag(v)−1=diag([v11,v21,⋯,vn1]T)。
在很多情况下,我们可以根据任意矩阵导出一些通用的机器学习算法;但通过将一些矩阵限制为对角矩阵,我们可以得到计算代价较低的算法。
不是所有的对角矩阵都是方阵。长方形的矩阵也有可能是对角矩阵。非方阵的对角矩阵没有逆矩阵,但我们仍然可以高效地计算它们的乘法。对于一个长方形对角矩阵 D D D而言,乘法 D x Dx Dx会涉及到 x x x中每个元素的缩放,如果 D D D是瘦长型矩阵,那么在缩放后的末尾添加一些零;如果 D D D是胖宽型矩阵,那么在缩放后去掉最后一些元素。
对称矩阵是转置和自己相等的矩阵:
A
=
A
T
A=A^T
A=AT
当某些不依赖参数顺序的双参数函数生成元素时,对称矩阵经常会出现。例如,如果 A A A是一个距离度量矩阵, A i , j A_{i, j} Ai,j表示点 i i i到点 j j j的距离,那么 A i , j = A j , i A_{i, j}=A_{j, i} Ai,j=Aj,i,因为距离函数是对称的。