当前位置: 首页 > news >正文

机器学习——损失函数

回归任务

MSE均方误差

MSE=1n∑i=1n(yi−y^i)2MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2MSE=n1i=1n(yiy^i)2

解释:计算预测值与真实值之差的平方的平均值。

特点:对异常值非常敏感,因为误差被平方放大了。一个巨大的误差会使整个损失变得很大。
导数 (2(yi−y^i)2(y_i - \hat{y}_i)2(yiy^i)) 会随着误差增大而线性增大,导致梯度很大,可能使训练不稳定。

适用场景:大部分回归问题,当数据中异常值不多时效果很好。

MAE均值绝对误差

MAE=1n∑i=1n∣yi−y^i∣MAE = \frac{1}{n}\sum_{i=1}^{n}|y_i - \hat{y}_i|MAE=n1i=1nyiy^i

解释:计算预测值与真实值之差的绝对值的平均值。

特点:对异常值不如MSE敏感,鲁棒性更好。
导数要么是+1,要么是-1,梯度大小是恒定的,即使在误差很大时也能保持稳定的更新。
适用场景:当数据中存在可能异常值时,希望模型不受其过分影响。

Huber Loss

Lδ(y,y^)={12(y−y^)2for ∣y−y^∣≤δ δ∣y−y^∣−12δ2otherwiseL_\delta(y, \hat{y}) = \begin{cases} \frac{1}{2}(y - \hat{y})^2 & \text{for } |y - \hat{y}| \le \delta \ \delta |y - \hat{y}| - \frac{1}{2}\delta^2 & \text{otherwise} \end{cases}Lδ(y,y^)={21(yy^)2for yy^δ δyy^21δ2otherwise

解释:MSE和MAE的混合体。它设定一个阈值 δ\deltaδ。当误差小于 δ\deltaδ 时,表现为MSE(平滑,利于收敛);当误差大于 δ\deltaδ 时,表现为MAE(线性,抗干扰)。

特点:兼具MSE和MAE的优点,既对小误差敏感(利于优化),又对异常值鲁棒。但需要手动调整超参数 δ\deltaδ

适用场景:数据中既有需要精细调整的部分,又可能存在异常值。

分类任务

交叉熵损失 - Cross-Entropy Loss

核心思想:比较模型预测的概率分布与真实的概率分布之间的差异。

二分类交叉熵损失

L=−1n∑i=1n[yi⋅log(y^i)+(1−yi)⋅log(1−y^i)]L = -\frac{1}{n}\sum_{i=1}^{n}[y_i \cdot log(\hat{y}_i) + (1 - y_i) \cdot log(1 - \hat{y}_i)]L=n1i=1n[yilog(y^i)+(1yi)log(1y^i)]

适用场景:二分类问题,输出层通常使用Sigmoid激活函数。

多分类交叉熵损失:

L=−1n∑i=1n∑c=1Cyi,c⋅log(y^i,c)L = -\frac{1}{n}\sum_{i=1}^{n}\sum_{c=1}^{C}y_{i,c} \cdot log(\hat{y}_{i,c})L=n1i=1nc=1Cyi,clog(y^i,c)

其中,CCC 是类别总数。这通常是 Categorical Cross-Entropy(需要真实标签是one-hot编码)或 Sparse Categorical Cross-Entropy(真实标签是整数索引)。

适用场景:多分类问题,输出层通常使用Softmax激活函数。

特点:分类任务中最常用、最有效的损失函数。当预测概率与真实标签完全一致时,损失达到最小值。

Hinge Loss

L=1n∑i=1nmax(0,1−yi⋅y^i)L = \frac{1}{n}\sum_{i=1}^{n}max(0, 1 - y_i \cdot \hat{y}_i)L=n1i=1nmax(0,1yiy^i),其中 yiy_iyi 是真实标签(+1或-1),y^i\hat{y}_iy^i 是模型输出的决策函数值(不是概率)。

特点:试图找到一个“最大间隔”的决策边界,不仅要求分类正确,还要求有足够的置信度。

适用场景:主要用于支持向量机。

任务划分

选择策略:
默认选择:对于回归用MSE,对于分类用交叉熵。这通常是很好的起点。

关注异常值:如果数据可能有异常值,回归任务中考虑MAE或Huber Loss。

任务目标:如果你的目标不是预测精确值,而是排序(如推荐系统),可能会选择基于排序的损失函数(如Pairwise Hinge Loss)。

任务类型问题描述常用损失函数输出层激活函数
回归预测房价、温度等连续值均方误差(MSE)、平均绝对误差(MAE)、Huber损失Linear (无激活函数)
二分类判断垃圾邮件、疾病诊断二分类交叉熵(Binary Cross-Entropy)Sigmoid
多分类手写数字识别、图像分类多分类交叉熵(Categorical Cross-Entropy)Softmax
多标签分类一张图片有多个标签二分类交叉熵(Binary Cross-Entropy)Sigmoid (每个节点独立)
http://www.dtcms.com/a/361798.html

相关文章:

  • leetcode-python-1796字符串中第二大的数字
  • LeetCode82删除排序链表中的重复元素 II
  • wpf之样式
  • 嵌入式解谜日志之Linux操作系统—共享内存
  • Python备份实战专栏第5/6篇:Docker + Nginx 生产环境一键部署方案
  • 基于多种分词算法的词频统计的中文分词系统的设计与实现
  • 信创之-麒麟v10服务器安装tengine(已完成)
  • 推荐系统中Redis 数据存储:二进制序列化协议选型与优化
  • linux连接服务器sftp无法输入中文
  • 基于SpringBoot的教务管理系统(源码+文档)
  • C/C++ Linux系统编程:进程通讯完全指南,管道通讯、共享内存以及消息队列
  • 零基础从头教学Linux(Day 25)
  • vue3使用Eslint
  • B样条曲线在节点u处添加节点的操作方法
  • 心率监测系统优化方案全解析
  • 火语言 RPA:轻松生成界面应用,让开发触手可及​
  • 求欧拉回路:Hierholzer算法图解模拟
  • 计算机网络技术(四)完结
  • 算法题-02
  • 大型语言模型监督微调(SFT)
  • GitLab 18.3 正式发布,更新多项 DevOps、CI/CD 功能【二】
  • MiniCPM-V-4.5:重新定义边缘设备多模态AI的下一代视觉语言模型
  • 前端测试深度实践:从单元测试到E2E测试的完整测试解决方案
  • Axios与Ajax:现代Web请求大比拼
  • 新手向:前端开发中的常见问题
  • Laser Lorentzian Lineshape
  • 进程控制之进程创建与终止
  • Vue3+TS 流星夜景
  • TensorFlow 2.10 是最后一个支持在原生Windows上使用GPU的TensorFlow版本
  • Redisson和Redis实现分布式锁的对比