Loss Function(损失函数)
- 选择模型家族
- 定义损失函数量化预测误差
- 通过优化算法找到最小化损失的最优模型参数
一、 损失函数的作用
- 目标: 量化模型预测与真实结果之间的差异。
- 示例:均方误差(MSE)用于回归;交叉熵损失用于分类。
- 考虑因素:损失的性质(凸性、可微性等)、易于优化、对异常值的鲁棒性等。
二、损失函数的重要性:
- 在机器学习中,目标是使预测值尽可能接近真实值,因此需要通过最小化预测值和真实值之间的差异来实现。
- 损失函数的选择对于模型的训练速度和效果至关重要,因为不同的损失函数会导致不同的梯度下降速度。
三、损失函数的位置:
- 损失函数位于机器学习模型的向前传播和向后传播之间。
- 在向前传播阶段,模型根据输入特征生成预测值。
- 损失函数接收这些预测值,并计算与真实值之间的差异。
- 这个差异随后被用于向后传播阶段,以更新模型的参数并减少未来的预测误差。
误差和损失的区别:误差反映单个数据点的预测偏差,损失则是整体数据集的预测偏差总和。损失函数运用这两者原理,聚合误差以优化模型,降低总体预测偏差。
误差(Error):对单个数据点预测结果与真实值之间的差异,用于评估模型在特定数据点上的预测准确性。
定义:误差是指模型在对单个数据点进行预测时,其预测结果与真实值之间的差异或偏离程度。这种差异反映了模型预测的不准确性或偏差。
计算:误差可以通过多种数学公式来计算。其中,绝对误差是预测值与真实值之间差值的绝对值,用于量化预测偏离真实值的实际大小;平方误差则是预测值与真实值之间差值的平方,常用于平方损失函数中,以便更显著地突出较大的误差。
损失(Loss):损失是衡量机器学习模型在整个数据集上预测不准确性的总体指标,通过最小化损失可以优化模型参数并改进预测性能。
定义:损失是衡量机器学习模型在整个数据集上预测的总体不准确性的指标。它反映了模型预测与真实值之间的差异,并将这些差异进行聚合, 以提供一个标量值来表示预测的总体不准确性。
计算:损失的具体计算是通过损失函数来完成的。损失函数接受模型的预测值和真实值作为输入,并输出一个标量值,即损失值,表示模型在整个数据集上的总体预测误差。
损失曲线 :损失曲线直观地呈现了模型在训练过程中损失值的变化趋势。通过绘制训练损失和验证损失随迭代次数的变化,我们能够洞察模型是否遭遇过拟合或欠拟合等问题,进而调整模型结构和训练策略。
几种损失函数介绍
1. MAE(Mean Absolute Error - 平均绝对误差)是误差的绝对值的平均值,其公式为:
其中, $n$为样本个数;$y_i$ 为真实值;$\hat{y_i}$ 为预测值。
MAE对异常值不敏感,不能反映预测误差的分布情况。
2. MSE(Mean Square Error - 均方误差)是误差平方和的平均值,其公式为:
其中,$n$为样本个数; $y_i$为真实值; $\hat {y_i}$为预测值。
MSE对异常值敏感(因为当异常值与正常值差距较大时,误差会大于1,取平方值以后会进一步增大数值),但它们能够反映预测误差的分布情况。
3. RMSE(Root Mean Square Error - 均方根误差)是MSE的平方根,其公式为:
其中, $n$为样本个数;$y_i$ 为真实值;$\hat{y_i}$ 为预测值。
RMSE对异常值敏感,它们能够反映预测误差的分布情况。
4. MRE(Mean Relative Error - 平均相对误差)是相对误差(相对误差是指误差相对于真实值的比例)绝对值的平均值,其公式为:
其中, $n$为样本个数;$y_i$ 为真实值;$\hat{y_i}$ 为预测值。
MRE可以反映相对误差的大小,但是不能反映绝对误差的大小。
指标 | 全称 | 公式 | 优点 | 缺点 | ||||
---|---|---|---|---|---|---|---|---|
MAE | Mean Absolute Error 平均绝对误差 |
$\text{MAE} = \frac{1}{n} \sum_{i=1}^{n} \ | y_i - \hat{y}_i\ | $ | • 对异常值不敏感 • 直观易理解 • 单位与原数据一致 • 计算简单 |
• 在零点不可导 • 对所有误差权重相同 • 优化相对困难 |
||
MSE | Mean Squared Error 平均平方误差 |
$\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2$ | • 处处可导,便于优化 • 对大误差惩罚更重 • 数学性质良好 • 广泛应用于损失函数 |
• 对异常值敏感 • 单位是原数据的平方 • 不直观,难以解释 |
||||
RMSE | Root Mean Square Error 均方根误差 |
$\text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}$ | • 单位与原数据一致 • 对大误差惩罚重 • 比MSE更直观 • 保持MSE的数学性质 |
• 对异常值敏感 • 计算复杂度略高 • 在某些优化中不如MSE方便 |
||||
MRE | Mean Relative Error 平均相对误差 |
$\text{MRE} = \frac{1}{n} \sum_{i=1}^{n} \frac{\ | y_i - \hat{y}_i\ | }{\ | y_i\ | }$ | • 无量纲,便于比较 • 反映相对误差大小 • 适合不同量级数据比较 |
• 当真实值接近0时不稳定 • 对小的真实值敏感 • 可能产生极大值 |
使用建议:
- MAE:适用于需要稳健性、不希望异常值过度影响结果的场景
- MSE:适用于模型训练优化,特别是需要可导性的场景
- RMSE:适用于需要与原数据同量纲且希望惩罚大误差的评估场景
- MRE:适用于不同量级数据的相对误差比较,但需注意分母接近零的情况
回归损失函数与交叉熵损失函数对比
回归损失函数 vs 交叉熵损失函数
特征 | 回归损失函数 (MAE, MSE, RMSE, MRE) |
交叉熵损失函数 (Cross-Entropy Loss) |
---|---|---|
适用任务 | 回归任务 | 分类任务 |
预测目标 | 连续数值 | 类别概率分布 |
输出形式 | 实数值 | 概率值(0-1之间,和为1) |
数学基础 | 距离度量 | 信息论 |
核心思想 | 衡量预测值与真实值的差距 | 衡量两个概率分布的差异 |
典型应用 | 房价预测、股价预测、温度预测 | 图像分类、文本分类、情感分析 |
交叉熵损失函数详解
- 定义与公式
二分类交叉熵损失函数: $\text{BCE} = -\frac{1}{n} \sum_{i=1}^{n} [y_i \log(\hat{y}_i) + (1-y_i) \log(1-\hat{y}_i)]$
多分类交叉熵损失函数: $\text{CE} = -\frac{1}{n} \sum_{i=1}^{n} \sum_{j=1}^{c} y_{ij} \log(\hat{y}_{ij})$
其中:
- $y_i$ 或 $y_{ij}$:真实标签(one-hot编码)
- $\hat{y}i$ 或 $\hat{y}{ij}$:预测概率
- $n$:样本数量
- $c$:类别数量
- 信息论基础
交叉熵源于信息论,用于衡量两个概率分布之间的差异:
信息量:$I(x) = -\log P(x)$
熵:$H(P) = -\sum P(x) \log P(x)$
交叉熵:$H(P,Q) = -\sum P(x) \log Q(x)$
KL散度:$D_{KL}(P||Q) = H(P,Q) - H(P)$
KL散度(Kullback-Leibler Divergence)是衡量两个概率分布差异的重要指标,也被称为相对熵。
直观理解 KL散度可以理解为:当我们用分布Q来近似真实分布P时,所损失的信息量。值越大,说明两个分布差异越大;值为0时,两个分布完全相同。
- 交叉熵损失函数的特点
优点:
- 概率解释明确:输出可解释为概率分布
- 数学性质良好:凸函数,便于优化
- 梯度特性优秀:在错误预测时梯度大,正确预测时梯度小
- 信息论基础:有坚实的理论基础
- 与softmax配合:天然适配softmax激活函数
缺点:
- 仅适用于分类:不能直接用于回归任务
- 对异常标签敏感:错误标注会显著影响结果
- 需要概率输出:要求模型输出概率分布
- 数值稳定性:当预测概率接近0或1时可能出现数值问题
- 变种与扩展
Focal Loss(焦点损失):
$\text{FL} = -\alpha (1-\hat{y})^\gamma \log(\hat{y})$
- 解决类别不平衡问题
- 减少易分样本的权重
Labe-l Smoothing(标签平滑):
$\text{LS-CE} = -\sum [(1-\epsilon)\delta_{y,i} + \frac{\epsilon}{K}] \log(\hat{y}_i)$
- 防止过度自信
- 提高模型泛化能力
Weighted Cross-Entropy(加权交叉熵):
$\text{WCE} = -\sum w_i y_i \log(\hat{y}_i)$
- 处理类别不平衡
- 对不同类别赋予不同权重
数学背景(凸函数和凹函数)
┗|`O′|┛ 嗷~~
数学定义差异
- 凸函数:对于任意两点,连接它们的线段位于函数图像之上
- 凹函数:对于任意两点,连接它们的线段位于函数图像之下
在深度学习中的关键区别
1. 优化难度
- 凸函数的优化相对简单,因为:
- 任何局部最优解都是全局最优解
- 梯度下降能够保证收敛到全局最优
- 不存在多个局部极值点的问题
- 凹函数(或非凸函数)的优化更复杂:
- 存在多个局部极值点
- 梯度下降可能陷入局部最优
- 需要更复杂的优化策略
2. 损失函数设计
- 线性回归的均方误差损失是凸函数,优化简单
- 逻辑回归的交叉熵损失也是凸函数
- 神经网络的整体损失函数通常是非凸的,优化困难
参考链接: