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(优化):利用梯度更新权重(下一节内容)。
相关推荐
科研前沿1 天前
2026 空间智能革命:镜像视界无感定位 × 数字孪生,重构无感定位空间感知体系
人工智能
学弟1 天前
【快捷】通过指定CPU的分配解决A100服务器上多训练任务核心争抢导致的训练速度慢的问题
人工智能·深度学习·机器学习
水如烟1 天前
孤能子视角:“Introspection Adapter(IA)“,“代偿哨兵翻译层“
人工智能
AI_小站1 天前
6个GitHub爆火的免费大模型教程,助你快速进阶AI编程
人工智能·langchain·github·知识图谱·agent·llama·rag
xindoo1 天前
GitHub Trending霸榜!深度解析AI Coding辅助神器 Superpowers
人工智能·github
时间之里1 天前
【深度学习】:RF-DETR与yolo对比
人工智能·深度学习·yolo
北京阿法龙科技有限公司1 天前
数智化升级:AR 智能眼镜驱动工业运维效能革新
人工智能
风落无尘1 天前
《智能重生:从垃圾堆到AI工程师》——第二章 概率与生存
大数据·人工智能
j_xxx404_1 天前
Linux:静态链接与动态链接深度解析
linux·运维·服务器·c++·人工智能
收获不止数据库1 天前
达梦9发布会归来:AI 时代,我们需要一款什么样的数据库?
数据库·人工智能·ai·语言模型·数据分析