前言
经过上一篇深度学习基础-神经网络
选择不同损失函数的原因
上文说到
损失函数分类
回归问题
1
$ L_{\!M\!A\!E\!}(y,f(x))=|y-f(x)|$
对异常点有更好的鲁棒性
2
$ L_{\!M\!S\!E\!}(y,f(x))=[y-f(x)]^2$
计算简便
注
L0范数$\| X\|_0$为向量$X$中的非零元素个数
L1范数为
L2范数为
Lp范数为
p趋于$\infty$时
3
$\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的优点
当 $\vert y-f(x) \vert> \delta$ 时
当 $\vert y-f(x) \vert\leq\delta$ 时
4
二阶处处可微
相当于处处二次可导的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$取不同值可以获取不同分位
分类问题
对于分类问题
1
$ L=max\{0\ , 1-yf(x)\}$
适用于支持向量机SVM的二分类
下面是其变体
原型
平方变体
以及 Rennie 和 Srebro 提出的分段平滑变体
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激活函数
-
多分类时
一般都用交叉熵损失函数, : $\displaystyle L(y,f(x))=-\sum_{c=1}^N y\log(p_c)$
配上softmax激活函数
输出属于各个类别的概率, $p_c$为预测为类别c的概率, N为类别数量,
3
预测错误的梯度更大
其实就是让保持分类正确
$\displaystyle L(y,f(x))=\begin{cases}-(1-p)^{\gamma}\log p & y=1 \\ -p^{\gamma}\log(1-p) & y=0 \end{cases}$
蓝线为二分类交叉熵损失