一文读懂深度学习中的损失函数quantifying loss —— 作用、分类和示例代码

在深度学习中,quantifying loss(量化损失)是指通过数学方法计算模型预测值与真实值之间的差异,以衡量模型的性能。损失函数(Loss Function)是量化损失的核心工具,它定义了模型预测值与真实值之间的误差大小。损失值越小,表示模型的预测越接近真实值。


一、损失函数的作用

  1. 衡量模型性能:损失函数提供了一个具体的数值,用于评估模型在当前参数下的表现。
  2. 指导模型优化:通过最小化损失函数,模型可以逐步调整参数,使预测结果更接近真实值。
  3. 帮助模型收敛:损失函数是优化算法(如梯度下降)的核心,它决定了模型参数更新的方向和幅度。

二、常见的损失函数

根据任务类型(如回归、分类等),常用的损失函数有所不同:

1. 回归任务(Regression)

均方误差(Mean Squared Error, MSE)

计算预测值与真实值之间平方差的平均值。适用于回归问题。
MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 MSE=n1∑i=1n(yi−y^i)2

其中, y i y_i yi 是真实值, y ^ i \hat{y}_i y^i 是预测值, n n n 是样本数量。

平均绝对误差(Mean Absolute Error, MAE)

计算预测值与真实值之间绝对差的平均值。对异常值不敏感。
MAE = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ \text{MAE} = \frac{1}{n} \sum_{i=1}^n |y_i - \hat{y}_i| MAE=n1∑i=1n∣yi−y^i∣

2. 分类任务(Classification)

交叉熵损失(Cross-Entropy Loss)

衡量预测概率分布与真实概率分布之间的差异。适用于分类问题。

◦ 二分类(Binary Cross-Entropy):
BCE = − 1 n ∑ i = 1 n ( y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ) \text{BCE} = -\frac{1}{n} \sum_{i=1}^n \left( y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right) BCE=−n1∑i=1n(yilog(y^i)+(1−yi)log(1−y^i))

◦ 多分类(Categorical Cross-Entropy):
CCE = − 1 n ∑ i = 1 n ∑ j = 1 m y i j log ⁡ ( y ^ i j ) \text{CCE} = -\frac{1}{n} \sum_{i=1}^n \sum_{j=1}^m y_{ij} \log(\hat{y}_{ij}) CCE=−n1∑i=1n∑j=1myijlog(y^ij)

其中, m m m是类别数量, y i j y_{ij} yij 是真实标签(one-hot 编码), y ^ i j \hat{y}_{ij} y^ij 是预测概率。

稀疏分类交叉熵(Sparse Categorical Cross-Entropy)

适用于标签是整数(非 one-hot 编码)的分类任务。
Sparse CCE = − 1 n ∑ i = 1 n log ⁡ ( y ^ i , y i ) \text{Sparse CCE} = -\frac{1}{n} \sum_{i=1}^n \log(\hat{y}_{i, y_i}) Sparse CCE=−n1∑i=1nlog(y^i,yi)

3. 其他任务

Hinge Loss

用于支持向量机(SVM)和二分类问题。
Hinge Loss = max ⁡ ( 0 , 1 − y i ⋅ y ^ i ) \text{Hinge Loss} = \max(0, 1 - y_i \cdot \hat{y}_i) Hinge Loss=max(0,1−yi⋅y^i)

Kullback-Leibler Divergence (KL Divergence)

衡量两个概率分布之间的差异,常用于生成模型(如变分自编码器)。


三、如何量化损失

在训练模型时,损失函数的计算过程如下:

  1. 前向传播:模型根据输入数据计算预测值。
  2. 计算损失:使用损失函数计算预测值与真实值之间的误差。
  3. 反向传播:根据损失值计算梯度,更新模型参数。

在 Keras 中,可以通过 model.compile() 指定损失函数,并通过 model.fit() 训练模型。


四、示例代码

以下是一个使用均方误差(MSE)作为损失函数的回归任务示例:

python 复制代码
import tensorflow as tf
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense

# 构建模型
model = Sequential([
    Dense(64, input_shape=(10,), activation='relu'),  # 输入维度为 10
    Dense(32, activation='relu'),
    Dense(1)  # 输出层,用于回归任务
])

# 编译模型,指定损失函数为 MSE
model.compile(optimizer='adam', loss='mean_squared_error')

# 生成随机数据
import numpy as np
x_train = np.random.rand(1000, 10)
y_train = np.random.rand(1000, 1)

# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=32)

五、总结

Quantifying loss 是通过损失函数计算模型预测值与真实值之间的差异,以衡量模型性能并指导优化。不同的任务需要使用不同的损失函数,例如均方误差(MSE)用于回归任务,交叉熵损失用于分类任务。理解损失函数的作用和选择适当的损失函数是构建高效深度学习模型的关键。

相关推荐
go546315846511 分钟前
基于深度学习的食管癌右喉返神经旁淋巴结预测系统研究
图像处理·人工智能·深度学习·神经网络·算法
Blossom.11813 分钟前
基于深度学习的图像分类:使用Capsule Networks实现高效分类
人工智能·python·深度学习·神经网络·机器学习·分类·数据挖掘
宇称不守恒4.016 分钟前
2025暑期—05神经网络-卷积神经网络
深度学习·神经网络·cnn
想变成树袋熊1 小时前
【自用】NLP算法面经(6)
人工智能·算法·自然语言处理
格林威1 小时前
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现沙滩小人检测识别(C#代码UI界面版)
人工智能·深度学习·数码相机·yolo·计算机视觉
checkcheckck2 小时前
spring ai 适配 流式回答、mcp、milvus向量数据库、rag、聊天会话记忆
人工智能
Microvision维视智造2 小时前
从“人工眼”到‘智能眼’:EZ-Vision视觉系统如何重构生产线视觉检测精度?
图像处理·人工智能·重构·视觉检测
巫婆理发2222 小时前
神经网络(多层感知机)(第二课第二周)
人工智能·深度学习·神经网络
lxmyzzs2 小时前
【打怪升级 - 03】YOLO11/YOLO12/YOLOv10/YOLOv8 完全指南:从理论到代码实战,新手入门必看教程
人工智能·神经网络·yolo·目标检测·计算机视觉
SEO_juper2 小时前
企业级 AI 工具选型报告:9 个技术平台的 ROI 对比与部署策略
人工智能·搜索引擎·百度·llm·工具·geo·数字营销