【引言】
所有机器学习算法都旨在
最小化或最大化目标函数
,其中,将目标函数最小化的过程称为
损失函数
。
损失函数
:是衡量预测模型预测期望结果表现的指标。常用方法为
梯度下降法
,通过设置一定的步长,让函数在求导的过程中逐渐逼近
谷值
。而损失函数往往因为机器学习算法的类别分为
回归损失函数和分类损失函数
。
1、回归损失函数
,常见的有:
1、最小平方误差法(MSE)
2、平均绝对值误差法(MAE)
3、平滑平均绝对值误差法(S-MAE)
4、Log-cosh对数损失
5、quantile-loss分位数损失点
2、分类损失函数
,常见的有:
1、对数损失法
2、Focal Loss
3、KL-Divergence
4、指数损失
5、Hinger Loss
1、均方误差(MSE——L2损失):
顾名思义:
M
S
E
=
1
2
m
∑
i
=
1
m
(
y
^
−
y
)
2
MSE = \frac{1}{2m}\sum_{i=1}^{m}{(\hat{y}-y)^2}
M
S
E
=
2
m
1
i
=
1
∑
m
(
y
^
−
y
)
2
预测值与真实值的差值的平方之和,再求平均数。一般的,会用2m作为项数分母是为了便于求导。
利用的是欧氏距离
。
2、平均绝对误差(Mean Absolute Error——L1损失)
MAE是目标变量和预测变量之间差异绝对值之和。显然,MAE
利用的是曼哈顿距离
,公式如下:
M
A
E
=
1
m
∑
i
=
1
m
∣
y
^
−
y
∣
MAE=\frac{1}{m}{\sum_{i=1}^{m}|\hat{y}-y|}
M
A
E
=
m
1
i
=
1
∑
m
∣
y
^
−
y
∣
L1与L2的比较:
使用MSE
更易求解
,但使用MAE对离群点
更加鲁棒
。当我们训练机器学习模型时,目的就是找到最小化损失函数的点。当然,当预测值正好等于真实值时,这两个损失函数都达到最小值。
不难观察,MSE自带了2范式,因此在出现e=y_hat – y 时,因为平方项的原因,会使得数据间隔变大。这将MSE与 MAE 相比,以前者为损失的模型会赋予更高的权重给离群点。
虽然可以利用 RMSE (标准差代替平方差)为损失的模型
将被调整以最小化这个离群数据点,但是却是以
牺牲其他正常数据点的预测效果
为代价,这最终会降低模型的整体性能。
因此可以得出,
MAE损失更适用于训练数据被离群点损坏的时候
。
不过,
针对神经网络
时使用 MAE 损失容易产生一个大问题是
它的梯度始终相同
,这意味着即使对于小的损失值,其梯度也是大的。此时使用MSE更好。
【总结】
如果离群点是会影响业务、而且是应该被检测到的异常值,那么我们应该使用 MSE。另一方面,如果我们认为离群点仅仅代表数据损坏,那么我们应该选择 MAE 作为损失。
3、Huber Loss或Smooth-MAE(平滑的平均绝对误差)
Huber Loss 对数据离群点的敏感度低于平方误差损失,在0处也可导。基本上它是绝对误差,当误差很小时,误差是二次形式的。误差何时需要变成二次形式取决于一个超参数δ,该超参数可以进行微调。当 ? ~ 0时, Huber Loss 接近 MAE,当 ? ~ ∞(很大的数)时,Huber Loss 接近 MSE。
Huber Loss类似于一个分段函数,拥有L1和L2损失的特点,其关键在于对δ的取值。使用 MAE 训练神经网络的一个大问题是经常会遇到很大的梯度,使用梯度下降时可能导致
训练结束时错过最小值
。对于 MSE,梯度会随着损失接近最小值而降低,从而使其更加精确。在这种情况下,Huber Loss 可能会非常有用,因为它会使最小值附近弯曲,从而降低梯度。另外它比 MSE 对异常值更鲁棒。因此,它
结合了 MSE 和 MAE 的优良特性
。但是,Huber Loss 的问题是我们可能
需要迭代地训练超参数δ
。
4、Log Cosh Loss
Log Cosh比L2更加的平滑,也它是预测误差双曲余弦的对数。
L
(
y
^
,
y
)
=
∑
i
=
1
m
l
o
g
(
c
o
s
h
(
y
^
i
,
y
i
)
)
L(\hat{y},y) = \sum_{i=1}^{m}log(cosh(\hat{y}_i, y_i))
L
(
y
^
,
y
)
=
i
=
1
∑
m
l
o
g
(
c
o
s
h
(
y
^
i
,
y
i
)
)
【其优点在于】
l
o
g
(
c
o
s
h
(
y
^
,
y
)
)
log(cosh(\hat{y},y))
l
o
g
(
c
o
s
h
(
y
^
,
y
)
)
对于小的<
y
^
,
y
\hat{y},y
y
^
,
y
>来说,其大约等于
x
2
2
\frac{x^2}{2}
2
x
2
,而对于大的 x 来说,其大约等于
∣
y
^
,
y
∣
−
l
o
g
(
2
)
|{\hat{y}, y}| – log(2)
∣
y
^
,
y
∣
−
l
o
g
(
2
)
。这意味着log-cosh的作用大部分与均方误差一样,但不会受到偶尔出现的极端不正确预测的强烈影响。它具有Huber Loss 的所有优点,和 Huber Loss 不同之处在于,其
处处二次可导
。
5、Quantile Loss(分位数损失)
(暂不补充)