算法工程师的数学基础|线性代数中的矩阵

【算法工程师的数学基础】系列将会从线性代数、微积分、数值优化、概率论、信息论五个方面进行介绍,感兴趣的欢迎关注【搜索与推荐Wiki】公众号,获得最新文章。

《算法工程师的数学基础》已更新:

线性代数主要包含向量、向量空间(或称线性空间)以及向量的线性变换和有限维的线性方程组。本篇文章主要介绍线性代数部分中的矩阵知识。


线性映射

线性映射(linear map) 是指从线性空间VV到线性空间WW的一个映射函数:fWf \rightarrow W,并满足:对于VV中任何两个向量uuvv以及任何标量cc,有:
f(u+v)=f(u)+f(v)f(cv)=cf(v) f(u+v) = f(u) + f(v) \\ f(cv) = cf(v)
两个有限维欧式空间的映射函数f:RnRmf: R^n \rightarrow R^m可以表示为:
y=Ax=Δ[a11x1+a12x2+...+a1nxna21x1+a22x2+...+a2nxn...am1x1+am2x2+...+amnxn] y = Ax \overset{ \Delta }{=} \begin{bmatrix} a_{11} x_1 + a_{12}x_2 + ... + a_{1n}x_n \\ a_{21} x_1 + a_{22}x_2 + ... + a_{2n}x_n \\ . \\ . \\ . \\ a_{m1} x_1 + a_{m2}x_2 + ... + a_{mn}x_n \end{bmatrix}
其中AA定义为mnm*n的矩阵(matrix),是一个由mmnn列元素排列成的矩形阵列。一个矩阵的第ii行,第jj列上的元素表示为AijA_{ij}

矩阵操作

如果AABB都是 mnm*n的矩阵,则AABB的加法结果也是 mnm*n的矩阵,其每个元素都是AABB对应位置元素相加。

[A+B]ij=aij+bij [A+B]_{ij} = a_{ij} + b_{ij}

乘积 假设有两个AABB分别表示两个线性映射g:RmRkg: R^m \rightarrow R^kf:RnRmf: R^n \rightarrow R^m,则其复合线性映射:
(gf)(x)=g(f(x))=g(Bx)=A(B(x))=(AB)(x) (g \circ f)(x) = g(f(x)) = g(Bx) = A(B(x)) = (AB)(x)
其中ABAB表示矩阵AABB的乘积,定义为:
[AB]ij=k=1maikbkj [AB]_{ij} = \sum_{k=1}^{m}a_{ik}b_{kj}
两个矩阵的乘积仅当第一个矩阵的列数和第二个矩阵的行数相等时才能定义。如果AAkmk*mBBmnm*n,这ABA*B的结果是一个knk*n的矩阵。

矩阵的乘法满足结合律和分配律:

  • 结合律:(AB)C=A(BC)(AB)C = A(BC)
  • 分配律:(A+B)C=AC+BC,C(A+B)=CA+CB(A+B)C = AC+BC, C(A+B)=CA + CB

Hadamard积 AABB的Hadamard积,也称为逐点乘积,为AABB中对应的元素相乘。
[AB]ij=aijbij [A \odot B]_{ij} = a_{ij} b_{ij}
一个标量cc与矩阵AA乘积为AA的相应位置的元素与cc的乘积:
[cA]ij=caij [cA]_{ij} = ca_{ij}

转置 mnm*n矩阵AA的转置(transposition)是一个nmn*m的矩阵,记为ATA^TATA^T的第ii行第jj列的元素是原矩阵AA的第jj行第ii列的元素
[AT]ij=[A]ji [A^T]_{ij}=[A]_{ji}

向量化 矩阵的向量化是将矩阵表示为一个列向量。这里vec是向量化算子。设A=[aij]mnA=[a_{ij}]_{m*n},则:
vec(A)=[a11,a21,...,am1,a12,a22,...,am2,...,a1n,...,amn]T vec(A) = [a_{11}, a_{21},...,a_{m1},a_{12},a_{22},...,a_{m2},...,a_{1n},...,a{mn}]^T

方块矩阵AA的对角线元素之和称为它得迹(trace),记为tr(A)tr(A)。尽管矩阵得乘法不满足交换律,但它们得迹相同,即tr(AB)=tr(BA)tr(AB)=tr(BA)

相信读者看到这里,肯定会有疑问,这么简单的「迹」,有什么特殊意义的?因为迹是有所有矩阵特征值的和,在求矩阵特征值的时候特别重要。

行列式 方块矩阵AA的行列式是一个将其映射到标量的函数,记作det(A)det(A)A|A|。行列式可以看做是有向面积或体积的概念在欧氏空间的推广。在nn维欧式空间中,行列式描述的是一个线性变换对体积所造成的影响。

