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

神经网络入门指南:从零理解 PyTorch 的核心思想

欢迎来到啾啾的博客🐱。
记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。
有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。

目录

  • 引言
  • 1 1️⃣ 什么是神经网络?—— 一个会“自学成才”的数学模型
  • 2 2️⃣ 灵感来源:人脑的神经元
  • 3 3️⃣ 神经网络的三大基本组成
    • 3.1 🟡 神经元(Neuron / Node)—— 最小计算单元
      • 3.1.1 数学表达式:
      • 3.1.2 常见激活函数:
    • 3.2 🔴 权重(Weights)与偏置(Bias)—— 模型的“记忆”
    • 3.3 🔵 层(Layer)—— 神经元的集合
      • 3.3.1 网络结构示意图
  • 4 4️⃣ 神经网络如何工作?—— 前向传播(Forward Pass)
  • 5 5️⃣ 神经网络如何学习?—— 反向传播与梯度下降
    • 5.1 Step 1️⃣:前向传播 → 做出预测
    • 5.2 Step 2️⃣:计算损失 → 衡量错误程度
    • 5.3 Step 3️⃣:反向传播 → 找出“谁该负责”
    • 5.4 Step 4️⃣:更新参数 → 改进自己
    • 5.5 🔁 完整训练循环(PyTorch 实现)
  • 6 📘 术语表与概念速查
  • 7 💬 一句话理解核心概念
  • 8 6️⃣ 常见神经网络类型一览
  • 9 7️⃣ 生活化类比:教小孩认猫
  • 10 8️⃣ 总结:神经网络的核心思想
    • 10.1 📎 附:推荐学习路径

引言

📢 AI 使用声明
本文由作者基于对深度学习和 PyTorch 框架的学习与理解撰写。在内容整理、结构优化和语言表达过程中,使用了人工智能(AI)工具作为辅助,但所有观点与逻辑均经过作者审慎思考与验证。

🎯 适用对象

本指南适合以下读者:

  • 正在学习 PyTorch,已掌握基础三件套:Tensornn.ModuleAutograd
  • 希望补全对“神经网络”整体认知的学习者
  • 想要建立直觉理解而非仅记忆公式的新手

💡 本文不深入数学推导,而是聚焦于概念直觉 + 工作流程 + 代码对应


1 1️⃣ 什么是神经网络?—— 一个会“自学成才”的数学模型

🔍 一句话定义
神经网络是一种受生物大脑启发的数学模型,它通过模拟“神经元”的连接方式,从数据中自动学习规律,并用于预测或决策。

你可以把它想象成一个“智能黑盒子”:

      ┌─────────────┐
输入 ─▶│ 神经网络    │─▶ 输出│ (学习规律)  │└─────────────┘
组件说明
输入原始数据(如图像像素、文本向量)
输出预测结果(如“这是猫”、“概率为95%”)
内部机制多层神经元协同处理,逐步提取特征并做出判断

✅ 它的强大之处在于:不需要人工编写规则,而是从大量例子中自己总结规律。


2 2️⃣ 灵感来源:人脑的神经元

神经网络的设计灵感来自人类大脑:

  • 大脑由数十亿个 神经元(Neuron) 构成
  • 神经元之间通过 突触(Synapse) 连接,信号强弱由“权重”决定
  • 学习过程 = 调整连接强度(权重),从而改变行为反应

🧠 神经网络是对这一机制的数学抽象与简化模拟

⚠️ 注意:它只是“受启发”,并非真实模拟大脑。我们追求的是功能类比,而非生物学精确性。


3 3️⃣ 神经网络的三大基本组成

一个神经网络主要由以下三个部分构成:


3.1 🟡 神经元(Neuron / Node)—— 最小计算单元

每个神经元完成三步操作:

  1. 接收输入:来自前一层的数值信号(如像素值)
  2. 加权求和:给每个输入分配重要性(权重)
  3. 激活输出:通过非线性函数决定是否“激发”

3.1.1 数学表达式:

