201_深度学习的数学底座:PyTorch 线性代数与范数实战

在深度学习中,数据以张量(Tensor)的形式流动,而模型参数的更新则依赖于矩阵运算。掌握 PyTorch 中的线性代数操作,不仅能帮你理解算法原理,更能让你写出高性能的计算代码。

1. 核心数学对象:从标量到张量

笔记中详细介绍了四种基础数学对象的定义与操作:

  • 标量 (Scalar):只有一个元素的张量。
  • 向量 (Vector):一阶张量,通常表示特征。
  • 矩阵 (Matrix):二阶张量,用于表示权重或数据集。
  • 张量 (Tensor):更一般的 N 维数组。

2. 核心代码:特征值与特征向量

在线性变换中,特征值和特征向量揭示了矩阵变换的方向和缩放比例,这在主成分分析(PCA)等降维算法中至关重要。

Python

复制代码
import torch

# 定义一个方阵
A = torch.tensor([[1.0, 2.0], [2.0, 1.0]])

# 求解特征值 (eigenvalues) 和 特征向量 (eigenvectors)
# 在新版 PyTorch 中建议使用 torch.linalg.eig
eigenvalues, eigenvectors = torch.linalg.eig(A)

print(f"特征值: {eigenvalues}")
print(f"特征向量: {eigenvectors}")

3. 范数(Norm):衡量"大小"的尺度

在深度学习的**正则化(Regularization)**中,我们经常听到 L1 范数和 L2 范数。它们本质上是衡量向量或矩阵"长度"或"大小"的函数。

① L1 范数

  • 定义:向量元素的绝对值之和。
  • 用途:倾向于产生稀疏解(让不重要的权重变为 0)。
  • 代码torch.abs(u).sum()

② L2 范数

  • 定义:向量元素平方和的平方根(欧几里得距离)。
  • 用途:最常用的权值衰减方式,防止过拟合。
  • 代码torch.norm(u)

③ 矩阵 F 范数 (Frobenius norm)

  • 定义:矩阵所有元素平方和的平方根。
  • 代码实现

Python

复制代码
# 将矩阵拉成向量求 L2 范数,即为 F 范数
X = torch.ones((4, 9))
f_norm = torch.norm(X) 
print(f"矩阵的 Frobenius 范数: {f_norm}") # 输出应为 6.0 (sqrt(36))

4. 常见的矩阵运算技巧

笔记中还涵盖了一些高频使用的矩阵函数:

  • 转置 (Transpose)A.T,交换行与列。
  • 对称矩阵 :如果 A == A.T,则 A 是对称矩阵。
  • 哈达玛积 (Hadamard Product)A * B,两个形状相同的矩阵对应元素相乘。
  • 点积 (Dot Product)torch.dot(x, y),两个向量的内积。
  • 矩阵-向量积torch.mv(A, x)
  • 矩阵-矩阵乘法torch.mm(A, B)

5. 总结:线性代数如何赋能深度学习?

分析该文件后,我们可以发现线性代数在深度学习中的具体应用点:

  1. 参数存储:权重 W 和偏置 b 全部存储在矩阵和向量中。
  2. 损失控制 :通过计算权重的 范数 并将其加入损失函数,实现模型正则化。
  3. 降维与压缩 :利用 特征值分解 或 SVD 压缩模型参数,减少计算量。

💡 学习小结

不要被复杂的公式吓倒,在 PyTorch 中,这些复杂的数学变换都被浓缩成了简单的函数。理解了范数的物理意义和矩阵乘法的几何意义,你就掌握了深度学习算法的"灵魂"

相关推荐
程序猿追4 天前
那个右下角的小数字怎么“卡”住我打字——我用 HarmonyOS 自己写了一个字数限制输入框
pytorch·华为·harmonyos
xiao5kou4chang6kai44 天前
MATLAB机器学习、深度学习--从数据预处理到模型训练
深度学习·机器学习·matlab·数据预处理
renhongxia14 天前
世界模型作为AGI落地底层底座的作用
人工智能·深度学习·生成对抗网络·自然语言处理·知识图谱·agi
计算机科研狗@OUC4 天前
(cvpr26) AIMDepth: Asymmetric Image-Event Mamba for Monocular Depth Estimation
人工智能·深度学习·计算机视觉
闵孚龙4 天前
《PyTorch 深度修炼》Dataset 和 DataLoader:数据如何喂给模型
人工智能·pytorch·python
H178535090964 天前
SolidWorks第四部分_直接实体建模特征9_替换面原理
线性代数·算法·机器学习·3d建模·solidworks
β添砖java4 天前
深度学习(22)网络中的网络NiN
人工智能·深度学习
Kobebryant-Manba4 天前
深度学习时候d2l报错和使用问题
人工智能·深度学习
zhangfeng11334 天前
deepspeed zero3 结合 llamafactory 微调 ,save_only_model: true 导致保存时候出错
开发语言·python·深度学习
大模型最新论文速读4 天前
06-16 · LLM 最新论文速览
论文阅读·人工智能·深度学习·机器学习·自然语言处理