发布时间:2023-04-20 文章分类:电脑百科 投稿人:王小丽 字号: 默认 | | 超大 打印

  【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法💭 写在前面:我们先介绍线性方程体系的基本概念和矩阵表示方法,矩阵的定义、加法、乘法、逆矩阵、转置和标量乘法等。然后讲解如何解决线性方程组问题,包括解集形式、行阶梯形矩阵、计算逆置和解决线性方程组的算法等。本节将补充线性代数的基础知识,为后续的机器学习打好基础。

📜 文章目录:

Ⅰ. 线性方程体系(Systems of Linear Equations)

0x00 介绍

0x01 矩阵表示(Matrix Representation)

Ⅱ. 矩阵(Matrices)

0x00 矩阵的定义(Matrix: Definition)

0x01 矩阵加法与乘法

0x02 身份矩阵和矩阵属性(Identity Matrix and Matrix Properties)

0x03 逆矩阵和转置(Inverse and Transpose)

0x04 标量乘法(Scalar Multiplication)

Ⅲ. 解线性方程组问题(Solving Systems of Linear Equations)

0x00 解集形式

0x01 General = Particular + Homogeneous

0x02 行阶梯形矩阵(Row-Echelon Form)

0x03 计算逆置(Calculating the Inverse)

0x04 解决线性方程组的算

Ⅰ. 线性方程体系(Systems of Linear Equations)

0x00 介绍

我们先看看什么是代数:代数即一组对象、一组操作这些对象的规则或操作。

线性代数 (Linear algebra):对象:vectors  【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法    操作符:它们的加法 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 和标量乘法 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

例子:几何矢量、多项式、音频信号、【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 元素。

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

对于未知变量  【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

三种情况的解决方案:

无解 (No solution):

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

惟一解 (Unique solution) :

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

 无穷多解 (Infinitely many solutions) :

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

几何解释:

在一个有两个变量 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 的线性方程组中,每个线性方程都在 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 平面上定义了一条线。

由于线性方程组的解必须同时满足所有方程,所以解集是这些线的交点。

这个交集可以是一条线(若线性方程描述的是同一条线),一个点,或者是空的(当线是平行的)。

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

0x01 矩阵表示(Matrix Representation)

一个线性方程的集合

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

矩阵表示:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

理解 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 是回答关于这个线性系统 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 的各种问题的关键。

Ⅱ. 矩阵(Matrices)

0x00 矩阵的定义(Matrix: Definition)

矩阵是一个按照矩形排列的数学对象,由一组数按照固定的行列顺序排列而成。

对于 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法,实值 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 是元素 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 的 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 元组,【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法是根据由 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 行和 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 列组成的矩形方案排序(通常用方括号或圆括号来表示):

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

按照惯例,【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 矩阵称为行,【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 矩阵称列。这些特殊矩阵也称为 行 / 列向量。

矩阵实值的集合通常表示为 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 ,其中 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 和 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 分别表示矩阵的行数和列数,【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 表示实数集合。因此,【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 表示由 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 行 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 列实数元素构成的矩阵集合。

例如,下面是一个 2x3 的实数矩阵:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 是所有 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 矩阵实值的集合,通过堆叠矩阵的所有 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 列转换为长矢量,【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 可等价表示为 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 :

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

矩阵在数学中有着广泛的应用,例如线性代数、微积分、概率论等领域。其中,矩阵在线性代数中扮演着重要的角色,被用来表示线性变换和解决线性方程组等问题。

0x01 矩阵加法与乘法

加法:矩阵加法是指将两个相同维度的矩阵按照相同位置的元素相加得到一个新的矩阵。

需要注意的是,两个矩阵相加的前提是它们的维度相同,即行数和列数都相等。

对于两个矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

乘法:对于两个矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法,其乘积 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 的元素 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 为:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

比如:(前行乘后列)

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

代码演示:矩阵的加法

import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6]])    # 定义矩阵 A
B = np.array([[7, 8, 9], [10, 11, 12]]) # 定义矩阵 B
C = A + B
print("矩阵 A:")
print(A)
print("矩阵 B:")
print(B)
print("矩阵 C(A + B):")
print(C)

🚩 运行结果如下:

矩阵 A:
[[1 2 3]
 [4 5 6]]
矩阵 B:
[[ 7  8  9]
 [10 11 12]]
矩阵 C(A + B):
[[ 8 10 12]
 [14 16 18]]

0x02 身份矩阵和矩阵属性(Identity Matrix and Matrix Properties)

身份矩阵:其对角线上的元素均为 1,其余元素均为 0 的矩阵,我们称之为身份矩阵 (Identity Matrix, IM)。身份矩阵是唯一的,也就是说,任何一个 n 阶方阵,如果其对角线上的元素均为 1,其余元素均为 0,那么它都是一个身份矩阵。