output=activation(w1x1+w2x2+⋯+b)\text{output} = \text{activation}(w_1 x_1 + w_2 x_2 + \cdots + b) output=activation(w1x1+w2x2++b)

符号含义
xix_ixi输入值
wiw_iwi权重(模型要学习的参数)
bbb偏置(bias),调节激活难易程度
activation\text{activation}activation激活函数,如 ReLU、Sigmoid

3.1.2 常见激活函数:

  • ReLU: $ \max(0, x) $ —— 最常用,简单高效
  • Sigmoid: $ \frac{1}{1 + e^{-x}} $ —— 输出 0~1,适合概率
  • Tanh: $ \tanh(x) $ —— 输出 -1~1,中心对称

✅ 激活函数引入非线性,使网络能拟合复杂函数。

3.2 🔴 权重(Weights)与偏置(Bias)—— 模型的“记忆”

参数作用说明
权重(Weight)控制输入的重要性如识别猫时,“耳朵尖”特征权重高
偏置(Bias)调节神经元激活阈值即使输入为0,也能让神经元激活

关键洞察
神经网络的“学习”,本质上就是不断调整权重和偏置,使得预测越来越准确。

这些参数构成了模型的“知识库”。

以神经网络中最基础的、最核心的计算单元 y = x * w + b为例,它代表了一个神经元一层线性变换
这个线性变换工时,能把原始数据映射到一个更用一分类或预测的空间。 神经网络的“学习”过程,本质上就是通过数据不断调整 wb,使得 y 的预测越来越准。


3.3 🔵 层(Layer)—— 神经元的集合

神经网络通常分为三层:

层类型功能类比
输入层接收原始数据(如图像展平为向量)感官输入(眼睛、耳朵)
隐藏层提取特征,逐层抽象(边缘 → 轮廓 → 物体部件)大脑皮层(思考与整合)
输出层给出最终结果(分类概率、回归值等)决策输出(说话、行动)
“隐藏层”指的是神经网络中位于输入层和输出层之间的层,它通常由一个线性变换(全连接)加上一个非线性激活函数构成。

隐藏层 = 线性变换(如 Wx + b) + 激活函数(如 ReLU, Sigmoid 等)
其输出称为‘激活值’。

3.3.1 网络结构示意图

一个典型的 单隐藏层全连接神经网络(MLP),结构如下:

  • 输入层:4 个神经元
  • 隐藏层:5 个神经元(可任意设定)
  • 输出层:3 个神经元
  • 每一层的每个神经元都与下一层所有神经元相连(全连接)
输入层        隐藏层         输出层o ────────► o ────────► oo ────────► o ────────► oo ────────► o ────────► oo ────────► oo

🔹 左边 4 个输入神经元
🔹 中间 5 个隐藏神经元(全连接)
🔹 右边 3 个输出神经元
🔹 所有连接线表示权重(省略部分连线以保持可读性)

💡 注:实际中每一层的每个神经元都连接到下一层的所有神经元,这里用 ─────► 表示批量连接,避免画出全部 4×5 + 5×3 = 35 条线。

💡 深度神经网络(DNN) = 拥有多个隐藏层的网络
层数越多,抽象能力越强,但也更难训练。


4 4️⃣ 神经网络如何工作?—— 前向传播(Forward Pass)

我们以识别手写数字“2”为例:

  1. 输入:一张 28×28 图像 → 展平为 784 维向量
  2. 第一层:检测简单特征(横线、竖线、弧度)
  3. 第二层:组合成局部结构(左上角的圈、中间的弯)
  4. 输出层:综合判断属于哪个数字(0~9),输出概率分布

这个从输入到输出的完整计算过程,称为:

🟩 前向传播(Forward Propagation)

y_pred = model(x_batch)  # PyTorch 中的一次前向传播

✅ 它的本质是:利用当前模型参数,对输入数据做出一次预测


5 5️⃣ 神经网络如何学习?—— 反向传播与梯度下降

网络一开始是“瞎猜”的。它是如何变聪明的?

