机器学习之损失函数(四大常见的损失函数学习)
核心说明:损失函数用于衡量模型预测值与真实值的偏差,偏差越小,模型效果越好。以下是四种常用损失函数的关键要点,适配快速回顾。
一、0-1损失函数(0-1 Loss Function)
1. 定义
最朴素的损失函数,仅判断预测值与真实值是否一致,一致则损失为0,不一致则损失为1。
2. 公式
设真实值为yyy,预测值为y^\hat{y}y^(取值均为0或1,适用于分类任务):
L(y,y^)={0,y=y^1,y≠y^L(y, \hat{y}) = \begin{cases} 0, & y = \hat{y} \\ 1, & y \neq \hat{y} \end{cases}L(y,y^)={0,1,y=y^y=y^
3. 特点
- 优点:简单直观,直接反映预测对错,计算成本极低。
- 缺点:不连续、不可导,无法用于梯度下降优化(梯度下降要求损失函数可导);未区分错误预测的严重程度(如预测错误的概率0.9和0.6,损失均为1)。
4. 适用场景
仅用于简单的分类任务评估(如初步判断模型预测准确率),不用于模型训练。
具体例子:假设用模型判断邮件是否为垃圾邮件(分类任务,y=1为垃圾邮件,y=0为正常邮件)。若某封垃圾邮件(y=1)被预测为正常邮件(ŷ=0),损失为1;若被正确预测为垃圾邮件(ŷ=1),损失为0;无论预测错误的概率是0.1(几乎判断为正常)还是0.4(接近判断为垃圾),损失均为1,无法区分错误程度。
二、平方损失函数(Squared Loss Function)
1. 定义
又称均方误差(MSE),计算预测值与真实值差值的平方,放大较大偏差的损失。
2. 公式
设真实值为yyy,预测值为y^\hat{y}y^(适用于回归任务,取值为连续值):
L(y,y^)=(y−y^)2L(y, \hat{y}) = (y - \hat{y})^2L(y,y^)=(y−y^)2
批量样本损失(均方误差):MSE=1n∑i=1n(yi−y^i)2MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2MSE=n1i=1∑n(yi−y^i)2(n为样本数)
3. 特点
- 优点:连续、可导,便于使用梯度下降优化;计算简单,对小偏差敏感。
- 缺点:对异常值(离群点)极度敏感,异常值会导致损失急剧增大,影响模型参数优化。
4. 适用场景
适用于无异常值、数据分布均匀的回归任务(如房价预测、销量预测,无极端异常数据)。
具体例子:预测某小区房价(回归任务,真实值y为实际房价)。假设3个样本的真实房价分别为100万、120万、110万,模型预测值分别为102万、118万、112万,计算单个样本损失:(100-102)²=4、(120-118)²=4、(110-112)²=4,损失均匀;若出现异常值(如真实房价100万,预测值150万),损失为(100-150)²=2500,会被急剧放大,严重影响模型参数。
三、绝对损失函数(Absolute Loss Function)
1. 定义
又称平均绝对误差(MAE),计算预测值与真实值差值的绝对值,对偏差的惩罚是线性的,不放大异常值。
2. 公式
设真实值为yyy,预测值为y^\hat{y}y^(适用于回归任务):
L(y,y^)=∣y−y^∣L(y, \hat{y}) = |y - \hat{y}|L(y,y^)=∣y−y^∣
批量样本损失(平均绝对误差):MAE=1n∑i=1n∣yi−y^i∣MAE = \frac{1}{n}\sum_{i=1}^{n}|y_i - \hat{y}_i|MAE=n1i=1∑n∣yi−y^i∣
3. 特点
- 优点:对异常值鲁棒性强(异常值的损失不会被放大);直观反映预测偏差的平均水平。
- 缺点:在y=y^y = \hat{y}y=y^处不可导(绝对值函数拐点),可能影响梯度下降的收敛速度。
4. 适用场景
适用于存在异常值的回归任务(如收入预测、股价预测,易出现极端值)。
具体例子:预测某行业从业者月收入(回归任务,真实值y为实际收入)。3个样本真实收入为8000元、10000元、12000元,模型预测值为8500元、9500元、12500元,单个样本损失分别为500、500、500,损失均匀;若出现异常值(真实收入8000元,预测值18000元),损失为|8000-18000|=10000,不会像平方损失那样被放大,对模型影响较小。
四、对数似然损失函数(Log-Likelihood Loss Function)
1. 定义
基于概率似然思想,衡量模型预测概率与真实标签的匹配度,核心用于分类任务(二分类、多分类),常被称为交叉熵损失(二分类场景下,对数似然损失与交叉熵损失等价)。
2. 公式(分场景)
(1)二分类场景(真实标签y∈{0,1},预测概率p^=P(y=1∣y^)\hat{p} = P(y=1|\hat{y})p^=P(y=1∣y^))
L(y,p^)=−[ylogp^+(1−y)log(1−p^)]L(y, \hat{p}) = -[y\log\hat{p} + (1-y)\log(1-\hat{p})]L(y,p^)=−[ylogp^+(1−y)log(1−p^)]
(2)多分类场景(真实标签为独热编码,yky_kyk为第k类的真实值,p^k\hat{p}_kp^k为预测第k类的概率)
L(y,p^)=−∑k=1Kyklogp^kL(y, \hat{p}) = -\sum_{k=1}^{K}y_k\log\hat{p}_kL(y,p^)=−k=1∑Kyklogp^k(K为类别数)
3. 特点
- 优点:可导,适合梯度下降优化;对预测概率的偏差敏感,能有效区分“预测错误的严重程度”(如预测正类概率0.1和0.4,损失不同)。
- 缺点:当预测概率为0或1时,会出现log(0)的无意义情况,需加入微小值(如1e-10)避免计算错误;对类别不平衡数据敏感,需结合权重调整。
4. 适用场景
核心用于分类任务(如垃圾邮件识别、图像分类、疾病诊断),是深度学习分类模型(如CNN、Transformer)的常用损失函数。
具体例子:1. 二分类(疾病诊断):真实标签y=1(患病),模型预测患病概率p̂=0.9,损失为-[1×log0.9 + 0×log0.1]≈0.105;若预测概率p̂=0.4,损失为-[1×log0.4 + 0×log0.6]≈0.916,能明显区分两种错误的严重程度。2. 多分类(图像分类):真实标签为“猫”(独热编码y₁=1,y₂=0,y₃=0),模型预测“猫”的概率p̂₁=0.8,“狗”p̂₂=0.1,“兔”p̂₃=0.1,损失为-(1×log0.8 + 0×log0.1 + 0×log0.1)≈0.223,匹配度越高,损失越小。
补充:核心对比(快速区分)
- 分类任务首选:对数似然损失(交叉熵);简单评估用0-1损失。
- 回归任务:无异常值用平方损失,有异常值用绝对损失。
- 可导(用于训练):平方损失、对数似然损失;不可导(仅用于评估):0-1损失、绝对损失(拐点处不可导)。
综上,四种损失函数各有优劣,核心是根据任务类型(分类/回归)、数据特点(有无异常值、类别是否平衡)选择适配的函数。实际应用中,需结合数据情况灵活取舍,必要时可对损失函数进行调整(如给对数似然损失增加类别权重),以提升模型性能。