机器学习--损失函数

损失函数概述

损失函数(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()
相关推荐
OpenCSG20 小时前
对比分析:CSGHub vs. Hugging Face:模型管理平台选型对
人工智能·架构·开源
云上凯歌20 小时前
传统老旧系统的“AI 涅槃”:从零构建企业级 Agent 集群实战指南
人工智能
cskywit20 小时前
破解红外“魅影”难题:WMRNet 如何以频率分析与二阶差分重塑小目标检测?
人工智能·深度学习
派葛穆20 小时前
Python-PyQt5 安装与配置教程
开发语言·python·qt
无名修道院20 小时前
AI大模型应用开发-RAG 基础:向量数据库(FAISS/Milvus)、文本拆分、相似性搜索(“让模型查资料再回答”)
人工智能·向量数据库·rag·ai大模型应用开发
自可乐20 小时前
Milvus向量数据库/RAG基础设施学习教程
数据库·人工智能·python·milvus
Loo国昌20 小时前
【大模型应用开发】第二阶段:语义理解应用:文本分类与聚类 (Text Classification & Clustering)
人工智能·分类·聚类
XX風20 小时前
3.2K-means
人工智能·算法·kmeans
可触的未来,发芽的智生20 小时前
发现:认知的普适节律 发现思维的8次迭代量子
javascript·python·神经网络·程序人生·自然语言处理
feasibility.20 小时前
在OpenCode使用skills搭建基于LLM的dify工作流
人工智能·低代码·docker·ollama·skills·opencode·智能体/工作流