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

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

1. 损失函数的核心作用

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

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

2. 常见的损失函数

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

① L1Loss

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

② MSELoss (均方误差)

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

③ CrossEntropyLoss (交叉熵损失)

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

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

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(优化):利用梯度更新权重(下一节内容)。
相关推荐
EDPJ6 分钟前
(2017|ICLR|Google Brain,主网络与超网络联合训练,静态/动态超网络,LSTM,RNN)超网络
神经网络·机器学习·lstm·超网络
xhy_070729 分钟前
AI 在同一步上反复打转怎么办?WES Code 循环检测怎么用
人工智能·大模型·ai编程·wes code
鱼宵1 小时前
Spring AI 提示词模板:{变量} 参数化 + few-shot,一条提示词反复用
java·人工智能·spring·few-shot·提示词工程·springai
蜗牛互联网1 小时前
Python消费Responses SSE事件:增量文本、超时与取消
java·开发语言·人工智能·后端·python
架构师那点事儿1 小时前
大模型如何私有化部署到生产环境
人工智能·架构·llm
HeyAI人工智能1 小时前
官网内容优化 vs 企业级 RAG:AI 搜索时代,企业到底该先做什么?
人工智能·aigc
黑妹天下第一乖2 小时前
第09讲 · 多媒体与音频 SDK:硬件编解码与端侧语音
人工智能·嵌入式硬件·深度学习·机器人·音视频·iot
jeffsonfu2 小时前
扩散模型(Diffusion Models)崛起:GANs之后的下一个顶流?
人工智能
老李的安全笔记本2 小时前
Agent 工具调用为什么越改越差:两种方向的失败,Prompt 修不了
人工智能
土豆3592 小时前
那个叫 fix bug 的提交,改了 140 万行
人工智能