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