机器学习数学基础:17.矩阵初等变换
一、矩阵初等变换基础
基本概念
- 初等矩阵:由单位矩阵经过一次初等变换得到的矩阵。初等变换有三种类型,分别是交换两行(列)、某一行(列)乘以非零常数、某一行(列)乘以一个数加到另一行(列)上,所以对应的初等矩阵也分这三类。
- 矩阵乘法与变换关系:“左行右列”揭示的是矩阵乘法和初等变换之间的内在联系。矩阵 A A A左乘或右乘初等矩阵,会引发 A A A相应的行或列的变化。
具体例子
左行情况
设矩阵 A = [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] A \ = \begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix} A = a11a21a31a12a22a32a13a23a33 。
- 交换两行的初等矩阵作用:若单位矩阵 E = [ 1 0 0 0 1 0 0 0 1 ] E\ =\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\end{bmatrix} E = 100010001 交换第 1 1 1行和第 2 2 2行得到初等矩阵 P 1 = [ 0 1 0 1 0 0 0 0 1 ] P_1\ =\begin{bmatrix}0&1&0\\1&0&0\\0&0&1\end{bmatrix} P1 = 010100001 , P 1 A = [ 0 1 0 1 0 0 0 0 1 ] [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] = [ a 21 a 22 a 23 a 11 a 12 a 13 a 31 a 32 a 33 ] P_1A\ =\begin{bmatrix}0&1&0\\1&0&0\\0&0&1\end{bmatrix}\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix}\ =\begin{bmatrix}a_{21}&a_{22}&a_{23}\\a_{11}&a_{12}&a_{13}\\a_{31}&a_{32}&a_{33}\end{bmatrix} P1A = 010100001 a11a21a31a12a22a32a13a23a33 = a21a11a31a22a12a32a23a13a33 , A A A的第 1 1 1行和第 2 2 2行交换了。
- 某行乘以非零常数的初等矩阵作用:单位矩阵 E E E的第 2 2 2行乘以非零常数 k k k得到初等矩阵 P 2 = [ 1 0 0 0 k 0 0 0 1 ] P_2\ =\begin{bmatrix}1&0&0\\0&k&0\\0&0&1\end{bmatrix} P2 = 1000k0001 , P 2 A = [ 1 0 0 0 k 0 0 0 1 ] [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] = [ a 11 a 12 a 13 k a 21 k a 22 k a 23 a 31 a 32 a 33 ] P_2A\ =\begin{bmatrix}1&0&0\\0&k&0\\0&0&1\end{bmatrix}\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix}\ =\begin{bmatrix}a_{11}&a_{12}&a_{13}\\ka_{21}&ka_{22}&ka_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix} P2A = 1000k0001 a11a21a31a12a22a32a13a23a33 = a11ka21a31a12ka22a32a13ka23a33 , A A A的第 2 2 2行乘以了 k k k。
- 某行乘以数加到另一行的初等矩阵作用:单位矩阵 E E E的第 1 1 1行乘以 m m m加到第 3 3 3行得到初等矩阵 P 3 = [ 1 0 0 0 1 0 m 0 1 ] P_3\ =\begin{bmatrix}1&0&0\\0&1&0\\m&0&1\end{bmatrix} P3 = 10m010001 , P 3 A = [ 1 0 0 0 1 0 m 0 1 ] [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] = [ a 11 a 12 a 13 a 21 a 22 a 23 m a 11 + a 31 m a 12 + a 32 m a 13 + a 33 ] P_3A\ =\begin{bmatrix}1&0&0\\0&1&0\\m&0&1\end{bmatrix}\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix}\ =\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\ma_{11}+a_{31}&ma_{12}+a_{32}&ma_{13}+a_{33}\end{bmatrix} P3A = 10m010001 a11a21a31a12a22a32a13a23a33 = a11a21ma11+a31a12a22ma12+a32a13a23ma13+a33 , A A A的第 1 1 1行乘以 m m m加到了第 3 3 3行。
右列情况
同样设矩阵 A = [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] A \ = \begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix} A = a11a21a31a12a22a32a13a23a33 。
- 交换两列的初等矩阵作用:单位矩阵 E E E交换第 1 1 1列和第 3 3 3列得到初等矩阵 Q 1 = [ 0 0 1 0 1 0 1 0 0 ] Q_1\ =\begin{bmatrix}0&0&1\\0&1&0\\1&0&0\end{bmatrix} Q1 = 001010100 , A Q 1 = [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] [ 0 0 1 0 1 0 1 0 0 ] = [ a 13 a 12 a 11 a 23 a 22 a 21 a 33 a 32 a 31 ] AQ_1\ =\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix}\begin{bmatrix}0&0&1\\0&1&0\\1&0&0\end{bmatrix}\ =\begin{bmatrix}a_{13}&a_{12}&a_{11}\\a_{23}&a_{22}&a_{21}\\a_{33}&a_{32}&a_{31}\end{bmatrix} AQ1 = a11a21a31a12a22a32a13a23a33 001010100 = a13a23a33a12a22a32a11a21a31 , A A A的第 1 1 1列和第 3 3 3列交换了。
- 某列乘以非零常数的初等矩阵作用:单位矩阵 E E E的第 2 2 2列乘以非零常数 n n n得到初等矩阵 Q 2 = [ 1 0 0 0 n 0 0 0 1 ] Q_2\ =\begin{bmatrix}1&0&0\\0&n&0\\0&0&1\end{bmatrix} Q2 = 1000n0001 , A Q 2 = [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] [ 1 0 0 0 n 0 0 0 1 ] = [ a 11 n a 12 a 13 a 21 n a 22 a 23 a 31 n a 32 a 33 ] AQ_2\ =\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix}\begin{bmatrix}1&0&0\\0&n&0\\0&0&1\end{bmatrix}\ =\begin{bmatrix}a_{11}&na_{12}&a_{13}\\a_{21}&na_{22}&a_{23}\\a_{31}&na_{32}&a_{33}\end{bmatrix} AQ2 = a11a21a31a12a22a32a13a23a33 1000n0001 = a11a21a31na12na22na32a13a23a33 , A A A的第 2 2 2列乘以了 n n n。
- 某列乘以数加到另一列的初等矩阵作用:单位矩阵 E E E的第 3 3 3列乘以 s s s加到第 1 1 1列得到初等矩阵 Q 3 = [ 1 0 s 0 1 0 0 0 1 ] Q_3\ =\begin{bmatrix}1&0&s\\0&1&0\\0&0&1\end{bmatrix} Q3 = 100010s01 , A Q 3 = [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] [ 1 0 s 0 1 0 0 0 1 ] = [ a 11 + s a 13 a 12 a 13 a 21 + s a 23 a 22 a 23 a 31 + s a 33 a 32 a 33 ] AQ_3\ =\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix}\begin{bmatrix}1&0&s\\0&1&0\\0&0&1\end{bmatrix}\ =\begin{bmatrix}a_{11}+sa_{13}&a_{12}&a_{13}\\a_{21}+sa_{23}&a_{22}&a_{23}\\a_{31}+sa_{33}&a_{32}&a_{33}\end{bmatrix} AQ3 = a11a21a31a12a22a32a13a23a33 100010s01 = a11+sa13a21+sa23a31+sa33a12a22a32a13a23a33 , A A A的第 3 3 3列乘以 s s s加到了第 1 1 1列。
背后原理
从矩阵乘法的定义来看,左乘时,初等矩阵的行与 A A A的列进行运算,会改变 A A A的行;右乘时, A A A的行与初等矩阵的列进行运算,会改变 A A A的列。这一性质在矩阵求逆、解线性方程组、矩阵的等价变换等很多线性代数的问题中都有重要应用。
二、初等行变换求逆矩阵
(一)原理与方法
在矩阵家族中,可逆矩阵是一群特殊的成员。对于一个 n × n n \times n n×n的矩阵 A A A,如果它可逆,那就意味着存在另一个矩阵 A − 1 A^{-1} A−1,使得 A A A乘 A − 1 A^{-1} A−1以及 A − 1 A^{-1} A−1乘 A A A都等于单位矩阵 E E E(单位矩阵就是主对角线元素都是 1 1 1,其他元素都是 0 0 0的方阵,比如 2 × 2 2 \times 2 2×2的单位矩阵是 ( 1 0 0 1 ) \begin{pmatrix}1&0\\0&1\end{pmatrix} (1001))。
可逆矩阵 A A A还有两个重要特点:一是它必然是满秩的。秩可以简单理解为矩阵中“有效”的行或列的数量,满秩就是说矩阵的秩等于它的行数(也是列数,因为是方阵),即 r a n k ( A ) = n rank(A)\ =n rank(A) =n。二是它必然与 n × n n \times n n×n的单位矩阵 E E E等价,也就是说可以通过一系列的初等变换把 A A A变成 E E E,反过来也可以把 E E E变成 A A A。
当矩阵 A A A可逆时,数学上可以证明存在有限个初等矩阵 P 1 , P 2 , ⋯ , P n P_1,P_2,\cdots,P_n P1,P2,⋯,Pn,使得 P n ⋯ P 2 P 1 A = E P_n \cdots P_2P_1A \ = E Pn⋯P2P1A =E。这里的每个 P i P_i Pi都对应着一次初等行变换,就像一个个小魔法步骤。而且还有 P n ⋯ P 2 P 1 E = A − 1 P_n \cdots P_2P_1E \ = A^{-1} Pn⋯P2P1E =A−1,这就是用初等行变换求逆矩阵的核心原理。
在实际计算中,我们用一种巧妙的办法:把矩阵 A A A和单位矩阵 E E E写成一个“并排”的增广矩阵 ( A ∣ E ) (A|E) (A∣E)。然后对这个增广矩阵进行初等行变换,在变换过程中,左边的 A A A会慢慢发生变化。当我们通过一系列变换把左边的 A A A变成单位矩阵 E E E时,右边原来的单位矩阵 E E E就会变成 A A A的逆矩阵 A − 1 A^{-1} A−1,也就是 ( A ∣ E ) → 初等行变换 ( E ∣ A − 1 ) (A|E)\xrightarrow{初等行变换}(E|A^{-1}) (A∣E)初等行变换(E∣A−1)。
(二)举例说明
我们来看一个具体例子,设矩阵 A = ( 2 1 1 1 ) A \ = \begin{pmatrix}2&1\\1&1\end{pmatrix} A =(2111),现在求它的逆矩阵。
首先构造增广矩阵 ( 2 1 1 0 1 1 0 1 ) \begin{pmatrix}2&1&1&0\\1&1&0&1\end{pmatrix} (21111001),左边是 A A A,右边是 2 × 2 2 \times 2 2×2的单位矩阵。
然后开始进行初等行变换:
- 我们想把第一行的第一个元素变成 1 1 1,同时让第二行的第一个元素变成 0 0 0。所以先把第一行减去第二行的 2 2 2倍,计算过程是:第一行的第一个元素 2 − 2 × 1 = 0 2 - 2 \times 1 \ = 0 2−2×1 =0,第二个元素 1 − 2 × 1 = − 1 1 - 2 \times 1 \ = -1 1−2×1 =−1,第三个元素 1 − 2 × 0 = 1 1 - 2 \times 0 \ = 1 1−2×0 =1,第四个元素 0 − 2 × 1 = − 2 0 - 2 \times 1 \ = -2 0−2×1 =−2,这样矩阵就变成了 ( 0 − 1 1 − 2 1 1 0 1 ) \begin{pmatrix}0& - 1&1& - 2\\1&1&0&1\end{pmatrix} (01−1110−21)。
- 这时候第一行的第二个元素是 − 1 -1 −1,为了把它变成 1 1 1,我们把第一行乘以 − 1 -1 −1,得到 ( 0 × ( − 1 ) − 1 × ( − 1 ) 1 × ( − 1 ) − 2 × ( − 1 ) 1 1 0 1 ) = ( 0 1 − 1 2 1 1 0 1 ) \begin{pmatrix}0 \times (-1)& - 1 \times (-1)&1 \times (-1)& - 2 \times (-1)\\1&1&0&1\end{pmatrix}\ =\begin{pmatrix}0&1& - 1&2\\1&1&0&1\end{pmatrix} (0×(−1)1−1×(−1)11×(−1)0−2×(−1)1) =(0111−1021)。
- 接着,为了让第二行的第二个元素变成 0 0 0,我们把第二行减去第一行,计算得:第二行的第一个元素 1 − 0 = 1 1 - 0 \ = 1 1−0 =1,第二个元素 1 − 1 = 0 1 - 1 \ = 0 1−1 =0,第三个元素 0 − ( − 1 ) = 1 0 - (-1) \ = 1 0−(−1) =1,第四个元素 1 − 2 = − 1 1 - 2 \ = -1 1−2 =−1,矩阵就变成了 ( 0 1 − 1 2 1 0 1 − 1 ) \begin{pmatrix}0&1& - 1&2\\1&0&1& - 1\end{pmatrix} (0110−112−1)。
经过这些变换,左边的 A A A变成了单位矩阵 ( 1 0 0 1 ) \begin{pmatrix}1&0\\0&1\end{pmatrix} (1001),右边的矩阵就是 A A A的逆矩阵 A − 1 = ( 1 − 1 − 1 2 ) A^{-1} \ = \begin{pmatrix}1& - 1\\ - 1&2\end{pmatrix} A−1 =(1−1−12)。
三、矩阵的秩相关知识
(一)秩的求解与性质
矩阵的秩是描述矩阵“本质”的一个重要数字。我们可以通过初等行变换来找到它。具体做法是把矩阵通过初等行变换变成行阶梯型矩阵,行阶梯型矩阵中非零行的行数就是这个矩阵的秩。
矩阵的秩有一些很重要的性质:
- 转置不变性:矩阵转置后,它的秩不会改变。比如矩阵 A = ( 1 2 3 4 ) A \ = \begin{pmatrix}1&2\\3&4\end{pmatrix} A =(1324),它的转置 A T = ( 1 3 2 4 ) A^T \ = \begin{pmatrix}1&3\\2&4\end{pmatrix} AT =(1234), A A A和 A T A^T AT的秩是一样的。
- 同型矩阵关系:如果两个矩阵的行数和列数都相同(叫同型矩阵),并且它们的秩也相等,那它们在很多方面有相似的性质。
- 可逆变换不变性:可逆变换不会改变矩阵的秩。因为可逆变换其实就是一系列初等变换的组合,而初等变换不会改变矩阵的秩。
矩阵的秩还可以从其他角度理解,比如从有效方程的个数或者非零子式的最高阶数来定义,但不管哪种方式,得到的秩都是一样的。
(二)秩的运算规律
在矩阵的运算中,秩有一些有趣的规律,我们可以用三句话来记住:“秩越乘越小,越拼越大,分开加最大”。
- 秩越乘越小:当两个矩阵 A A A和 B B B相乘得到新矩阵 C = A B C \ = AB C =AB时, C C C的秩不会超过 A A A和 B B B中秩较小的那个。比如 A A A的秩是 3 3 3, B B B的秩是 2 2 2,那么 A B AB AB的秩最大就是 2 2 2。
- 越拼越大:要是把两个矩阵 A A A和 B B B拼接起来(可以横着拼或者竖着拼),得到的新矩阵的秩通常会比 A A A和 B B B各自的秩大。比如把 A A A和 B B B横着拼成 [ A ∣ B ] [A|B] [A∣B], [ A ∣ B ] [A|B] [A∣B]的秩一般会大于 A A A的秩和 B B B的秩。
- 分开加最大:当把两个矩阵分开相加时,它们秩的和能达到一种相对最大的情况。
还有一种特殊情况,当 A B = 0 AB \ = 0 AB =0(两个矩阵相乘等于零矩阵)时, A A A的秩加上 B B B的秩小于等于 n n n( n n n和矩阵的维度有关,比如 A A A是 m × n m \times n m×n矩阵, B B B是 n × p n \times p n×p矩阵,这里的 n n n就是 A A A的列数和 B B B的行数)。
四、矩阵运算的简化技巧
(一)简化矩阵乘法
在计算 A − 1 B A^{-1}B A−1B时,有个偷懒的好办法。我们把矩阵 A A A和 B B B横着拼在一起,形成一个新矩阵 [ A ∣ B ] [A|B] [A∣B],然后对这个新矩阵进行初等行变换。在变换过程中,当把左边的 A A A变成单位矩阵 E E E时,右边原来的 B B B就会变成 A − 1 B A^{-1}B A−1B的结果。这样就不用先单独算出 A − 1 A^{-1} A−1,再去乘 B B B,能省不少计算量呢。
(二)求解 X A = B XA \ = B XA =B形式
当遇到 X A = B XA \ = B XA =B这样的矩阵方程时,我们可以用转置的方法来解决。先把等式两边都转置,得到 A T X T = B T A^TX^T \ = B^T ATXT =BT。这时候,我们把 A T A^T AT和 B T B^T BT看成新的矩阵,构造增广矩阵 ( A T ∣ B T ) (A^T|B^T) (AT∣BT),然后对它进行初等行变换。当把左边的 A T A^T AT变成单位矩阵时,右边就会得到 X T X^T XT,最后再把 X T X^T XT转置一下,就得到我们要的矩阵 X X X啦。这就好像把一个复杂的问题转个身,变成我们熟悉的样子来解决。