08 深度学习入门:神经网络与反向传播 📅 2026/6/19 4:13:51 核心问题神经网络是如何学习的一句话回答前向传播算损失反向传播算梯度梯度下降更新参数—— 循环往复直到模型学会。一、从生物神经元到人工神经元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 SigmoidS型函数属性说明输出范围(0, 1)可解释为概率优点平滑、可导、有概率意义⚠️ 缺点梯度消失两端导数趋近于0深层网络反向传播时梯度逐层衰减适用场景二分类输出层配合交叉熵损失3.2 ReLURectified 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是神经网络训练的核心算法本质就是链式法则。步骤前向传播计算损失反向传播从输出层开始逐层计算损失函数对每个参数的梯度偏导数梯度下降用梯度更新参数使损失减小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 深度学习的学习本质深度学习的训练过程可以概括为三句话前向传播数据流过网络产生预测和损失反向传播用链式法则计算每个参数的梯度梯度下降用梯度更新参数让损失下降重复这三个步骤成千上万次网络参数不断调整最终学会从输入到输出的映射。8.3 下一步学什么方向简介典型模型CNN卷积神经网络处理图像数据利用局部感受野和权值共享ResNet、VGG、EfficientNetRNN/LSTM循环神经网络处理序列数据文本、时间序列LSTM、GRUTransformer自注意力机制NLP领域的革命BERT、GPT系列生成模型生成新数据图像、文本GAN、VAE、扩散模型8.4 给新手的建议先理解原理再写代码弄懂前向传播、反向传播、梯度下降这三件事从 MNIST 开始手写数字识别是深度学习的Hello World用 PyTorch 或 Keras不要从零手写反向传播用框架结构化数据优先用 XGBoost不是所有问题都要用深度学习记住更多数据 更多算力 ≠ 更好结果数据质量、模型设计、超参数调优同样重要