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

08 深度学习入门:神经网络与反向传播

核心问题:神经网络是如何"学习"的?
一句话回答:前向传播算损失,反向传播算梯度,梯度下降更新参数—— 循环往复,直到模型学会。


一、从生物神经元到人工神经元

1.1 生物神经元的启发

生物神经元接收多个树突传来的信号,在细胞体内整合,如果信号强度超过阈值,就通过轴突向其他神经元传递信号。

人工神经元模仿了这个机制:

  • 输入:多个特征值(类比树突接收的信号)

  • 加权求和:每个输入乘以一个权重,再加偏置(类比信号整合)

  • 激活函数:判断是否"激活"以及激活的强度(类比阈值触发)

1.2 人工神经元的数学表达

一个神经元的计算分两步:

第一步:线性组合

第二步:非线性激活

其中 f 是激活函数,赋予神经网络非线性能力

💡为什么需要激活函数?
如果没有激活函数,多层神经网络只是多个线性变换的叠加,最终仍然是线性变换 → 无法拟合复杂函数。激活函数引入了非线性,使得神经网络可以逼近任意函数(万能近似定理)。


二、神经网络的结构

2.1 三层结构

一个典型的多层感知机(MLP)由三层组成:

作用特点
输入层接收原始特征不做计算,只传递数据;神经元数 = 特征维度
隐藏层特征提取与变换深度学习 = 多个隐藏层;层数越多,学习特征越抽象
输出层输出最终预测结构取决于任务类型

以 MNIST 手写数字识别为例

  • 输入层:784 个神经元(28×28 像素展平)

  • 隐藏层:可设 128→64 等

  • 输出层:10 个神经元(对应数字 0~9),使用 Softmax 输出概率分布

2.2 隐藏层的层次化特征学习

深度学习的核心优势:自动学习层次化特征

层数学习的特征类型
浅层(第1~2层)边缘、颜色、纹理等低级特征
中层(第3~5层)形状、部件组合(如眼睛、鼻子)
深层(第6层+)高层语义(如人脸、物体类别)

传统机器学习需要人工设计特征,深度学习端到端地自动学习从原始数据到高级语义的映射。


三、激活函数详解

3.1 Sigmoid(S型函数)

属性说明
输出范围(0, 1),可解释为概率
优点平滑、可导、有概率意义
⚠️ 缺点梯度消失:两端导数趋近于0,深层网络反向传播时梯度逐层衰减
适用场景二分类输出层(配合交叉熵损失)

3.2 ReLU(Rectified Linear Unit)—— 深度学习的默认选择

属性说明
输出范围[0, +∞)
优点计算极快;缓解梯度消失;能让网络稀疏(部分神经元输出为0)
⚠️ 缺点神经元死亡:某些神经元可能永远输出0,梯度为0,再也无法激活
适用场景隐藏层首选(绝大多数现代网络)

3.3 Leaky ReLU

属性说明
与ReLU的区别负数部分有一个很小的斜率(如0.01),不会完全死亡
适用场景担心ReLU死亡问题时使用

3.4 Softmax —— 多分类输出层的标配

属性说明
输出范围(0, 1),且所有类别概率之和 = 1
作用将 K 个实数转换为一个概率分布
适用场景多分类输出层(K个类别)

二分类特殊情况:输出层用 1 个神经元 + Sigmoid,或用 2 个神经元 + Softmax,两者等价。

3.5 激活函数选择指南

位置推荐原因
隐藏层ReLU(或Leaky ReLU)计算快,缓解梯度消失
二分类输出层Sigmoid输出可解释为概率
多分类输出层Softmax输出概率分布
回归输出层无激活(线性)输出任意实数

四、前向传播 —— 数据如何流过网络

前向传播就是输入数据从输入层开始,逐层计算,最终得到输出的过程。

以一个 2 层网络为例

最后计算损失(以二分类交叉熵为例):

前向传播的方向:输入 → 隐藏层 → 输出 → 损失


五、反向传播 —— 神经网络如何"学习"

5.1 核心思想

反向传播(Backpropagation)是神经网络训练的核心算法,本质就是链式法则

步骤

  1. 前向传播:计算损失

  2. 反向传播:从输出层开始,逐层计算损失函数对每个参数的梯度(偏导数)

  3. 梯度下降:用梯度更新参数,使损失减小

