机器学习和深度学习中的损失函数

损失函数(loss function)是用来估量模型的预测值f\left ( x \right )与真实值的不一致程度,它是一个非负函数,记为L\left ( Y, f\left ( X \right ) \right )一般来说,损失函数越小,模型的鲁棒性越好。损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数表示预测值与真实值之间的差异,结构风险损失函数是指经验风险损失函数加上正则化。一般形式为:

                                                       

选择模型时,可以选择经验风险最小化和结构风险最小化两种策略,经验风险最小化策略认为经验风险最小的模型就是最优的模型,就是上述公式的前一部分,量化描述模型的预测结果和与真实结果不一样的程度但是这种策略容易产生过拟合的现象,而结构风险最小化策略却可以防止过拟合。\Phi \left ( \theta \right )为正则化(regularization)项,用来度量模型的复杂度,模型越复杂,\Phi \left ( \theta \right )就越大,反之,模型越简单,\Phi \left ( \theta \right )值越小。结构风险最小化策略认为结构风险最小的模型是最优的模型,\lambda是系数,用来权衡经验风险和模型复杂度,正则化函数一般是L1和L2函数。

0-1损失函数(0-1 loss function)

                                                        L\left ( Y, f\left ( x \right ) \right )= \left\{\begin{matrix} 1, Y \neq f\left ( x \right )& \\ 0, Y = f\left ( x \right )& \end{matrix}\right.

该损失函数的意义是:当预测值和真实值不一样时,损失函数值为1,如预测值与真实值相等,那么损失函数值为0。

绝对值损失函数(absolute loss function)

                                                      L\left ( Y, f\left ( x \right ) \right )=\left | Y - f\left ( x \right ) \right |

该损失函数的意义为取预测值和真实值之间的绝对值。

平方损失函数(quadratic loss function)

                                                       L\left ( Y, f\left ( x \right ) \right )=\left ( Y-f\left ( x \right ) \right )^{2}

该损失函数表示的意义就是最优拟合曲线应该使得所有点到回归曲线的距离和最小。通常用欧几里得距离进行距离的度量。

对数损失函数(logarithmic loss function)

                                                      L\left ( Y, f\left ( x \right ) \right )=-log P \left ( Y | X \right )

对数损失函数用到了极大似然的思想。Logstic回归的损失函数就是对数损失函数,对于LR,假定的概率分布是伯努利(0-1)分布,满足P\left ( y=1 \right )=p,P\left ( y=0 \right )=1-p,所以似然函数就可以记为L\left ( \theta \right )=\prod_{i=1}^{n} P\left ( Y=1|x_{i} \right )^{y_{i}}\cdot P\left ( Y=0|x_{i} \right )^{1-y_{i}},为了求预测率,使用乘法,为了将其转变成加法,对齐取对数。最后由于是损失函数,一般要最小化,因此加个符号取反。

Hinge损失函数

Hinge 损失函数被用于“maximum-margin”分类器,尤其与支持向量机SVM息息相关。对于样本数据标签t=\pm 1和一个分类器预测值y,关于预测值y的hinge损失函数则被定义为:

                                                     L\left ( y \right )=max\left ( 0, 1-t\cdot y \right )

y是分类器决策函数的输出值,并不是预测的类别标签。可以看到当t和y符号相同时,也就是y值对应正确的类别,并且\left | y \right |> 1时,hinge损失函数的取值为0,但是如果符号不相同,也就是y值所对应的类别错误, 同样地,如果\left | y \right |< 1,那么L\left ( y \right )与y呈线性关系。

绿色的线是0-1损失函数,蓝色的线是t=1时的hinge损失函数。可以看到,hinge损失函数惩罚了y< 1\left ( t=1\right ),loss值不为0,这个特点和SVM中的分类间隔的概念是对应的。

回忆一下SVM的损失函数

                                                              \\ \pounds \left (\omega , b, \alpha \right ) \\ = \frac{1}{2}\left \| \omega \right \|^{2} - \sum_{i=1}^{n}\alpha_{i} \left ( y_{i}\left ( \omega ^{T}x_{i} + b \right ) - 1\right ) \\ =\sum_{i=1}^{n}\alpha_{i} \left (1- y_{i}\left ( \omega ^{T}x_{i} + b \right ) \right ) + \frac{1}{2}\left \| \omega \right \|^{2}

可以看到SVM的损失函数是Hinge损失函数+L2-norm

全局损失函数

我们的优化目标应当是使全局损失函数最小化。因此,全局损失函数往往是所有样本的损失函数之和,公式表示如下:

  :                                                      J\left ( w, b \right ) = \frac{1}{m}\sum_{i=1}^{m}L\left ( Y, f\left ( X \right ) \right )

softmax损失函数

神经网络不过是一个包含百万参数的非常复杂的函数。通常情况下,我们所谓的训练神经网络基本上是指最小化一个损失函数。在神经网络中,多分类问题时常见的损失函数就是softmax,sofmax作为分类任务的输出层。 简单认为softmax输出的是几个类别的概率,并且概率和为1。例如,有三个类别,经过 sofmax函数后的概率输出为[0.1, 0.7, 0.,2],概率和为1,概率值最大的类别就是输入数据所对应的类别,0.7概率值最大,所以输入经过计算被分类到第二类中。sofmax函数的公式为:

                                                            s\left ( i \right )=\frac{e^{z_{i}}} {\sum_{i=1}^{k} e^{z_{i}}}

z_{i}是上一层第i个神经元的输出,s\left ( i \right )则是第i类别经过softmax输出的概率值。

softmax loss的函数公式为

                                                        L=-\sum_{i=1}^{n}y_{i}log\left ( s_{i} \right )

其中y_{i}为真实值,因为s_{i}是一个向量,一般将真实标签表示成one-hot形式,或者不变,看所用函数要求。

你可能感兴趣的:(机器学习,深度学习,机器学习和深度学习之旅,损失函数,机器学习,深度学习)