当前位置: 首页 > news >正文

人工智能之数学基础 线性代数:第一章 向量与矩阵

人工智能之数学基础 线性代数

第一章 向量与矩阵


文章目录

  • 人工智能之数学基础 线性代数
  • 前言
  • 一、基本定义
    • 1. 向量(Vector)
    • 2. 矩阵(Matrix)
  • 二、基本运算
    • 1. 向量/矩阵加减法
      • 示例(矩阵):
      • Python 实现:
    • 2. 标量乘法
      • Python:
    • 3. 矩阵乘法(Matrix Multiplication)
      • 示例:
      • Python:
    • 4. 转置(Transpose)
      • 示例:
      • Python:
    • 5. 逆矩阵(Inverse Matrix)
      • Python(使用 NumPy):
    • 6. 单位矩阵与零矩阵
      • 单位矩阵(Identity 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=v1v2vn

  • 维度:向量中元素的个数称为其维度(如n nn维向量)。

2. 矩阵(Matrix)

  • 定义:矩阵是一个由数字排列成的矩形数组,具有m mm行和n nn列,记作A ∈ R m × n A \in \mathbb{R}^{m \times n}ARm×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=a11a21am1a12a22am2a1na2namn

  • 特殊矩阵

    • 零矩阵:所有元素为 0 的矩阵,记作O OO
    • 单位矩阵:主对角线元素为 1,其余为 0 的方阵,记作I n I_nIn
      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 实现:

importnumpyasnp 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:

c=2print("c * A =\n",c*A)

3. 矩阵乘法(Matrix Multiplication)

  • 条件:若A ∈ R m × n A \in \mathbb{R}^{m \times n}ARm×nB ∈ R n × p B \in \mathbb{R}^{n \times p}BRn×p,则A B ∈ R m × p AB \in \mathbb{R}^{m \times p}ABRm×p
  • 规则:结果矩阵第i , j i,ji,j元素为A AAi ii行与B BBj jj列的点积。

示例:

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 BAAB=BA)。

Python:

C=np.dot(A,B)# 或 A @ Bprint("A @ B =\n",C)

4. 转置(Transpose)

  • 定义:将矩阵的行与列互换,记作A T A^TAT
    • A ∈ R m × n A \in \mathbb{R}^{m \times n}ARm×n,则A T ∈ R n × m A^T \in \mathbb{R}^{n \times m}ATRn×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=135246AT=[123456]

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}ARn×n,若存在矩阵A − 1 A^{-1}A1使得:

    A A − 1 = A − 1 A = I n A A^{-1} = A^{-1} A = I_nAA1=A1A=In

    则称A − 1 A^{-1}A1A AA的逆矩阵。

  • 存在条件A AA必须是可逆的(非奇异),即det ⁡ ( A ) ≠ 0 \det(A) \ne 0det(A)=0

Python(使用 NumPy):

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 AA(兼容维度),有A I = I A = A AI = IA = AAI=IA=A

零矩阵(Zero Matrix):

  • 所有元素为 0,加法单位元:A + O = A A + O = AA+O=A

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}^nu,vRn的点积:
    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}uv=u1v1+u2v2++unvn=uTv

Python:

u=np.array([1,2,3])v=np.array([4,5,6])dot_product=np.dot(u,v)# 或 u @ vprint("u · v =",dot_product)# 输出: 32

四、完整示例代码汇总

importnumpyasnp# 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 + BA+B同维A + B
标量乘法c A cAcA任意c * A
矩阵乘法A B ABABA 列数 = B 行数A @ Bnp.dot(A,B)
转置A T A^TAT任意A.T
逆矩阵A − 1 A^{-1}A1方阵且可逆np.linalg.inv(A)
单位矩阵I n I_nInnp.eye(n)
零矩阵O OOnp.zeros((m,n))
向量点积u ⋅ v \mathbf{u} \cdot \mathbf{v}uv同维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》

http://www.jsqmd.com/news/73259/

相关文章:

  • 至少我還有寫作的自由
  • COMSOL介电金属多层膜结构宽谱吸收器:文献复现与吸收特性研究
  • 53
  • LMMS音频插件完全指南:从入门到精通的格式选择策略
  • WordPress插件高危漏洞:Google评论小工具存储型XSS(CVE-2025-9436)技术剖析与修复指南
  • 破局流量焦虑:解码福州GEO服务新格局,SHEEP-GEO如何用技术重构行业天花板?
  • 再谈ST表
  • Jetson Secure Boot 完整实战指南:从 Fuse Key → Boot Chain → 验签代码路径的源码级解析
  • miniconda anaconda下载
  • 滑动窗口
  • 基于像素流的多游戏引擎实时云渲染系统设计与实现
  • 机械臂的舞蹈从数学开始——xArm6运动学拆解日记
  • 双向RRT算法求解路径规划问题
  • Fortran 的英文数字验证码识别系统设计与实现
  • 重塑Java工程效能:全流程智能开发平台实践解析
  • 鸿蒙 Flutter 安全组件开发:加密输入框与脱敏展示组件
  • 如何找書
  • 实现kvstore的持久化功能:全量持久化和增量持久化
  • 摄影师必备Lightroom修图软件最新版下载与安装指南
  • 如何把你的.git 分離出 OneDrive/iCloud
  • 面试必问:如何快速定位BUG?BUG定位技巧及N板斧!
  • TurboPFor整数压缩:突破性能极限的高速数据处理方案
  • Meta公开抄阿里Qwen作业,还闭源了...
  • 故障处理:Oracle ADG 主库想备库传输日志的归档路径禁用的报错
  • 如何啓動一個本地服務
  • unity运行后笔记本风扇声音太大的解决办法
  • 5种必知的前端数据加密防护技术:从React安全到浏览器原生方案
  • ROS2节点和话题
  • Wan2.2-T2V-A14B如何生成带有烟花绽放效果的节日庆典视频?
  • 5分钟快速上手MONAI 2D扩散模型:医学图像生成的终极指南