5.2 链式法则的直观理解

💡直觉:误差从输出层"反向流动"到每一层,每一层根据收到的误差信号计算自己参数的梯度。

5.3 梯度下降更新参数

5.4 优化器:从 SGD 到 Adam

优化器特点适用场景
SGD(随机梯度下降)简单,但收敛慢,对学习率敏感小规模数据
SGD + 动量加入历史梯度方向,加速收敛中等规模
Adam自适应学习率(每个参数独立调整),结合动量和RMSProp现代深度学习默认选择

Adam 的经验起点学习率:lr = 0.001


六、PyTorch 实战:乳腺癌二分类(代码解读)

PPT中给出了完整的 PyTorch 代码,下面为新手做详细解读。

6.1 数据准备

from sklearn.datasets import load_breast_cancer from sklearn.preprocessing import StandardScaler cancer = load_breast_cancer() X, y = cancer.data, cancer.target # X: 30个特征, y: 0/1 X_scaled = StandardScaler().fit_transform(X) # 标准化(必须!) X_train, X_test, y_train, y_test = train_test_split(...)
  • 乳腺癌数据集:569 个样本,30 个特征,二分类(恶性/良性)

  • 标准化:神经网络对输入量纲敏感,必须标准化

6.2 定义模型

class CancerMLP(nn.Module): def __init__(self): super().__init__() self.model = nn.Sequential( nn.Linear(30, 64), # 输入30维 → 隐藏层64维 nn.ReLU(), # ReLU激活 nn.Dropout(0.3), # 随机丢弃30%神经元(防过拟合) nn.Linear(64, 32), # 64 → 32 nn.ReLU(), nn.Linear(32, 1), # 32 → 1(输出) nn.Sigmoid() # 二分类概率输出 ) def forward(self, x): return self.model(x)

结构图解

输入(30) → 全连接(64) → ReLU → Dropout(0.3) → 全连接(32) → ReLU → 全连接(1) → Sigmoid → 输出概率

6.3 训练循环

for epoch in range(epochs): # 前向传播 preds = model(batch_x) loss = criterion(preds, batch_y) # 计算损失 # 反向传播 optimizer.zero_grad() # 清空上一轮梯度 loss.backward() # 计算梯度(反向传播!) optimizer.step() # 用梯度更新参数
  • loss.backward():这是 PyTorch 自动执行反向传播的一行代码,背后完成了所有链式法则计算

  • optimizer.step():用 Adam 优化器更新所有参数

6.4 输出示例

Epoch [10/50], Loss: 0.1234, Val Acc: 0.9737 Epoch [20/50], Loss: 0.0891, Val Acc: 0.9825 ... 乳腺癌 PyTorch MLP → Test Acc = 0.9825

一个 3 层 MLP 在乳腺癌数据集上可达到约 98% 的测试准确率。


七、深度学习 vs 传统机器学习

7.1 核心对比

对比维度传统机器学习深度学习
特征工程需要人工构建特征自动学习特征(端到端)
数据量要求小数据也可用(N < 10K)需要大数据(N > 100K)
可解释性高(决策树、线性模型可解释)低(黑盒模型)
训练速度快(秒~分钟)慢(小时~天,需GPU)
部署成本高(GPU推理)

7.2 数据类型的适用性

数据类型传统机器学习深度学习
结构化数据(表格)首选(XGBoost/LightGBM)❌ 通常不如传统ML
图像数据❌ 特征工程繁琐绝对优势(CNN)
文本数据❌ 需要大量预处理绝对优势(RNN/Transformer)
语音数据❌ 效果差绝对优势

7.3 选择建议

场景推荐方法理由
数据量 < 1万条,表格数据XGBoost / 随机森林更快、更稳、更可解释
数据量 > 10万条,图像/文本深度学习(CNN/Transformer)能利用大规模数据优势
数据量中等,图像/文本迁移学习(预训练模型微调)用小数据也能用好模型

八、总结与展望

8.1 本章核心速记

概念一句话解释
神经元,加权求和 + 非线性激活
激活函数赋予网络非线性能力;隐藏层用ReLU,输出层按任务选Sigmoid/Softmax
前向传播输入 → 逐层计算 → 输出 → 损失
反向传播链式法则从输出层往回算梯度
梯度下降,参数沿梯度反方向更新
Adam自适应学习率优化器,现代深度学习的默认选择

8.2 深度学习的"学习"本质

深度学习的训练过程可以概括为三句话

  1. 前向传播:数据流过网络,产生预测和损失

  2. 反向传播:用链式法则计算每个参数的梯度

  3. 梯度下降:用梯度更新参数,让损失下降

重复这三个步骤成千上万次,网络参数不断调整,最终学会从输入到输出的映射。

8.3 下一步学什么?

方向简介典型模型
CNN(卷积神经网络)处理图像数据,利用局部感受野和权值共享ResNet、VGG、EfficientNet
RNN/LSTM(循环神经网络)处理序列数据(文本、时间序列)LSTM、GRU
Transformer自注意力机制,NLP领域的革命BERT、GPT系列
生成模型生成新数据(图像、文本)GAN、VAE、扩散模型

8.4 给新手的建议

  1. 先理解原理,再写代码:弄懂前向传播、反向传播、梯度下降这三件事

  2. 从 MNIST 开始:手写数字识别是深度学习的"Hello World"

  3. 用 PyTorch 或 Keras:不要从零手写反向传播,用框架

  4. 结构化数据优先用 XGBoost:不是所有问题都要用深度学习

  5. 记住:更多数据 + 更多算力 ≠ 更好结果:数据质量、模型设计、超参数调优同样重要

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

相关文章:

  • ASIL D汽车安全系统设计:MPC5643L外部监控方案详解
  • MPC857T MMU配置实战:从虚拟内存原理到嵌入式系统内存管理
  • JMeter性能测试从入门到精通:核心概念、实战脚本与结果分析
  • uni-app 客户端照片水印:外勤打卡实战教程
  • 5分钟终极指南:免费解锁Cursor Pro完整功能
  • GraphRAG又进化了, WWW 2026新作:chunk和entity终于合体了
  • 亚太顶尖EMBA客观测评:高管理性选型全指南
  • 嵌入式开发中SAR与ΔΣ ADC选型指南:从原理到实战应用
  • TC7135双积分ADC原理与±2V电压表设计实战
  • 2026 AI API中转站选型指南:六大主流大模型API聚合平台技术能力与企业应用价值分析
  • 2026年推荐几家哈尔滨金属回收/哈尔滨废铝回收用户推荐公司 - 品牌宣传支持者
  • 东芝宣布,推出TXZ+™族入门级M4H组标准微控制器
  • 2026年正规的河南水性锈转化防腐漆/河南环氧防腐漆/道路标线反光防腐漆可靠供应商推荐 - 品牌宣传支持者
  • 嵌入式语音通信:G.723.1A低比特率编解码原理与Motorola DSP实战
  • MPC801外部总线接口:同步总线协议、突发传输与多主设备仲裁详解
  • AI Agent 跑进你的电脑:端侧智能体从硬件选型到模型量化全链路实战
  • Grok 实时屏幕分享功能升级:AI 助手从被动响应走向主动协作
  • 翻转标准模型解析:轻暗物质与微中微子质量机制
  • 2026年推荐几家哈尔滨废铁回收/哈尔滨金属回收哪家好 - 行业平台推荐
  • AI写论文攻略来啦!4款AI论文生成工具,解决论文写作难题!
  • GitHub - DeusData/codebase-memory-mcp:高性能代码智能 MCP 服务器。将代码库索引到持久化知识图谱——平均毫秒级处理仓库。
  • 未央区几家知名家政公司的服务实测差异是什么?
  • 嵌入式GUI开发实战:emWin字体系统深度解析与XBF外置字体应用
  • Python知识分享(解决安装速度慢的问题)
  • GPT-5.5任务型执行体:从问答AI到办公流水线的范式跃迁
  • OpenArk终极指南:免费开源ARK工具深度解析与Windows Defender误报完全解决方案
  • Citra模拟器图形优化:从模糊到清晰的3DS游戏体验提升指南
  • 2026年推荐哈尔滨变压器回收/哈尔滨电瓶回收/哈尔滨工程拆除回收哪家口碑好 - 行业平台推荐
  • 抖音下载器深度架构解析:异步处理与策略模式驱动的反爬虫实战方案
  • PowerPC指令集与异常处理机制详解:从内存屏障到TLB缺失实战