人工智能之数学基础 线性代数
第一章 向量与矩阵
文章目录
- [人工智能之数学基础 线性代数](#人工智能之数学基础 线性代数)
- 前言
- 一、基本定义
- [1. 向量(Vector)](#1. 向量(Vector))
- [2. 矩阵(Matrix)](#2. 矩阵(Matrix))
- 二、基本运算
- [1. 向量/矩阵加减法](#1. 向量/矩阵加减法)
- 示例(矩阵):
- [Python 实现:](#Python 实现:)
- [2. 标量乘法](#2. 标量乘法)
- [3. 矩阵乘法(Matrix Multiplication)](#3. 矩阵乘法(Matrix Multiplication))
- [4. 转置(Transpose)](#4. 转置(Transpose))
- [5. 逆矩阵(Inverse Matrix)](#5. 逆矩阵(Inverse Matrix))
- [Python(使用 NumPy):](#Python(使用 NumPy):)
- [6. 单位矩阵与零矩阵](#6. 单位矩阵与零矩阵)
- [单位矩阵(Identity Matrix):](#单位矩阵(Identity Matrix):)
- [零矩阵(Zero Matrix):](#零矩阵(Zero Matrix):)
- [Python 创建:](#Python 创建:)
- 三、向量的点积(内积)
- 四、完整示例代码汇总
- 五、小结
- 后续
- 资料关注
前言
线性代数是数学的一个重要分支,广泛应用于机器学习、计算机图形学、物理学、工程等领域。本文将系统介绍向量 与矩阵的基本概念、运算规则,并提供 Python(NumPy)实现代码。
一、基本定义
1. 向量(Vector)
-
定义:向量是一个有序的数字列表,可以表示为行向量或列向量。
-
行向量: v = [ v 1 , v 2 , ... , v n ] \mathbf{v} = [v_1, v_2, \dots, v_n] v=[v1,v2,...,vn]
-
列向量: v = [ v 1 v 2 ⋮ v n ] \mathbf{v} = \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix} v= v1v2⋮vn
-
-
维度 :向量中元素的个数称为其维度(如 n n n 维向量)。
2. 矩阵(Matrix)
-
定义 :矩阵是一个由数字排列成的矩形数组,具有 m m m行和 n n n 列,记作 A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n。
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} A= a11a21⋮am1a12a22⋮am2⋯⋯⋱⋯a1na2n⋮amn
-
特殊矩阵:
- 零矩阵 :所有元素为 0 的矩阵,记作 O O O。
- 单位矩阵 :主对角线元素为 1,其余为 0 的方阵,记作 I n I_n In。
I 3 = [ 1 0 0 0 1 0 0 0 1 ] I_3 = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} I3= 100010001
二、基本运算
1. 向量/矩阵加减法
- 条件:两个矩阵(或向量)必须具有相同的维度。
- 规则:对应元素相加(减)。
示例(矩阵):
A = [ 1 2 3 4 ] , B = [ 5 6 7 8 ] ⇒ A + B = [ 6 8 10 12 ] A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix},\quad B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} \Rightarrow A + B = \begin{bmatrix} 6 & 8 \\ 10 & 12 \end{bmatrix} A=[1324],B=[5768]⇒A+B=[610812]
Python 实现:
python
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print("A + B =\n", A + B)
print("A - B =\n", A - B)
2. 标量乘法
- 将矩阵/向量中的每个元素乘以一个标量(实数)。
Python:
python
c = 2
print("c * A =\n", c * A)
3. 矩阵乘法(Matrix Multiplication)
- 条件 :若 A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n, B ∈ R n × p B \in \mathbb{R}^{n \times p} B∈Rn×p,则 A B ∈ R m × p AB \in \mathbb{R}^{m \times p} AB∈Rm×p。
- 规则 :结果矩阵第 i , j i,j i,j 元素为 A A A第 i i i 行与 B B B 第 j j j 列的点积。
示例:
A = [ 1 2 3 4 ] , B = [ 5 6 7 8 ] ⇒ A B = [ 19 22 43 50 ] A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix},\quad B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} \Rightarrow AB = \begin{bmatrix} 19 & 22 \\ 43 & 50 \end{bmatrix} A=[1324],B=[5768]⇒AB=[19432250]
注意:矩阵乘法不满足交换律 (一般 A B ≠ B A AB \ne BA AB=BA)。
Python:
python
C = np.dot(A, B) # 或 A @ B
print("A @ B =\n", C)
4. 转置(Transpose)
- 定义 :将矩阵的行与列互换,记作 A T A^T AT。
- 若 A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n,则 A T ∈ R n × m A^T \in \mathbb{R}^{n \times m} AT∈Rn×m。
- ( A T ) i j = A j i (A^T){ij} = A{ji} (AT)ij=Aji
示例:
A = [ 1 2 3 4 5 6 ] ⇒ A T = [ 1 3 5 2 4 6 ] A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{bmatrix} \Rightarrow A^T = \begin{bmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{bmatrix} A= 135246 ⇒AT=[123456]
Python:
python
A = np.array([[1, 2], [3, 4], [5, 6]])
print("A^T =\n", A.T)
5. 逆矩阵(Inverse Matrix)
-
定义 :对于方阵 A ∈ R n × n A \in \mathbb{R}^{n \times n} A∈Rn×n,若存在矩阵 A − 1 A^{-1} A−1 使得:
A A − 1 = A − 1 A = I n A A^{-1} = A^{-1} A = I_n AA−1=A−1A=In
则称 A − 1 A^{-1} A−1 为 A A A 的逆矩阵。
-
存在条件 : A A A必须是可逆的 (非奇异),即 det ( A ) ≠ 0 \det(A) \ne 0 det(A)=0。
Python(使用 NumPy):
python
A = np.array([[4, 7], [2, 6]])
A_inv = np.linalg.inv(A)
print("A⁻¹ =\n", A_inv)
print("A @ A⁻¹ =\n", np.dot(A, A_inv)) # 应接近单位矩阵
⚠️ 注意:不是所有矩阵都有逆!只有方阵且满秩才有逆。
6. 单位矩阵与零矩阵
单位矩阵(Identity Matrix):
- 对任意矩阵 A A A(兼容维度),有 A I = I A = A AI = IA = A AI=IA=A。
零矩阵(Zero Matrix):
- 所有元素为 0,加法单位元: A + O = A A + O = A A+O=A。
Python 创建:
python
I3 = np.eye(3) # 3x3 单位矩阵
O2 = np.zeros((2, 2)) # 2x2 零矩阵
print("I3 =\n", I3)
print("O2 =\n", O2)
三、向量的点积(内积)
- 两个同维向量 u , v ∈ R n \mathbf{u}, \mathbf{v} \in \mathbb{R}^n u,v∈Rn的点积:
u ⋅ v = u 1 v 1 + u 2 v 2 + ⋯ + u n v n = u T v \mathbf{u} \cdot \mathbf{v} = u_1 v_1 + u_2 v_2 + \cdots + u_n v_n = \mathbf{u}^T \mathbf{v} u⋅v=u1v1+u2v2+⋯+unvn=uTv
Python:
python
u = np.array([1, 2, 3])
v = np.array([4, 5, 6])
dot_product = np.dot(u, v) # 或 u @ v
print("u · v =", dot_product) # 输出: 32
四、完整示例代码汇总
python
import numpy as np
# 1. 定义向量和矩阵
v = np.array([1, 2, 3]) # 列向量(在 NumPy 中是一维数组)
A = np.array([[1, 2], [3, 4]]) # 2x2 矩阵
B = np.array([[5, 6], [7, 8]])
# 2. 加减法
print("A + B =\n", A + B)
print("A - B =\n", A - B)
# 3. 标量乘法
print("2 * A =\n", 2 * A)
# 4. 矩阵乘法
print("A @ B =\n", A @ B)
# 5. 转置
print("A^T =\n", A.T)
# 6. 逆矩阵(仅方阵)
A_inv = np.linalg.inv(A)
print("A⁻¹ =\n", A_inv)
print("A @ A⁻¹ ≈ I:\n", np.round(A @ A_inv, decimals=10))
# 7. 单位矩阵 & 零矩阵
I = np.eye(2)
O = np.zeros((2, 2))
print("I =\n", I)
print("O =\n", O)
# 8. 向量点积
u = np.array([1, 2])
w = np.array([3, 4])
print("u · w =", u @ w)
五、小结
| 概念 | 符号 | 条件 | Python 函数 |
|---|---|---|---|
| 加法 | A + B A + B A+B | 同维 | A + B |
| 标量乘法 | c A cA cA | 任意 | c * A |
| 矩阵乘法 | A B AB AB | A 列数 = B 行数 | A @ B 或 np.dot(A,B) |
| 转置 | A T A^T AT | 任意 | A.T |
| 逆矩阵 | A − 1 A^{-1} A−1 | 方阵且可逆 | np.linalg.inv(A) |
| 单位矩阵 | I n I_n In | --- | np.eye(n) |
| 零矩阵 | O O O | --- | np.zeros((m,n)) |
| 向量点积 | u ⋅ v \mathbf{u} \cdot \mathbf{v} u⋅v | 同维 | u @ v |
本文介绍了线性代数的向量与矩阵,相关的基础来自于求解方程组,方程组的内容不在此论述,可以查阅提供的资料去了解,这些作为基础可以了解不用过于细节,人工智能比如python已经将一些算法在其内部封装,一行代码可能就代表一层模型,不过了解这些有利于更高层次的对人工智能的理解以及更加灵活的调整模型。
后续
python过渡项目部分代码已经上传至gitee,后续会逐步更新。
资料关注
公众号:咚咚王
gitee:https://gitee.com/wy18585051844/ai_learning
《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》