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(优化):利用梯度更新权重(下一节内容)。
相关推荐
ofoxcoding2 小时前
怎么用 API 搭一个 AI 客服机器人?从零到上线的完整方案
人工智能·ai·机器人
Jial-(^V^)2 小时前
使用api-key调用大模型(包括DeepSeek/GLM/OpenAI)
人工智能
格林威2 小时前
工业相机图像采集:Grab Timeout 设置建议——拒绝“假死”与“丢帧”的黄金法则
开发语言·人工智能·数码相机·计算机视觉·c#·机器视觉·工业相机
忧郁的橙子.2 小时前
08-QLora微调&GGUF模型转换、Qwen打包部署 ollama 运行
人工智能·深度学习·机器学习·qlora·打包部署 ollama
坚持学习前端日记2 小时前
从零开始构建小说推荐智能体 - Coze 本地部署完整教程
大数据·人工智能·数据挖掘
码农三叔2 小时前
自动驾驶技术演进:路径规划与行为决策的突破与落地
人工智能·机器学习·自动驾驶
workflower2 小时前
影响用例书写格式的因素
人工智能·机器人·集成测试·ai编程·软件需求
lemonth2 小时前
图形推理----
人工智能·算法·机器学习
木梯子2 小时前
以科技筑牢安全新基线,金鸿星智能全自动防洪闸新品重磅发布
人工智能·科技·安全