机器学习--损失函数

损失函数概述

损失函数(Loss Function)是机器学习中用于衡量模型预测值与真实值之间差异的函数,是优化算法的核心目标。通过最小化损失函数,模型逐步调整参数以提高预测准确性。


常见损失函数分类

回归任务
  1. 均方误差(MSE)

    计算预测值与真实值平方差的平均值,对异常值敏感:

    L(y, \\hat{y}) = \\frac{1}{n}\\sum_{i=1}\^{n}(y_i - \\hat{y}_i)\^2

  2. 平均绝对误差(MAE)

    使用绝对差值,对异常值鲁棒性更强:

    L(y, \\hat{y}) = \\frac{1}{n}\\sum_{i=1}\^{n}\|y_i - \\hat{y}_i\|

  3. Huber损失

    结合MSE和MAE,在误差较小时使用平方项,较大时转为线性项:

    L(y, \\hat{y}) = \\begin{cases} \\frac{1}{2}(y_i - \\hat{y}_i)\^2 \& \\text{if } \|y_i - \\hat{y}_i\| \\leq \\delta \\ \\delta(\|y_i - \\hat{y}_i\| - \\frac{1}{2}\\delta) \& \\text{otherwise} \\end{cases}

分类任务
  1. 交叉熵损失(Cross-Entropy)

    用于二分类或多分类,衡量概率分布的差异:

    • 二分类:

      L(y, \\hat{y}) = -\\frac{1}{n}\\sum_{i=1}\^{n}\[y_i \\log(\\hat{y}_i) + (1-y_i)\\log(1-\\hat{y}_i)\]

    • 多分类(Softmax交叉熵):

      L(y, \\hat{y}) = -\\frac{1}{n}\\sum_{i=1}\^{n}\\sum_{c=1}\^{C}y_{i,c} \\log(\\hat{y}_{i,c})

  2. Hinge损失

    支持向量机(SVM)中使用的损失函数,最大化分类边界:

    L(y, \\hat{y}) = \\max(0, 1 - y_i \\cdot \\hat{y}_i)

  3. Focal Loss

    解决类别不平衡问题,通过调整难易样本的权重:

    L(y, \\hat{y}) = -\\alpha (1-\\hat{y}_i)\^\\gamma y_i \\log(\\hat{y}_i)


损失函数选择原则

  • 任务类型:回归任务常用MSE/MAE,分类任务常用交叉熵。
  • 数据特性:异常值较多时选择MAE或Huber损失;类别不平衡时使用Focal Loss。
  • 模型需求:SVM需配合Hinge损失,神经网络常用交叉熵。

自定义损失函数

通过组合现有函数或设计新公式满足特定需求。例如:

  • 加权MSE:为不同样本分配不同权重。
  • 正则化损失:加入L1/L2惩罚项防止过拟合。

代码示例(PyTorch自定义Huber损失):

python 复制代码
import torch

def huber_loss(y_pred, y_true, delta=1.0):
    error = y_true - y_pred
    mask = (error.abs() <= delta).float()
    return (mask * 0.5 * error.pow(2) + (1 - mask) * delta * (error.abs() - 0.5 * delta)).mean()
相关推荐
测试_AI_一辰14 小时前
AI测试工程笔记 05:AI评测实践(从数据集到自动评测闭环)
人工智能·笔记·功能测试·自动化·ai编程
Zhansiqi15 小时前
day42部分题目
python
小王不爱笑13215 小时前
IO 模型
开发语言·python
kishu_iOS&AI15 小时前
Conda 简要说明与常用指令
python·安全·conda
小陈工15 小时前
FastAPI性能优化实战:从每秒100请求到1000的踩坑记录
python·性能优化·django·flask·numpy·pandas·fastapi
知我Deja_Vu15 小时前
【避坑指南】ConcurrentHashMap 并发计数优化实战
java·开发语言·python
njidf15 小时前
用Python制作一个文字冒险游戏
jvm·数据库·python
云境筑桃源哇15 小时前
海洋ALFA:主权与创新的交响,开启AI生态新纪元
人工智能
呆呆小孩16 小时前
Anaconda 被误删抢救手册:从绝望到重生
python·conda
liliangcsdn16 小时前
LLM复杂数值的提取计算场景示例
人工智能·python