一个nnn*n的方块矩阵AA的行列式定义为:
det(A)=σSnsgn(σ)i=1nai,σ(i) det(A)=\sum_{\sigma \in S_n} sgn(\sigma) \prod_{i=1}^{n} a_{i,\sigma(i)}
其中 SnS_n{1,2,...,n}\{ 1,2,...,n \}的所有排列的集合,σ\sigma是一种一个排列,σ(i)\sigma(i)是元素ii在排列σ\sigma中的位置,sgn(σ)sgn(\sigma)表示排列σ\sigma的符号差,定义为:
(σ)={10 (\sigma) = \left\{\begin{matrix} 1 \\ 0 \end{matrix}\right.
σ\sigma中的逆序对有偶数个是为1,当σ\sigma中的逆序对有奇数个是0

其中逆序对的定义为:在排列σ\sigma中,如果有序数对(i,j)(i,j)满足1i<jn1 \leq i < j \leq nσ(i)>σ(j)\sigma(i) > \sigma(j),则其为σ\sigma的一个逆序对。

一个矩阵AA的列秩是AA的线性无关的列向量数量,行秩是AA的线性无关的行向量数量。一个矩阵的列秩和行秩总是相等的,简称为秩(rank)。

一个mnm*n的矩阵的秩最大为min(m,n)min(m,n)。两个句子的乘积ABAB的秩rank(AB)min(rank(A),rank(B))rank(AB) \leq min( rank(A), rank(B))

范数 矩阵的范数有很多种形式,其中常用的lpl_p范数定义为:
Ap=(i=1mj=1naijp)1/p ||A||_p = ( \sum_{i=1}^{m} \sum_{j=1}^{n} |a_{ij}|^p )^{1/p}

矩阵类型

对称矩阵(symmetric) 指其转置等于自己的矩阵,即满足A=ATA=A^T

稀疏矩阵(sparse matrix) 矩阵中分布有大量的元素 0,即非 0 元素非常少,这类矩阵称为稀疏矩阵。如下:
[010002010] \begin{bmatrix} 0 & 1 & 0 \\ 0& 0 & 2 \\ 0& 1 & 0 \end{bmatrix}

上(下)三角矩阵 一个 mmm*m的矩阵的对角线称为主对角线,如果除主对角线之外的元素全部为0,则主对角线下的矩阵称为上三角矩阵,主对角线上的矩阵称为下三角矩阵

算法工程师的数学基础|线性代数中的矩阵

对角矩阵(diagonal matrix) 是一个主对角线之外的元素皆为0的矩阵。对角线上的元素可以为0或其他值。一个nnn*n的对角矩阵AA满足:
[A]ij=0  ifij,i,j{1,...,n} [A]_{ij} = 0 \, \, if \, i\neq j, \forall i,j \in \{1,...,n\}
对角矩阵AA也可以记为diag(a)diag(a)aa为一个nn维向量,并满足:
[A]ij=ai [A]_{ij} = a_i
nnn*n的对角矩阵A=diag(a)A=diag(a)nn维向量bb的乘积为一个nn维向量
Ab=diag(a)b=ab Ab = diag(a)b = a \odot b
其中$\odot 表示点乘,即(a \odot b)_i = a_i b_i$

单位矩阵(identity matrix) 是一种特殊的对角矩阵,其主对角线元素为1,其余元素为0。 nn阶单位矩阵InI_n,是一个nnn *n的方块矩阵,可以记为In=diag(1,1,1,...)I_n=diag(1,1,1,...)

一个mnm*n的矩阵AA和单位矩阵的乘积等于其本身
AIn=ImA=A AI_n = I_mA = A

逆矩阵 对于一个 nnn*n的方块矩阵AA,如果存在另一个方块矩阵BB使得
AB=BA=In AB = BA = I_n
为单位矩阵,则称AA是可逆的。矩阵BB称为AA的逆矩阵(inverse matrix),记为A1A^{-1}

一个方阵的行列式等于0当且仅当该方阵不可逆。

正定矩阵(positive-definite matrix) 对于一个nnn*n的对称矩阵AA,如果对于所有的非零向量xRnx \in R^n,都满足xTAx>0x^T A_x > 0,则AA为正定矩阵。如果xTAx0x^T A_x \geq 0,则AA是半正定矩阵。

正交矩阵(orthogonal matrix) 正交矩阵 AA为一个方块矩阵,其逆矩阵等于其转置矩阵。

AT=A1 A^T = A^{-1}
等价于AT=AAT=InA^T=AA^T=I_n

Gram矩阵 向量空间中一组向量v1,v2,...,vnv_1, v_2, ..., v_n的Gram矩阵,GG是内积的对称矩阵,其元素GijG_{ij}viTvjv_i^T v_j

特征值与特征矢量

如果一个标量 λ\lambda 和一个非零向量vv满足:
Av=λv Av = \lambda v
λ\lambdavv分别称为矩阵AA的特征值(eigenvalue)和特征向量(eigenvector)

矩阵分解

一个矩阵通常可以用一些比较简单的矩阵来表示,称为矩阵分解(matrix decomposition,matrix factorization)

奇异值分解 一个mnm*n的矩阵AA的奇异值分解(Singualr Value Decomposition,SVD)定义为:
A=UDVT A = UDV^T
其中U,VU,V 分别为mm,nnm*m, n*n的正交矩阵,DDmnm*n的对角矩阵,其对角线上的元素称为奇异值(singular value)

特征分解 一个nnn*n的方块矩阵AA的特征分解(Eigendecomposition)定义为:
A=QBQ1 A= QBQ^{-1}
其中QQnnn*n的方块矩阵,其每一列都为AA的特征向量,BB为对角阵,其每一个对角元素AA的特征值。

如果AA为对称矩阵,则AA可以被分解为:
A=QBQT A = QBQ^T
其中 QQ为正交阵。

好了,线性代数中的矩阵介绍和相关概念已经介绍完毕了,欢迎转发分享,让更多的人看到!


算法工程师的数学基础|线性代数中的矩阵
扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!

算法工程师的数学基础|线性代数中的矩阵算法工程师的数学基础|线性代数中的矩阵