一文搞懂深度学习中的损失函数设计!

推荐直接网站在线阅读:aicoting.cn

在神经网络的训练过程中,损失函数 Loss Function 决定了模型优化的方向。没有损失函数,神经网络就不知道该往哪里调整参数,也就无法真正学会任务。损失函数的设计不仅关乎模型能不能收敛,更直接影响最终的性能。

损失函数的作用

损失函数的核心任务是:衡量预测值和真实值之间的差距

  • 如果预测结果和真实标签非常接近,损失就会很小;
  • 如果预测偏差很大,损失就会很大。

训练神经网络的目标,就是不断最小化损失函数,让模型的预测越来越准确。

常见的损失函数

均方误差(MSE, Mean Squared Error)

<math xmlns="http://www.w3.org/1998/Math/MathML"> L = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 L = \frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2 </math>L=n1∑i=1n(yi−y^i)2

  • <math xmlns="http://www.w3.org/1998/Math/MathML"> n n </math>n:样本数量
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> y i y_i </math>yi:第 i 个样本的真实值(标签)
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> y ^ i \hat{y}_i </math>y^i:第 i 个样本的预测值
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> L L </math>L:最终的损失值

MSE 是回归问题最常用的损失函数,它衡量预测值和真实值的平均平方差。数值越大,说明偏差越大;数值越小,说明模型预测得越接近真实结果。但因为平方会放大误差,MSE 对异常值比较敏感。

交叉熵损失(Cross Entropy Loss)

<math xmlns="http://www.w3.org/1998/Math/MathML"> L = − ∑ i = 1 n y i log ⁡ ( y ^ i ) L = -\sum_{i=1}^n y_i \log(\hat{y}_i) </math>L=−∑i=1nyilog(y^i)

  • <math xmlns="http://www.w3.org/1998/Math/MathML"> n n </math>n:类别数量
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> y i y_i </math>yi:第 i 个类别的真实分布(通常是 one-hot 向量)
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> y ^ i \hat{y}_i </math>y^i:模型对第 i 个类别预测的概率
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> L L </math>L:损失值

交叉熵刻画的是两个概率分布之间的差异,一个是真实分布 y,一个是模型预测的分布 <math xmlns="http://www.w3.org/1998/Math/MathML"> y ^ \hat{y} </math>y^。当模型预测的概率和真实标签一致时,交叉熵最小。它是分类任务的标准配置,和 Softmax 搭配使用效果最好。


Dice Loss

<math xmlns="http://www.w3.org/1998/Math/MathML"> L = 1 − 2 ∣ P ∩ G ∣ ∣ P ∣ + ∣ G ∣ L = 1 - \frac{2|P \cap G|}{|P| + |G|} </math>L=1−∣P∣+∣G∣2∣P∩G∣

  • P:模型预测的前景像素集合
  • G:真实标注的前景像素集合
  • ∣P∣:预测前景的像素总数
  • ∣G∣:真实前景的像素总数
  • ∣P∩G∣:预测和真实的重叠像素数量

Dice Loss 常用于图像分割,尤其是在医学图像等类别极不平衡的任务中。它直接度量预测区域和真实区域的重叠程度。Dice 系数越大说明重叠越多,损失就越小,模型效果也就越好。


对比损失(Contrastive Loss)

<math xmlns="http://www.w3.org/1998/Math/MathML"> L = y ⋅ d 2 + ( 1 − y ) ⋅ max ⁡ ( 0 , m − d ) 2 L = y \cdot d^2 + (1-y) \cdot \max(0, m-d)^2 </math>L=y⋅d2+(1−y)⋅max(0,m−d)2

  • y:样本对的标签,若两个样本属于同一类则 y=1,否则 y=0
  • d:两个样本在特征空间的欧式距离
  • m:间隔(margin),用于控制负样本之间的最小距离
  • L:损失值

对比损失常用于度量学习,比如人脸验证或语音验证。它的目标是让同类样本的特征距离更近(收敛到一起),不同类样本的特征距离更远(至少要大于 margin)。这样训练出来的特征空间,就能更好地区分不同类别。

在实际应用中,损失函数往往不是现成可用的,而是需要结合任务特点来设计:

  • 分类任务:常用交叉熵,但在类别极度不平衡时,可以加权或使用 Focal Loss。

  • 回归任务:MSE 是基础,如果异常值影响过大,可以用 MAE 或 Huber Loss。

  • 检测/分割任务:常见做法是交叉熵 + Dice Loss 组合,兼顾整体和局部精度。

  • 表征学习:需要对比损失、Triplet Loss 或 InfoNCE Loss 来优化特征空间的分布。

  • 多任务学习:多个损失函数加权组合(例如目标检测中的分类 + 回归)。

损失函数是神经网络的"灵魂"。它决定了模型到底在优化什么,也影响了最终能学到什么。一个好的损失函数设计,往往比单纯加深网络、增加参数更有效。

最新的文章都在公众号aicoting更新,别忘记关注哦!!!

📚推荐阅读

一文搞懂深度学习中的表征学习理论!

一文搞懂深度学习中的信息论!

一文搞懂深度学习的反向传播与优化理论!

一文搞懂深度学习中的张量与自动微分!

一文彻底搞懂深度学习和机器学习的区别!

一文搞懂神经元模型是什么!

一文搞懂激活函数!

作者:aicoting

分享是一种信仰,连接让成长更有温度。

我们下次不见不散!

相关推荐
deepdata_cn1 分钟前
智能体的5个认知误区
人工智能·智能体
papership1 分钟前
【入门级-算法-7、搜索算法:深度优先搜索】
算法·深度优先
johnny2334 分钟前
AI Agent:Onyx、LangBot、DeepChat、OpenAkita、OpenCow、talkio
人工智能
Highcharts.js5 分钟前
企业级数据可视化|BI 仪表板数据中台工业监控平台的选择分析
人工智能·python·信息可视化·数据挖掘·数据分析·highcharts
Crazy CodeCrafter7 分钟前
现在做服装,实体和电商怎么选?
大数据·数据库·人工智能·微信·开源软件·零售
sp_fyf_20247 分钟前
【大语言模型】从失败中学习:在微调大型语言模型作为智能体时整合负例
人工智能·深度学习·学习·机器学习·语言模型·自然语言处理
淡海水10 分钟前
【AI模型】API-GoogleGemini
人工智能·大模型
2601_9544345511 分钟前
2026年专业深度测评:入门电钢琴品牌排名前五权威发布
大数据·人工智能·python
波动几何12 分钟前
人工智能编程流程技能AI Dev Workflow
人工智能
山甫aa15 分钟前
哈希集合-----从零开始的数据结构学习
数据结构·算法·哈希算法