在进行机器学习编程过程中,需要用到一些线性代数的基础知识,以便简化程序的编写,并且可以利用GPU的矩阵运算能力,提高运算效率。本文不作过多的理论解释,只是基于具体的例子来介绍一下矩阵运算的数学基础知识,以便备用。
首先介绍一下什么是矩阵,如下列出了3个矩阵,分别是3行2列,2行3列,3行4列的矩阵
两个矩阵的加法,简单描述就是用两个矩阵中相同位置的各个元素依次相加,继而得到一个新的矩阵。也因此,矩阵相加要求两个矩阵必须有相同的维度,比如下面两个矩阵就无法相加:
那么,知道了加法运算,减法就非常简单了,就是用两个矩阵中相同位置的各个元素依次相加即可。还是举个例子说明一下:
在了解矩阵之间的乘除法之前,我们先了解一下矩阵和标量(一个数字)的乘除法,先看一下乘法的例子:
非常简单,用矩阵的每个元素和标量相乘,即可得到相乘之后的新的矩阵。注意,矩阵和标量相乘,先后顺序无关,即:
除法与乘法类似,但是标量不能作为被除数,只可以用矩阵除以标量,例子如下:
接下来我们再来看一下矩阵与矩阵之间的乘法
矩阵与矩阵的乘法,对于矩阵的维度是有要求的,要求第一个矩阵的列数,必须等于第二个矩阵的行数,比如m×n的矩阵和n×t的矩阵相乘,则可以得到m×t的矩阵。由此也可以看出,矩阵之间的乘法是不服从乘法交换律的。那矩阵乘法是如何计算的呢,我们还是通过一个例子来看一下:
这是一个3×2的矩阵和一个2×1的矩阵相乘,因此会得到一个3×1的矩阵。运算的时候,第一个矩阵的第一行的每个元素,和第二个矩阵的第一例每个元素一次相乘后相加,作为结果矩阵的第一行的第一列。第一个矩阵的第二行的每个元素,和第二个矩阵的第一例每个元素一次相乘后相加,作为结果矩阵的第二行的第一列,依次类推。
而对于如下3×2的矩阵和 2×3的矩阵相乘,则会得到一个3×3的矩阵。可以理解为一个3×2的矩阵,分别和三个3×1的矩阵(第二个矩阵的三列)相乘,得到的三个3×1的矩阵分别作为结果矩阵的三列。
单位矩阵
对角线为1,而其他元素都为0的矩阵,就称作单位矩阵,单位矩阵一般可以用大写字母 I 表示。如下就是几个单位矩阵,分别是2×2维,3×3维,4×4维
单位矩阵的特性也很简单,就是与任何一个维度和单位矩阵相同的矩阵A相乘,其结果都还是等于这个矩阵A,这非常类似于标量数字1。
逆矩阵
有了单位矩阵的概念,我们还可以说说什么是逆矩阵。简单来说,如果矩阵A和矩阵B相乘,能够得到一个单位矩阵 I,那么就可以称B是A的逆矩阵,也可以说A是B的逆矩阵。
对于某些矩阵,不存在逆矩阵,比如元素全为0的矩阵,这种没有逆矩阵的矩阵,称为奇异矩阵,或者退化矩阵。
矩阵的转置
如果我们把一个矩阵A的行、列互换,即可得到A的转置矩阵。如下图所示: