损失函数是用来衡量模型预测值和真实值之间的差距的函数,不同的损失函数适用于不同的机器学习任务。常见的损失函数有以下几种:
回归损失:用于处理连续型变量的问题,例如预测房价、股票等。常用的回归损失函数有:
- 平均绝对误差(MAE/L1损失):计算预测值和真实值之间的绝对差值的平均值,对离群点或异常值更具有鲁棒性,但在0点处不可导,收敛速度慢。
- 平均平方误差(MSE/L2损失):计算预测值和真实值之间的平方差值的平均值,对离群点或异常值非常敏感,但收敛速度快,能够对梯度给予合适的惩罚权重。
- 平滑L1损失(Smooth L1 Loss):结合了L1和L2损失的优点,在0点附近使用L2损失,使其更加平滑易于收敛,在其他区域使用L1损失,使其对离群点或异常值更具有鲁棒性。
- IoU损失(Intersection over Union Loss):计算两个边框之间的交集和并集的比例,用于衡量边框的重叠程度,常用于目标检测等任务。
- GIoU损失(Generalized IoU Loss):在IoU损失的基础上引入了最小闭合凸面的概念,解决了IoU无法对不重叠边框进行优化的问题。
- DIoU损失(Distance IoU Loss):在GIoU损失的基础上引入了两个边框中心点之间的距离,解决了GIoU无法对边框回归进行精确优化和收敛速度缓慢的问题。
分类损失:用于处理离散型变量的问题,例如判断猫狗、识别人脸等。常用的分类损失函数有:
- 0-1损失(0-1 Loss):当预测值和真实值不相等时为1,否则为0,直接对应分类判断错误的个数,但是它是一个非凸函数,不太适用于梯度下降法。
- 对数损失(Logistic Loss):计算预测值和真实值之间的负对数似然,能够很好地表征概率分布,在二分类或多分类任务中常用
- 交叉熵损失(Cross-entropy Loss):一种特殊的对数损失,本质上也是一种最大似然估计,在神经网络中常用于输出层。
- 铰链损失(Hinge Loss):当预测值和真实值相同时为0,否则为两者之差与一个超参数之和的最大值,常用于支持向量机(SVM)等模型。
- 指数损失(Exponential Loss):计算预测值和真实值之间差异的指数函数,常用于AdaBoost算法中。