对矩阵乘法的深入理解
Contents
对矩阵乘法的深入理解#
本文是对《机器学习数学基础》第2章2.1.5节矩阵乘法内容的补充和扩展。通过本节内容,在原书简要介绍矩阵乘法的基础上,能够更全面、深入理解矩阵乘法的含义。
在2.1.5节中,给出了矩阵乘法最基本的定义,令矩阵 \(\pmb{A} = (a_{ij})_{m\times r}\) 和矩阵 \(\pmb{B}=(b_{ij})_{r\times n}\) 相乘,定义乘积 \(\pmb{AB}\) 中 \((\pmb{AB})_{ij}\) 为:
这种定义的方法便于手工计算——手工计算,在计算机流行的现在,并非特别重要。所以,现在更应该深入理解矩阵乘法的数学含义,所以,再拓展如下内容。
1. 以列向量作为计算单元#
1.1 定义 \(\pmb{Ax}\)#
以列向量表示矩阵 \(\pmb{A}=\begin{bmatrix}\pmb{a}_1&\cdots&\pmb{a}_n\end{bmatrix}\) ,设一维列向量 \(\pmb{x}=\begin{bmatrix}x_1\\\vdots\\x_2\end{bmatrix}\) 。
矩阵与向量的乘法 \(\pmb{Ax}\) 定义为 \(\pmb{A}\) 的列向量 \(\pmb{a}_1,\cdots, \pmb{a}_n\) 的线性组合,\(x_1,\cdots,x_2\) 为组合的系数或权重,即:
按照习惯,把标量写在向量前面(左边):
根据这种定义,比较容易理解线性方程与子空间、线性无关等有关概念。
例1
\(\pmb{Ax}=0\) ,如果只有平凡解,即 \(\pmb{x}=0\) ,根据(1.1)式可知,\(\pmb{A}\) 的列向量线性无关(关于线性相关和线性无关的概念,请参阅《机器学习数学基础》第1章1.2.3节)。
例2
对于 \(\pmb{Ax}=\pmb{b}\) 有解的充要条件,根据(1.1)式可知:
即 \(\pmb{b}\) 是 \(\pmb{a}_1,\cdots,\pmb{a}_n\) 的线性组合,所以 \(\pmb{b}\) 应该属于 \(\pmb{A}\) 的列空间。
1.2 定义 \(\pmb{AB}\)#
利用(1.1)式的理解,可以显示 \(T(x)=\pmb{Ax}\) 是一个线性变换\(^{[2]}\) 。
设线性变换 \(T:\mathbb{F}^p\to\mathbb{F}^n\) 和 \(S:\mathbb{F}^n\to\mathbb{F}^m\) ,将它们连接在一起,如下图所示:
其中 \(\pmb{x}\in\mathbb{F}^p, T(\pmb{x})\in\mathbb{F}^n,S(T(\pmb{x}))\in\mathbb{F}^n\) 。用 \(S\circ T\) 表示复合线性变换(即符合函数,参阅函数),即:
可以表示为下图:
设线性变换 \(T\) 的矩阵为 \(n\times p\) 阶矩阵 \(B\) ,线性变换 \(S\) 的矩阵为 \(m\times n\) 解矩阵 \(A\) ,则:
所以,符合线性变换 \(S\circ T\) 的矩阵由 \(\pmb{A}\) 和 \(\pmb{B}\) 来决定。
若定义:\(\pmb{P}=\pmb{AB}\) ,即矩阵乘法。
令 \(\pmb{B}\) 的列向量为 \(\pmb{b}_1,\cdots,\pmb{b}_p\) ,根据(1.1)式定义,可得:
则对于任意 \(\pmb{x}\in\mathbb{F}^p\) ,有:
令上式等于 \((\pmb{AB})\pmb{x}\) ,由于 \(\pmb{x}\) 是一个任意向量,所以:
所以,有 \(\pmb{Px}=\pmb{A}(\pmb{Bx})\) 。由此可知,\(S\circ T\) 的矩阵即为 \(\pmb{AB}\) ,并且说明亦为线性变换。
2. 以行向量作为计算单元#
对于(1.2)式,等号两边同时取转置,得:
又因为:\((\pmb{AB})^T=\pmb{B}^T\pmb{A}^T\) ,故:
如果将 \(\pmb{B}^T\) 和 \(\pmb{A}^T\) 分别用 \(\pmb{A}\) 和 \(\pmb{B}\) 代替,则可得以行为计算单元的矩阵乘法。
定义 \(\pmb{AB}\) 的第 \(i\) 行等于 \(\pmb{B}\) 的行向量的线性组合,\(row_i(\pmb{A})\) 的对应元即组合权重为:
或者写作:
在一般情况下,都是用列向量作为计算单元,用行向量的时候较少,除非特别说明或者某些特别用途。
3. 以行列展开#
对于两个矩阵的乘法 \(\pmb{AB}\) ,还可以表示成多个矩阵的和:
这种方式的展开计算,在矩阵分解中会有重要应用(参阅《机器学习数学基础》第3章3.5.2节特征分解)。
设 \(\pmb{A}\) 是实对称矩阵,则 \(\pmb{A}=\pmb{UDU}^T\) ,其中 \(\pmb{D}\) 为对角矩阵,\(\pmb{D}=diag(d_1,\cdots,d_n)\) ,有:
此外,还可以分块矩阵为单元,实现矩阵乘法计算,而事实上,上述以行或者列向量作为计算单元,亦可视为分块矩阵。此处不单独演示分块矩阵的计算。
在以上几种对矩阵乘法的理解中,其本质是采用不同的计算单元。这有助于我们将其他有关概念综合起来,从而加深对矩阵乘法的含义理解。
关于矩阵乘法的计算,除了手工计算之外,在《机器学习数学基础》中有详细的用Python实现计算的各种方法,也可以参阅[3]了解有关计算实现函数。
参考文献#
[1]. https://ccjou.wordpress.com/2009/03/11/矩陣乘積的現代觀點/
[2]. https://ccjou.wordpress.com/2015/07/28/基本矩陣運算的定義/
[3]. 跟老齐学Python:数据分析. 齐伟. 北京:电子工业出版社