深度学习基础-损失函数

前言

经过上一篇深度学习基础-神经网络我们对神经网络有了一个初步的了解本文将深入讲解损失函数

选择不同损失函数的原因

上文说到损失函数是衡量模型预测值和实际值误差的函数但不同的模型需要不同的指标去衡量误差原因如下1离群点对不同的模型的影响不同如果离群点是需要重点关注的异常值我们要选择均方误差这种对离群点敏感的损失函数2回归问题和分类问题需要不同的损失函数前者输出预测值更多基于距离度量后者输出预测类别更多基于概率分布度量3不同损失函数的收敛速度不一样要根据模型去选择4不同模型对预测结果的大小应有不同的损失预测错误的梯度幅值应根据模型选择

损失函数分类

回归问题

1绝对值误差MAEL1损失

$ L_{\!M\!A\!E\!}(y,f(x))=|y-f(x)|$

对异常点有更好的鲁棒性但对所有点的梯度都一样在0点不可导在0的去心邻域内梯度也很大不利用收敛

2均方误差L2损失

$ L_{\!M\!S\!E\!}(y,f(x))=[y-f(x)]^2$

计算简便损失的梯度随损失增大而增大而损失趋于0时则会减小对异常点灵敏可能出现梯度爆炸问题

L1L2是指L1L2范数假设$X=(x_1,x_2,\cdots,x_n)$

L0范数$\| X\|_0$为向量$X$中的非零元素个数

L1范数为$\|X \|_1=\sum \vert x_i\vert$

L2范数为$\| X\|_2=\sqrt{\sum x_i^2}$

Lp范数为$\| X\|_p=\sqrt[p]{\sum x_i^p}$

p趋于$\infty$$\| X\|_{\infty}=max{\vert x_i\vert}$

3Huber误差

$\displaystyle L_{\delta}(y,f(x))= \begin{cases} \frac{1}{2}(y-f(x))^2 & |y-f(x)|\leq \delta, \\ \delta|y-f(x)|-\frac{1}{2}\delta^2 & otherwise. \end{cases}$

结合了MAE和MSE的优点 $\delta$为超参数需要去评估$\delta$的值

$\vert y-f(x) \vert> \delta$梯度一直近似为 $\delta$能够保证模型以一个较快的速度更新参数又对离群点较为鲁棒
$\vert y-f(x) \vert\leq\delta$梯度逐渐减小能够保证模型收敛

4双曲余弦误差Log-cosh

二阶处处可微$ L(y,f(x))=log[cosh(f(x)-y)]$

相当于处处二次可导的Huber损失用牛顿法优化迭代时就需要二阶导数而且没有超参数

5分位数损失

$\displaystyle L_{\gamma}(y,f(x))=\sum_{i:y_i<f(x_i)}(1-\gamma)|y_i-f(x_i)|+\sum_{i:y_i \geq f(x_i)}\gamma|y_i-f(x_i)|$

通过分位值$ \gamma$对高估和低估给予不同的惩罚反映对正误差和负误差的重视程度

$\gamma=0.5$时相当于绝对值损失$\gamma>0.5$时对负误差更敏感$\gamma<0.5$时对正误差更敏感

$\gamma$取不同值可以获取不同分位可以预测结果的上下界

分类问题

对于分类问题上述损失函数不太适用

1Hinge损失

$ L=max\{0\ , 1-yf(x)\}$

适用于支持向量机SVM的二分类不仅要分类正确还要让间隔最大

下面是其变体

原型蓝色在1处不可导

平方变体绿色$max\{0, 1-yf(x)\}^2$

以及 Rennie 和 Srebro 提出的分段平滑变体红色$\begin{cases}0.5-yf(x) & yf(x)\leq0 \\ 0.5(1-yf(x))^2 & 0<yf(x)<1 \\ 0 & yf(x)\geq 1 \end{cases}$

2交叉熵损失

  • 二分类用Binary Cross-Entropy

    $\displaystyle L(y,f(x))=-y\log p-(1-y)\log(1-p)=\begin{cases}-\log p & y=1 \\ -\log(1-p) & y=0 \end{cases}$

配上Sigmoid激活函数只输出一个概率值p

  • 多分类时一般都用交叉熵损失函数

    $\displaystyle L(y,f(x))=-\sum_{c=1}^N y\log(p_c)$

    配上softmax激活函数输出属于各个类别的概率$p_c$为预测为类别c的概率N为类别数量

3focal损失

预测错误的梯度更大预测正确的梯度小自适应样本的分类难易程度

其实就是让保持分类正确加大调整分类错误的

$\displaystyle L(y,f(x))=\begin{cases}-(1-p)^{\gamma}\log p & y=1 \\ -p^{\gamma}\log(1-p) & y=0 \end{cases}$

蓝线为二分类交叉熵损失