社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

一图搞懂深度学习:神经网络的"学习"秘密

架构师带你玩转AI • 9 月前 • 210 次点击  

想象你在学做菜:第一次做可能很难吃,但每次尝味后都会调整调料,最终做出美味佳肴。深度学习就是这样一个不断"尝味调料"的过程!

这张流程图完美展现了AI如何从"菜鸟"变成"大师"的全过程。

A Beginner's Guide to Neural Networks: Forward and Backward Propagation  Explained | by Sankalp Salve | Medium

一、前向传播:做菜过程

从左到右的红箭头(Forward Propagation)展示了"做菜"的完整流程。

彻底搞懂深度学习-前向传播和反向传播(动图讲解)

彻底搞懂深度学习-从神经网络入门(动图讲解)

(1)准备食材(输入层)

  • x1, x2:就像准备土豆、胡萝卜等原材料
  • 橙色节点:初始处理站,清洗切配食材

数据预处理的重要性:

实际例子:在图像识别中,x1可能代表像素的红色值,x2代表绿色值原始数据:[255, 128, 64] (RGB像素值)归一化后:[1.0, 0.5, 0.25] (除以255)标准化后:[0.8, -0.2, -1.1] (减均值除标准差)

(2)烹饪加工(隐藏层)

  • 蓝色节点(z₁层):第一道工序,如爆炒、调味;每个节点计算:z₁ = w₁x₁ + w₂x₂ + b₁;激活函数处理:a₁ = ReLU(z₁) = max(0, z₁)
  • 绿色节点(z₂层):第二道工序,如炖煮、收汁;更复杂的特征组合:z₂ = w₃a₁ + w₄a₁ + b₂;不同激活函数:Sigmoid, Tanh, Swish等
  • 连接线权重:代表"配方权重",决定每种食材的用量比例;正权重促进作用,如"多放盐提升鲜味";负权重抑制作用,如"少放醋避免过酸";权重大小:影响强度,从0.001到100不等
实际例子:在人脸识别中,神经网络逐层进行特征提取第1层:检测边缘、线条(眼睛轮廓、鼻子边界)第2层:组合简单形状(眼睛形状、鼻子形状)第3层:识别面部特征(完整的眼睛、嘴巴)第4层:整合为完整人脸