我们通常用 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 表示身份矩阵,例如 3 x 3 的身份矩阵可以表示为:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

 一个方阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法, 其中 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 是行和列的数量。比如:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

在 NumPy 中,我们可以使用 numpy.eye() 函数创建身份矩阵。

# 创建一个的身份矩阵的代码示例
import numpy as np
identity_matrix = np.eye(3)
print(identity_matrix)

🚩 运行结果如下:

array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

0x03 逆矩阵和转置(Inverse and Transpose)

逆矩阵:逆矩阵是指一个方阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 的逆矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 ,满足以下条件:

如果矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 是可逆的,那么它的逆矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 可以通过下列公式计算:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

其中,【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 是矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 的行列式,【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 是矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 的伴随矩阵。如果矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 不可逆,则其逆矩阵不存在。注意:逆矩阵只适用于方阵,而且只有当矩阵A可逆时才有逆矩阵存在。

对于一个方形矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 是 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 的逆,用 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 表示,如果:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

如果存在,被称为 正则 (regular)、可逆 (invertible)、非正则 (nonsingular)。

如果存在,那就是唯一的 (unique)。

如何计算?对于 2×2 矩阵:

转置 (Transpose):将矩阵的行和列互换得到的新矩阵。

 对于一个矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 是 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 的转置,我们用 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 表示:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

再比如,对于一个 3 行 2 列的矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

其转置矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 为一个 2 行 3 列的矩阵,每个元素的位置与原矩阵相反,如下所示:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

若 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法,则称 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 为对称的 (symmetric) 。

矩阵的转置满足以下几个性质:

更多性质:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

我们可以使用 numpy.linalg.inv() 函数来计算矩阵的逆矩阵:

import numpy as np
A = np.array([[1, 2], [3, 4]])
A_inv = np.linalg.inv(A)
print(A_inv)

用 numpy.transpose() 函数来计算矩阵的转置:

import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6]])
A_transpose = np.transpose(A)
print(A_transpose)

🚩 运行结果如下:

array([[1, 4],
       [2, 5],
       [3, 6]])

0x04 标量乘法(Scalar Multiplication)

用标量 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 乘以 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 ,比如:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

结合性 (Associativity) :

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

分配性 (Distributivity):

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

Ⅲ. 解线性方程组问题(Solving Systems of Linear Equations)

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

两个非零行给出 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法  和 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

0x00 解集形式

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法以此方式还原:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

它有这种形式的解决方案:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

请注意,取 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 表明第一个向量是系统的一个特定解 (particular solution) 。

0x01 General = Particular + Homogeneous

一般方法:

问题:一个正式的算法可以执行上述内容?

这样的形式允许用一种算法来解决线性方程的问题。

0x02 行阶梯形矩阵(Row-Echelon Form)

行阶梯形矩阵是指一个矩阵的行具有以下特点:

比如:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

 其中,第一行的主元是1,第二行的主元是1,第三行的主元是1,第四行的主元是1。该矩阵的前四行是行阶梯形矩阵,而最后一行是一个零行。

定义:在下列情况下,一个矩阵是 row-echelon (行阶梯形矩阵)形式。

所有只包含零的行都在矩阵的底部;相应地,所有包含至少一个非零元素的行都在只包含零的行的上面。只看非零行,从左边开始的第一个非零数(也叫支点或前导系数)总是严格地在它上面一行的支点的右边。在 row-echelon 中与枢轴相对应的变量被称为基本变量,其他变量为自由变量。

在下列情况下,方程组为 reduced row-echelon 形式:。

高斯消除法 是一种进行基本转换的算法,它可以将线性方程组带入 row-echelon 形式。

Example: Unique Solution:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

Example: Infinite Number of Solutions

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

0x03 计算逆置(Calculating the Inverse)

为了计算 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 的逆 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法,我们需要找到一个矩阵 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 ,满足 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 。那么,【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

我们可以把它写成一组同时进行的线性方程 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法,其中我们求解 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 。

我们用增强的矩阵符号来表示这组线性方程组,得到 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法 。

这意味着,如果我们将增强的方程组带入简化的 row-echelon 形式,我们可以在方程组的右侧读出逆数。

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

解决方案集的案例:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

0x04 解决线性方程组的算法

伪逆 (Pseudo-inverse)

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

高斯消除法 (Gaussian elimination)

迭代法 (Iterative methods)

间接求解的实用方法:

【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法

📌 [ 笔者 ]   王亦优
📃 [ 更新 ]   2023.3.15
❌ [ 勘误 ]   /* 暂无 */
📜 [ 声明 ]   由于作者水平有限,本文有错误和不准确之处在所难免,
              本人也很想知道这些错误,恳望读者批评指正!

📜 参考资料 

Marc Peter Deisenroth, A. Aldo Faisal, and Cheng Soon Ong. Mathematics for machine learning. Cambridge University Press, 2020

Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .

百度百科[EB/OL]. []. https://baike.baidu.com/.