常用损失函数

在机器学习与深度学习中,损失函数(Loss Function) 是模型训练中非常核心的一部分。
它衡量模型的预测值与真实值之间的差距,并指导参数更新。
不同的任务类型(回归、分类、分割等)会选用不同的损失函数。

本文将按任务类型,介绍几种常用的损失函数。


1.回归任务常用损失函数

目标:预测一个连续数值(例如房价、温度、销售量等)

1.1. 什么是线性回归?

线性回归是一种用“直线”来拟合数据,并根据这条直线进行预测的算法。

这是一张典型的线性回归示意图:

  • 蓝色散点:实际的数据
  • 红色直线:模型拟合出来的最佳回归线

它清晰地展示了“输入x与输出y地线性关系。

线性回归的目标就是找到这条最佳回归线,让直线尽量靠近每个点。这通常通过最小化“损失函数”来实现。

1.2. 均方误差(MSE, Mean Squared Error)

均方误差是一种常用的回归模型损失函数。计算方式是先求出每个样本预测值和真实值得差值,然后对这些差值求平方,最后求得所有平方值得平均值。因为平方操作会放大误差得影响,所以对大误差比较敏感。

公式:

$L_{avg} = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2$

其中:

  • $n$:样本数量
  • $\hat{y}_i$​:第i个样本预测值
  • $y_i$: 第i个样本的真实值

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

平均绝对误差计算得是预测值与真实差值的绝对值的平均值。因为没有对误差求平方,对异常值不敏感。

公式:

$L_{avg} = \frac{1}{n} \sum_{i=1}^n |y_i - \hat{y}_i|$

1.4. Huber 损失

Huber是一种结合了MSE和MAE优点的损失函数,它在误差较小时表现得像MSE,在误差较大时表现得像MAE。

单个样本损失:

$ L_\delta(y, \hat{y}) = \begin{cases} \frac{1}{2}(y - \hat{y})^2 & \text{if } |y - \hat{y}| \le \delta \\ \delta(|y - \hat{y}| - \frac{1}{2}\delta) & \text{otherwise} \end{cases} $

其中:

  • $\delta$:超参数,用于控制从MSE到MAE的过度点

2. 二分类任务常用损失函数

目标:输出类别为两类,例如“猫 vs 狗”

2.1 二元交叉熵损失(Binary Cross-Entropy)

通过对数放大预测概率与真是标签的偏差,预测结果越接近真实概率,损失越小,反正则损失急剧增大。能很好地衡量预测概率和真实标签的差距。

单个样本损失:

$L_i = -\big[y_i \log(\hat{y}_i) + (1 - y_i)\log(1 - \hat{y}_i)\big]$

数据集平均损失:

$L_{avg}= \frac{1}{n} \sum_{i=1}^n{}{L_i}$

其中:

  • $n$:样本数量
  • $y_i$​: 第i个样本的真实标签(仅取0或1)
  • $\hat{y}_i$:第i个样本预测概率(需搭配Sigmoid激活函数,将原始输出压缩到(0,1)区间,该输出值代表样本属于正类的概率)

说明:

  • Sigmoid函数曲线: 是一种S型的连续非线性激活函数,核心作用是将任意实数范围的输入压缩到(0, 1) 区间。

  • log(x)函数曲线:log(1)=0,当x趋近0的时候,log(x)趋近负无穷大。

  • 当真实标签$y_i$=1(正类):

        公式简化为

$L_i = -\log(\hat{y}_i)$

        若$\hat{y}_i$接近1,$-\log(\hat{y}_i)$接近0, 损失极小。

        若$\hat{y}_i$​接近0,$-\log(\hat{y}_i)$接近趋近 $\infty$, 损失急剧增大。

  • 当真实标签yiyi​=0(正类):

    公式简化为

    $L_i = -\log(1-\hat{y}_i)$

    $\hat{y}_i$​接近0,$-\log(1-\hat{y}_i)$接近0, 损失极小。

         若$\hat{y}_i$$-\log(1-\hat{y}_i)$接近1,−log⁡(1−y^i)−log(1−y^​i​)接近趋近 $\infty$, 损失急剧增大。

3. 多分类任务常用损失函数

目标:预测多个类别中的一个,如数字识别、图像分类等

3.1 交叉熵损失(Categorical Cross-Entropy)

核心作用是通过对数函数实现对预测偏差的差异化惩罚。真实标签需要用“独热编码(One-Hot Encoding)”。

单个样本损失:

$L_i = -\sum_{c=1}^C y_{i,c} \log(\hat{y}_{i,c})$

其中:

  • $C$:分类类别的数量
  • $y_{i,c}$​: 第i个样本的独热标签中,第c类的真实值(仅0或1)
  • $\hat{y}_{i,c}$:第i个样本经Softmax输出后,第c类的预测概率

说明:

  • 独热编码(One-Hot Encoding)

    独热编码是一种将离散类别标签转换为二进制向量的编码方式,核心特点是“向量长度等于类别总数,仅真实类别对应的位置为 1,其余位置均为 0”,以此将非数值型的类别标签转化为模型可理解的数值格式,尤其适用于多分类任务(如交叉熵损失计算)。

    • 示例:三分类任务(类别:猫=0、狗=1、鸟=2)
    原始类别标签独热编码标签含义解读
    猫(索引 0)[1, 0, 0]仅“猫”对应的位置为 1,代表样本属于猫类
    狗(索引 1)[0, 1, 0]仅“狗”对应的位置为 1,代表样本属于狗类
    鸟(索引 2)[0, 0, 1]仅“鸟”对应的位置为 1,代表样本属于鸟类
  • Softmax函数

    Softmax 函数是一种将模型的多类别原始线性输出(如 z_1, z_2, ..., z_C )转换为合法概率分布的非线性激活函数,核心作用是让输出满足“每个类别概率 ∈ [0,1] 且所有类别概率之和 = 1”,是多分类任务中模型输出层的“标配激活函数”,需与 Categorical 交叉熵损失搭配使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值