(3)出菜品尝(输出层)

  • 紫色节点:最终成品,通常使用Softmax激活
  • Predictions (y'):AI的"菜品",概率分布[0.7, 0.2, 0.1]
  • True Values (y):标准答案,独热编码[1, 0, 0]

二、损失函数:味觉评判

彻底搞懂深度学习-激活函数和损失函数(动图讲解)
神经网络算法 - 一文搞懂回归和分类

右侧的蓝色椭圆(Loss Function)是整个学习的核心!

Loss Function(损失函数)就像挑剔的美食评委:

(1)分类任务 - 交叉熵损失

交叉熵损失的惩罚机制:

当概率接近1时,损失接近0;当概率接近0时,损失急剧增大。

# 三分类示例:菜品识别预测: [川菜:0.6, 粤菜:0.3, 鲁菜:0.1]真实: [川菜:1,   粤菜:0,   鲁菜:0]


    
交叉熵 = -(1×log(0.6) + 0×log(0.3) + 0×log(0.1))      = -log(0.6) = 0.511# 如果预测很准确预测: [川菜:0.95, 粤菜:0.03, 鲁菜:0.02] 交叉熵 = -log(0.95) = 0.051 (损失很小!)

(2)回归任务 - 均方误差

(1)均方误差(MSE) - 严厉的评判标准

# MSE会放大大误差的影响小误差: (实际8分 - 预测7.5分)² = 0.25中误差: (实际8分 - 预测7分)² = 1.0大误差: (实际8分 - 预测5分)² = 9.0 (惩罚急剧增大!)# 就像米其林餐厅的要求:轻微偏差: 可以接受明显偏差: 严重扣分  重大偏差: 直接出局

(2)平均绝对误差(MAE) - 宽容的评判标准

# MAE对所有误差一视同仁小误差: |8 - 7.5| = 0.5中误差: |8 - 7| = 1.0  大误差: |8 - 5| = 3.0 (线性增长)# 就像家常菜的要求:任何程度的偏差都按实际差距计算不会因为一次大失误就全盘否定

三、反向传播:调整配方

彻底搞懂深度学习-前向传播和反向传播(动图讲解)

彻底搞懂深度学习-偏导数和链式法则(动图讲解)

一文彻底搞懂深度学习 - 梯度下降(Gradient Descent)

从右到左的粉色箭头(Backward Propagation)是"学习"的精髓!

(1)链式法则:逐层传递责任

数学原理:

Loss/∂w₁ = ∂Loss/y' × y'/∂z₂ × ∂z₂/a₁ × a₁/∂z₁ × ∂z₁/w₁

通俗理解:

  • 最终误差是多少?→ Loss = 0.357
  • 输出层权重的锅有多大?→ 40%责任
  • 第二隐藏层权重的锅有多大?→ 30%责任
  • 第一隐藏层权重的锅有多大?→ 20%责任
  • 输入层权重的锅有多大?→ 10%责任

(2)梯度计算:找到调整方向

梯度的物理意义:

  • 梯度 > 0:权重增加会让损失增大 → 应该减少权重
  • 梯度 < 0:权重增加会让损失减小 → 应该增加权重
  • 梯度 = 0:已达到最优点 → 无需调整

梯度消失与爆炸问题:

梯度消失:深层网络中梯度趋于0,学不到东西解决方案:残差连接、批量归一化、更好的激活函数梯度爆炸:梯度过大导致训练不稳定解决方案:梯度裁剪、学习率衰减

(3)优化器:智能调参专家

  • Adam:大多数情况的万金油,收敛快但可能过拟合
  • SGD+Momentum:简单稳定,泛化性能好
  • AdamW:Adam的改进版,权重衰减更合理
  • RAdam:修正Adam的前期不稳定问题

四、迭代学习:从菜鸟到大师

彻底搞懂深度学习-模型参数和超参数(动图讲解)

一文彻底搞懂深度学习 - 模型评估(Evaluation)

右上角的循环箭头(Iterative)揭示了学习的本质:

(1)训练阶段详细分解

第1-10轮(初学阶段):

Loss: 2.5 → 1.8 → 1.3 → 0.9 → 0.7...现象: 大幅下降,权重剧烈变化策略: 使用较大学习率快速逼近最优区域

第11-100轮(进步阶段):

Loss: 0.7 → 0.5 → 0.4 → 0.35 → 0.32...现象: 稳步下降,偶尔震荡策略: 适中学习率,开始使用验证集监控

第101-1000轮(精进阶段):

Loss: 0.32 → 0.31 → 0.305 → 0.301...现象: 缓慢下降,需要耐心策略: 降低学习率,精细调整

(2)训练监控关键指标

(1)损失曲线分析

  • 训练损失持续下降:模型正在学习 ✓
  • 验证损失开始上升:可能过拟合 ⚠️
  • 两者都不变化:学习率过小或已收敛

(2)学习率调度策略

# 阶梯衰减lr = initial_lr × 0.1^(epoch // 30)# 余弦退火lr = min_lr + (max_lr - min_lr) × (1 + cos(π × epoch / total_epochs)) / 2# 自适应调整if val_loss没有改善超过patience轮:    lr = lr × factor

(3)早停机制

if val_loss连续10轮没有改善:


    
    print("模型已经学会了,停止训练")    保存最佳模型参数

从这张图可以看出,从"菜鸟"到"大师",AI的学习之路和人类惊人相似:通过不断实践、及时反馈、持续改进,最终掌握复杂技能。不同的是,AI可以24小时不间断学习,处理人类无法想象的海量数据。

下次看到AI做出惊艳表现时,记住:这背后是无数次前向传播和反向传播的默默训练,是数学、工程和艺术的完美结合!

每篇文章都会用一张核心图解,配合生动比喻,让复杂的技术概念变得简单易懂!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/187073