PyTorch 神经网络(Neural Networks)的数学构建模块

数学在任何机器学习算法中都是至关重要的,它包括数学的各种核心概念,以获取以特定方式设计的正确算法。构建 PyTorch 神经网络涉及到对张量进行各种线性代数运算,通过激活函数引入非线性,使用损失函数衡量模型性能,并利用梯度和反向传播来更新模型参数,最终通过优化器找到最优的参数配置。理解这些数学构建模块是深入学习和有效使用 PyTorch 进行深度学习的关键。本文主要介绍神经网络(Neural Networks)机器学习中数据科学的重要性及向量、标理和矩阵。

1、数学的重要性

在机器学习与深度学习中需要大量使用数学知识,也给很多初学带来困难的主要原因之一。下图可以看数学主题对机器学习和数据科学的重要性。


2、向量(Vector)

向量被认为是连续或离散的数字数组,由向量组成的空间称为向量空间。向量的空间维度可以是有限的或无限的,但机器学习和数据科学问题处理的是固定长度的向量。向量(Vector)是有大小和方向的量,其实就是一串数字,如(1,2)。

例如,

temp = torch.FloatTensor([23,24,24.5,26,27.2,23.0])
temp.size()

在机器学习中,我们处理多维数据。因此向量变得非常重要,并被视为任何预测问题陈述的输入特征。

3、标量(Scalar)

标量被称为零维,仅包含一个值。说到 PyTorch,它不包含一个特殊的零维张量;标量(Scalar)是只有大小,没有方向的量,如1,2,3等。

例如,

x = torch.rand(10)
x.size()

4、矩阵(Matrice)

大多数结构化数据通常以表格或特定矩阵的形式表示。我们将使用一个名为 Boston House Prices 的数据集,该数据集可在 Python scikit-learn 机器学习库中轻松获得。矩阵(Matrix)是好几个向量拍成一排合并而成的一堆数字,如[1,2;3,4]。

boston_tensor = torch.from_numpy(boston.data)
boston_tensor.size()
boston_tensor[:2]

输出:

Columns 0 to 7
0.0063 18.0000 2.3100 0.0000 0.5380 6.5750 65.2000 4.0900
0.0273 0.0000 7.0700 0.0000 0.4690 6.4210 78.9000 4.9671
Columns 8 to 12
1.0000 296.0000 15.3000 396.9000 4.9800
2.0000 242.0000 17.8000 396.9000 9.1400

5、PyTorch 神经网络核心数学模块

PyTorch 中神经网络的核心数学模块总结,包括构建神经网络时所涉及的 张量计算、函数、层、自动求导与优化器 等核心内容。

模块/类作用说明
torch.Tensor多维数组,所有数学计算的基础,
支持广播、线性代数、自动求导等
torch.nn神经网络模块的高层封装,
如线性层、卷积层、激活函数等
torch.nn.functional函数式接口,提供各种数学函数,
relusoftmaxcross_entropy
torch.autograd自动微分系统,支持反向传播的梯度计算
torch.optim优化器模块,
实现如 SGD、Adam 的权重更新算法
torch.linalg线性代数模块(类似 NumPy 的 linalg),
提供矩阵求逆、特征值等计算
torch.matmul, @张量乘法,
用于实现线性层、前向传播等核心数学操作
torch.sum, mean, exp, log常见数学运算,用于损失函数、归一化、激活函数等

6、典型神经网络构建数学流程

PyTorch 实现前馈神经网络中的一层线性变换 + 激活函数(ReLU) 的基本流程。

import torch
import torch.nn.functional as F

# 输入张量 (batch_size=2, features=3)
x = torch.tensor([[1.0, 2.0, 3.0],
                  [4.0, 5.0, 6.0]])

# 权重和偏置
W = torch.randn(3, 2)  # (input_features, output_features)
b = torch.randn(2)     # (output_features)

# 线性变换:y = x @ W + b
z = torch.matmul(x, W) + b

# 激活函数
output = F.relu(z)

推荐阅读
cjavapy编程之路首页