机器学习模型依赖损失函数来学习,它衡量模型预测值与真实值的偏差程度。预测值与真实值之间偏差越大,损失函数值越高。通过优化函数,模型逐渐调整参数,降低损失函数值,实现更好的预测效果。
并非所有机器学习算法都适用同一损失函数,选择合适的损失函数取决于具体的问题,例如算法类型、导数计算复杂度以及数据集中异常值的比例。
根据学习任务类型,损失函数可分为两大类:回归损失和分类损失。
回归损失
均方误差 (MSE) / 平方损失 / L2 损失
数学公式:
MSE 度量预测值与真实值之间平方差的平均值,只考虑误差大小,不考虑方向。平方运算使得偏差较大的预测值受到更严重的惩罚。由于其数学特性,MSE 可方便地计算梯度。
平均绝对误差 (MAE) / L1 损失
数学公式:
MAE 度量预测值与真实值之间绝对差之和的平均值,同样不考虑方向,但相比 MSE,MAE 对异常值更鲁棒,因为它不使用平方运算。MAE 需要更复杂的工具来计算梯度,例如线性规划。
平均偏差误差 (mean bias error)
与其他损失函数相比,平均偏差误差在机器学习中应用较少。它与 MAE 相似,区别在于它没有使用绝对值。使用该函数需要注意正负误差可能会互相抵消。尽管实际应用中不太准确,但它可以确定模型存在正偏差还是负偏差。
数学公式:
分类损失
Hinge Loss / 多分类 SVM 损失
简单来说,Hinge Loss 要求正确类别的分数高于所有错误类别的分数之和,且至少高出一定的安全间隔(通常为 1)。Hinge Loss 常用于最大间隔分类,最常见的是支持向量机。尽管不可微,但它是一个凸函数,可以使用机器学习领域常用的凸优化器进行优化。
数学公式:
例如,我们有三个训练样本,需要预测三个类别(狗,猫和马)。以下是算法预测的每个类别的值:
计算这 3 个训练样本的 Hinge Loss:
交叉熵损失 / 负对数似然:
这是分类问题中最常用的设置。交叉熵损失随着预测概率偏离实际标签而逐渐增加。
数学公式:
当实际标签为 1 (y(i)=1) 时,函数的后半部分消失;当实际标签为 0 (y(i=0)) 时,函数的前半部分消失。简单来说,我们将真实类别预测概率的对数相乘。重要的是,交叉熵损失会对那些置信度高但预测错误的样本进行惩罚。