靠两个核心技术:

  • 🔁 反向传播(Backpropagation)
  • 📉 梯度下降(Gradient Descent)

整个学习过程分为四步循环:

      ┌─────────────────┐│ 1. 前向传播     ││ (Forward Pass)  │└────────┬────────┘↓┌─────────────────┐│ 2. 计算损失      ││ (Loss)          │└────────┬────────┘↓┌─────────────────┐│ 3. 反向传播      ││ (Backward Pass) │└────────┬────────┘↓┌─────────────────┐│ 4. 更新参数      ││ (Optimization)  │└─────────────────┘│└────────────┐↓(重复此循环)

下面我们逐步拆解。


5.1 Step 1️⃣:前向传播 → 做出预测

y_pred = model(x_batch)
  • 输入一批数据(如 64 张图片)
  • 模型根据当前权重进行计算,输出预测结果

✅ 此时模型还不知道对错,只是“按现有知识作答”。


5.2 Step 2️⃣:计算损失 → 衡量错误程度

使用**损失函数(Loss Function)**衡量预测与真实标签的差距。

任务类型常用损失函数
分类任务CrossEntropyLoss()
回归任务MSELoss()(均方误差)
criterion = nn.CrossEntropyLoss()
loss = criterion(y_pred, y_true)
print(f"Loss: {loss.item():.4f}")  # loss 是标量 Tensor

✅ 损失越小,说明模型预测越准。目标是让损失趋近于 0。


5.3 Step 3️⃣:反向传播 → 找出“谁该负责”

调用 loss.backward(),PyTorch 自动计算每个参数的梯度。

optimizer.zero_grad()   # 清空上一轮梯度(防止累积)
loss.backward()         # 反向传播,填充 .grad 属性
  • 梯度(Gradient)表示:某个参数变化时,损失会如何变化
  • 所有 requires_grad=True 的参数都会生成 .grad

🔍 直观理解:反向传播就像“回溯责任链”,告诉每个权重:“你对这次错误有多大贡献?”


5.4 Step 4️⃣:更新参数 → 改进自己

使用**优化器(Optimizer)**更新参数。

optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# 或 Adam:
# optimizer = torch.optim.Adam(model.parameters(), lr=0.001)optimizer.step()  # 参数更新:w = w - lr * grad

📌 核心思想:沿梯度反方向更新参数,因为梯度指向“损失上升最快”的方向。

超参数说明
lr(学习率)步长大小。太小 → 学得慢;太大 → 可能跳过最优解

5.5 🔁 完整训练循环(PyTorch 实现)

for epoch in range(num_epochs):for x_batch, y_true in dataloader:# 1. 前向传播y_pred = model(x_batch)# 2. 计算损失loss = criterion(y_pred, y_true)# 3. 反向传播optimizer.zero_grad()loss.backward()# 4. 更新参数optimizer.step()print(f"Epoch {epoch+1}, Loss: {loss.item():.4f}")

🧩 术语解释

  • Batch(批次):一次处理的数据量(如 32、64)
  • Epoch(轮次):完整遍历一次训练集

6 📘 术语表与概念速查

术语英文解释关联代码
前向传播Forward Pass输入数据,计算输出预测model(x)
反向传播Backward Pass计算损失对参数的梯度loss.backward()
损失函数Loss Function衡量预测与真实值差距nn.CrossEntropyLoss()
优化器Optimizer根据梯度更新参数torch.optim.SGD()
参数Parameters模型中可学习的变量(权重、偏置)model.parameters()
梯度Gradient损失对参数的导数,指导更新方向param.grad
学习率Learning Rate更新步长lr=0.001
批次Batch一次训练使用的样本数DataLoader(batch_size=64)
轮次Epoch遍历完整数据集一次for epoch in range(10)
训练模式Train Mode开启 Dropout/BatchNorm 等model.train()
评估模式Eval Mode关闭 Dropout,用于推理model.eval()
计算图Computation Graph动态记录操作,支持自动求导Autograd 基础
设备Device指定运行硬件(CPU/GPU)model.to('cuda')

7 💬 一句话理解核心概念

问题一句话回答
Tensor 是什么?数据的容器:图像、标签、权重都是 Tensor
nn.Module 是什么?计算的蓝图:定义模型结构和前向逻辑
Autograd 是什么?学习的引擎:自动计算梯度,驱动参数更新
前向传播是干什么的?做预测:用当前模型知识输出结果
反向传播是干什么的?找原因:分析每个参数对错误的“贡献”
整个流程是怎样的?一个循环:预测 → 算错 → 找原因 → 改进 → 再预测

8 6️⃣ 常见神经网络类型一览

类型适用任务核心特点
MLP(多层感知机)分类、回归全连接,最基础
CNN(卷积神经网络)图像识别捕捉局部特征(边缘、纹理),参数共享
RNN(循环神经网络)语音、文本处理序列数据,具有“短期记忆”
TransformerNLP、大模型基于注意力机制,当前主流架构

🚀 推荐路径:MLP → CNN → RNN → Transformer


9 7️⃣ 生活化类比:教小孩认猫

比喻对应概念
你教孩子认猫训练过程
小孩神经网络
他的大脑权重和偏置
你指出错误计算损失
他反思哪里看错了反向传播
下次改进参数更新

💡 一开始他可能把狗认成猫,但经过反复纠正(训练),他学会了关键特征(耳朵尖、脸圆、眼睛绿),变得越来越准。


10 8️⃣ 总结:神经网络的核心思想

核心理念说明
模拟大脑用人工神经元模拟信息处理方式
分层抽象从像素 → 边缘 → 部件 → 整体,逐层提炼
参数学习从数据中自动学习权重,而非硬编码规则
端到端学习从原始输入直接到输出,无需人工特征工程

🌟 一句话收尾
神经网络是一个能从数据中自动学习规律的数学模型,它是现代人工智能(尤其是深度学习)的核心引擎。


10.1 📎 附:推荐学习路径

  1. 掌握 Tensor 基础操作
  2. 理解 nn.Module 构建模型
  3. 实践一个 MLP 分类任务
  4. 学习 CNN 处理图像(如 MNIST)
  5. 进阶 RNN / Transformer

对于LLM应用工程师来说,了解深度学习、了解PyTorch、Transfermer,可以更好地与算法团队协作,将前沿研究成果工程化落地。

http://www.lryc.cn/news/613515.html

相关文章:

  • 跨境电商增长突围:多维变局下的战略重构与技术赋能
  • 从“数字网格”到“空中交警” :星图低空云如何重构低空管理?
  • 鸿蒙 - 分享功能
  • MySql MVCC的原理总结
  • 软件加密工具-DSProtector使用说明
  • 2025年华数杯C题超详细解题思路
  • 旅游mcp配置(1)
  • 多场景两阶段分布式鲁棒优化模型、数据驱动的综合能源系统
  • pybind11 的应用
  • C语言feof函数详解:文件末尾检测的实用工具
  • 【华为机试】113. 路径总和 II
  • 计算机网络1-5:计算机网络的性能指标
  • CSS--:root指定变量,其他元素引用
  • [安卓按键精灵开发工具]本地数据库的初步学习
  • 剑指offer第2版——面试题1:赋值运算符函数
  • CPTS Remote 复现
  • react-router/react-router-dom
  • 深度学习中主要库的使用:(一)pandas,读取 excel 文件,支持主流的 .xlsx/.xls 格式
  • 房产证识别在房产行业的技术实现及应用原理
  • 超高车辆如何影响城市立交隧道安全?预警系统如何应对?
  • 网络基础概念
  • 基于Qt的Live2D模型显示以及控制
  • ora-01658 无法为表空间 users中的段创建initial区
  • RocketMQ架构解析
  • 遥感卫星领域的AI应用
  • Day03 学习git
  • LWIP网络接口管理
  • [airplay2] airplay2简略介绍
  • 二分查找算法,并分析其时间、空间复杂度
  • IIS7.5下的https无法绑定主机头,显示灰色如何处理?