111_神经网络的指路明灯:损失函数与反向传播深度解析

如果说神经网络的架构是它的"身体",那么损失函数 就是它的"感官",而反向传播则是它的"进化机制"。通过这两者的结合,模型才能知道自己错在哪里,并朝着正确的方向不断修正。

1. 损失函数的核心作用

损失函数(Loss Function)在训练中扮演着两个至关重要的角色:

  1. 衡量差距:计算实际输出(Outputs)与目标输出(Targets)之间的距离。Loss 越小,说明模型预测越准。
  2. 提供依据:为模型参数的更新提供方向。

2. 常见的损失函数

文件介绍了三种不同场景下的损失函数:

① L1Loss

  • 计算方式:计算预测值与真实值之差的绝对值平均数。
  • 数学公式
  • .

② MSELoss (均方误差)

  • 计算方式:计算差值的平方平均数。
  • 特点:对离群点(误差大的点)非常敏感,误差越大,惩罚越重。

③ CrossEntropyLoss (交叉熵损失)

这是分类任务 中最常用的损失函数。它结合了 LogSoftmaxNLLLoss

  • 作用:衡量两个概率分布之间的差异。当模型对正确类别的预测概率越高,损失值就越低。

3. 反向传播:参数更新的秘密

计算出 Loss 之后,我们该如何调整网络中的权重(Weights)呢?这就是 Backward Propagation 的任务。

核心步骤:

  1. 调用 .backward():当你对 Loss 值调用此方法时,PyTorch 会利用数学中的链式法则 ,自动计算出 Loss 对网络中每个节点(参数)的梯度(Gradient)
  2. 梯度属性 :在反向传播之前,参数的 grad 属性为空;执行后,每个参数都会获得一个梯度值。
  3. 意义:梯度告诉了我们:如果要减小 Loss,这个参数应该往大调还是往小调。

4. 代码实战:在模型中使用损失函数

文件展示了如何在之前搭建的 CIFAR-10 网络中集成损失计算:

Python

复制代码
import torch
from torch import nn

# 1. 定义交叉熵损失函数
loss = nn.CrossEntropyLoss()

# 2. 实例化网络
tudui = Tudui()

# 3. 训练循环模拟
for data in dataloader:
    imgs, targets = data
    
    # 前向传播:得到实际输出
    outputs = tudui(imgs)
    
    # 计算损失:对比输出与目标
    result_loss = loss(outputs, targets)
    
    # 反向传播:计算每个节点的梯度
    result_loss.backward()
    
    # 打印当前的损失值
    print(f"Current Loss: {result_loss.item()}")

5. 总结:训练的闭环逻辑

通过分析该文件,我们补全了模型训练的最后一块拼图:

  1. Forward(前向) :数据流过网络,得到结果,计算 Loss
  2. Backward(反向) :根据 Loss 计算各层的 Gradients(梯度)
  3. Optimize(优化):利用梯度更新权重(下一节内容)。
相关推荐
火山引擎开发者社区27 分钟前
TLS for DeepSeek Harness 可观测实践:从系统总览到会话复盘
人工智能
数字融合2 小时前
透明化地铁线视频孪生综合监控项目技术
大数据·人工智能·virtualenv
鼎艺创新科技3 小时前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
十三画者3 小时前
【文献分享】ConfRetro:融合3D构象信息的逆合成预测Transformer框架
人工智能·深度学习·数据挖掘·数据分析·transformer·数据可视化
前沿在线3 小时前
百度文心助手推出任务引擎 2.0,日活用户同比增长 83%,日均对话轮次增长超 2 倍
人工智能·ai·大模型
zandy10114 小时前
AI办公工具选哪个?千问办公、百度搭子、WorkBuddy三款高阶智能体深度拆解
人工智能·ai办公工具
mengpp_1234564 小时前
AIoT平台 vs 普通IoT平台 核心区别
人工智能
canonical_entropy4 小时前
可逆不是逆向运行:DeepSeek Harness 架构的数学本质
人工智能·架构·agent
别动我齐刘海4 小时前
机器人运动控制学习2——基础进阶
c++·人工智能·神经网络·学习·目标检测·机器学习·机器人
冬奇Lab5 小时前
Code Agent 解剖(05):模型怎么知道有哪些工具可以用?Function Calling 如何实现?
人工智能·开源·agent