在机器学习和深度学习中,经常听到损失函数这个词,到底什么是损失函数?
一、损失函数
损失函数(Lossfunction)又叫做误差函数,用来衡量算法的运行情况,估量模型的预测 值 f ( x ) f(x) f(x)与真实值 Y Y Y的不一致程度,是一个非负实值函数,通常使用 L ( Y , f ( x ) ) L(Y,f(x)) L(Y,f(x)) , 来表示,损失函数越小,模型的鲁棒性就越好。
损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。
==与代价函数有细微的区别是,损失函数是计算的是一个样本的误差。==但是在实际中,损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念,目标函数是代价函数 + 正则化项。
二、常见的损失函数
机器学习通过对算法中的目标函数进行不断求解优化,得到最终想要的结果。分类和回归问题中,通常使用损失函数或代价函数作为目标函数。
损失函数用来评价预测值和真实值不一样的程度。通常损失函数越好,模型的性能也越好。
损失函数可分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和 实际结果的差别,结构风险损失函数是在经验风险损失函数上加上正则项。
下面介绍常用的损失函数:
2.1 回归问题
常见的回归问题损失函数有绝对值损失、平方损失、Huber损失。
1、 绝对值损失函数
绝对值损失函数又叫做L1损失,和 0-1 损失函数相似,绝对值损失函数表示为:
L ( Y ∣ f ( x ) ) = ∣ Y − f ( x ) ∣ L(Y|f(x))=|Y-f(x)| L(Y∣f(x))=∣Y−f(x)∣
M A E = 1 N ∑ i = 1 N ∣ Y − f ( x ) ∣ MAE=\frac{1}{N}\sum_{i=1}^{N}|Y-f(x)| MAE=N1i=1∑N∣Y−f(x)∣
M A E MAE MAE一个问题是在 Y − f ( x ) = 0 Y-f(x)=0 Y−f(x)=0处不可导,优化比较困难。
2、 平方损失函数
平方损失函数又称为L2损失,定义如下:
L ( Y ∣ f ( x ) ) = 1 N ∑ N ( Y − f ( x ) ) 2 L(Y|f(x))=\frac{1}{N}\sum_{N}(Y-f(x))^2 L(Y∣f(x))=N1N∑(Y−f(x))2
这点可从最小二乘法和欧几里得距离角度理解。最小二乘法的原理是,最优拟合曲线应该使所有点到回归直线的距离和最小。
平方损失函数的一个问题是对异常点敏感,由于平方的存在,会放大对异常点的关注。
3、Huber损失函数
Huber损失函数相当于是L1和L2损失的一个结合。
L δ ( Y , f ( x ) ) = { 1 2 ( Y − f ( x ) ) 2 ( ∣ Y − f ( x ) ∣ ⩽ δ ) δ ∣ Y − f ( x ) ∣ − 1 2 δ 2 ( ∣ Y − f ( x ) ∣ >