深度学习:神经网络中的损失函数的使用

深度学习:神经网络中的损失函数的使用

损失函数是监督学习中的关键组成部分,用于衡量模型预测值与真实值之间的差异。优化算法(如梯度下降)通过最小化损失函数来调整模型参数,以提高模型的预测精度。以下是几种常用的损失函数及其在PyTorch中的实现和应用的详细解释:

1. L1 损失(绝对误差损失)

L1 损失是一个基于预测值和真实值之间绝对差值的损失函数,常用于回归问题。它有助于提高模型的鲁棒性,尤其是在异常值存在的情况下。

数学表达式

L ( y , y \^ ) = ∑ i = 1 n ∣ y i − y \^ i ∣ L(y, \\hat{y}) = \\sum_{i=1}\^n \|y_i - \\hat{y}_i\| L(y,y\^)=∑i=1n∣yi−y\^i∣

其中 ( y i y_i yi) 是真实值,( y ^ i \hat{y}_i y^i) 是预测值。

PyTorch 实现
python 复制代码
import torch
import torch.nn as nn

loss_fn = nn.L1Loss()
y_true = torch.tensor([2, 3, 4, 5], dtype=torch.float)
y_pred = torch.tensor([1.5, 3.5, 3.8, 5.2], dtype=torch.float)
loss = loss_fn(y_pred, y_true)
示例

计算 L1 损失:

$L = \|2 - 1.5\| + \|3 - 3.5\| + \|4 - 3.8\| + \|5 - 5.2\| = 0.5 + 0.5 + 0.2 + 0.2 = 1.4 $

2. MSE 损失(均方误差损失)

均方误差损失是回归问题中最常用的损失函数之一,计算真实值与预测值之间差值的平方和的均值。它放大了较大误差的影响,使模型更加注重减少大的预测误差。

数学表达式

$L(y, \\hat{y}) = \\frac{1}{n} \\sum_{i=1}\^n (y_i - \\hat{y}_i)\^2 KaTeX parse error: Can't use function '\\\]' in math mode at position 1: \\̲\]̲ 其中 \\(y_iKaTeX parse error: Can't use function '\\)' in math mode at position 1: \\̲)̲ 是真实值,\\(\\hat{y}_i$) 是预测值。 ##### PyTorch 实现 ```python loss_fn = nn.MSELoss() loss = loss_fn(y_pred, y_true) ``` ##### 示例 计算 MSE: \[ L = 1 4 ( ( 2 − 1.5 ) 2 + ( 3 − 3.5 ) 2 + ( 4 − 3.8 ) 2 + ( 5 − 5.2 ) 2 ) = 1 4 ( 0.25 + 0.25 + 0.04 + 0.04 ) = 0.145 L = \\frac{1}{4}((2 - 1.5)\^2 + (3 - 3.5)\^2 + (4 - 3.8)\^2 + (5 - 5.2)\^2) = \\frac{1}{4}(0.25 + 0.25 + 0.04 + 0.04) = 0.145 L=41((2−1.5)2+(3−3.5)2+(4−3.8)2+(5−5.2)2)=41(0.25+0.25+0.04+0.04)=0.145

3. 交叉熵损失(Cross-Entropy Loss)

交叉熵损失是分类问题中最常用的损失函数之一,特别适用于多类分类问题。它衡量的是预测概率分布与真实分布之间的差异。

数学表达式

L = − ∑ c = 1 M y c log ⁡ ( p c ) L = -\\sum_{c=1}\^M y_c \\log(p_c) L=−∑c=1Myclog(pc)

其中 ( y c y_c yc) 是如果样本属于类别 ( c c c),则为1,否则为0;( p c p_c pc) 是预测样本属于类别 ( c c c) 的概率。

PyTorch 实现
python 复制代码
loss_fn = nn.CrossEntropyLoss()
# 注意:CrossEntropyLoss的输入不应用one-hot编码,且预测值不通过softmax
y_true = torch.tensor([1])  # 类别索引为1
y_pred = torch.tensor([[0.1, 0.6, 0.3]])  # logits
loss = loss_fn(y_pred, y_true)
示例

计算交叉熵损失:

L = − ( 0 ⋅ log ⁡ ( 0.1 ) + 1 ⋅ log ⁡ ( 0.6 ) + 0 ⋅ log ⁡ ( 0.3 ) ) = − log ⁡ ( 0.6 ) ≈ 0.51 L = -(0 \\cdot \\log(0.1) + 1 \\cdot \\log(0.6) + 0 \\cdot \\log(0.3)) = -\\log(0.6) \\approx 0.51 L=−(0⋅log(0.1)+1⋅log(0.6)+0⋅log(0.3))=−log(0.6)≈0.51

总结

损失函数是衡量模型性能的重要工具,通过最小化损失,我们可以使模型在特定任务上表现得更好。选择合适的损失函数对于模型的最终性能至关重要,应根据具体任务和数据的性质来选择。在PyTorch中,使用这些损失函数可以直接通过简单的API调用实现,方便模型的训练和优化。

相关推荐
NAGNIP4 分钟前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab1 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab1 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP5 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年5 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼5 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS5 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区7 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈7 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang7 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx