神经网络深度学习(一)损失函数

目录

一、什么是损失函数 

二、经验风险与结构风险

三、分类损失函数

四、回归损失函数及其特点

五、正则化

六、损失函数深入理解

1 分类问题可以使用MSE(均方误差)作为损失函数吗

2 softmax loss vs 交叉熵 loss

3 为什么交叉熵损失函数有log项?

4 交叉熵为什么可以作为损失函数?

5 SVM损失函数

6 Yolo的损失函数

7 iou计算


神经网络深度学习(一)损失函数_第1张图片

一、什么是损失函数 

什么是损失函数:简单的理解就是每一个样本经过模型后会得到一个预测值,然后得到的预测值和真实值的差值就成为损失

为什么引入损失函数:通过对比计算网络的前向传播结果和真实结果,计算出来的用于衡量两者之间差距的函数值。

二、经验风险与结构风险

经验风险
机器学习模型关于训练数据集的平均损失称为经验风险。

结构风险

结构风险是在经验风险的基础上加上表示模型复杂度的正则项(罚项)。

三、分类损失函数

Loss(h_w(X_i,yi)) 代表算法 说明

1.Hing-Loss

max(1 - h_w(x_i)y_i,0)p

  • 标准SVM(p=1)
  • (Differentiable) Squared Hingeless SVM (p=2)                                   
当用于标准SVM时,损失函数表示线性分隔符与其中任一类中的最近点之间的边距长度。 只有在p = 2时处处可导。   

2.Log-Loss

log(1+e^{-h_w(x_i)y_i})

Logistic回归                                

机器学习中最受欢迎的损失功能之一,因为它能输出概率

3.Exponential Loss 

e^{-h_w(x_i)y_i}

Adaboost 错误预测的丢失随着值的增加呈指数增长

−hw(xi)yi−hw(xi)yi

4.Zero-One Loss 

\delta(sign(h_w(xi)) \neq yi)

        
 实际分类损失  不连续,不容易优化

Cross Entropy Loss

在这里插入图片描述

交叉熵是用来度量两个概率分布的差异性的,用来衡量模型学习到的分布和真实分布的差异

四、回归损失函数及其特点

1.Squared Loss

(h(x_i)-y_i)^2

也被称为均分误差| 二次损失 | L2损失 | 普通最小二乘法(OLS) | Mean Square Error, Quadratic Loss, L2 Loss

优点:处处可导

缺点:对异常值敏感

2.Absolut Loss

|h(x_i)-y_i|

优点:对噪音不敏感

缺点:0点不可导

3 huber loss

平滑绝对损失

优点:结合了平方损失和绝对损失;一阶可导

当损失很小时采用平方损失(梯度小不会错过最小值),当损失很大时采用绝对损失(梯度大快速收敛)                                                 

4.fair loss

 神经网络深度学习(一)损失函数_第2张图片

5.Log-Cosh Loss

神经网络深度学习(一)损失函数_第3张图片

优点:与Huber损失类似,但处处二阶可导

缺点:对于误差很大的预测,其梯度和hessian是恒定的

6.Quantile Loss(分位数损失)

优点:基于Quantile Loss的回归模型可以提供合理的预测区间,即使是对于具有非常数方差或非正态分布的残差aaaa

五、正则化

目的:防止过拟合、提高模型泛化能力。通过在经验风险项后加上表示模型复杂度的正则化项或惩罚项,达到选择经验风险和模型复杂度都较小的模型目的。

L1

防止过拟合、提高模型泛化能力

输出稀疏,原因:

1) 施加 L1 regularization 时,只要 regularization 项的系数 C 大于原先费用函数在 0 点处的导数的绝对值,x = 0 就会变成一个极小值点。

2) 图形

3)在0附近的导数始终为正负1, 参数更新速度不变. L2 在0附近导数接近于0,

L2

输出不稀疏;计算起来更方便

dropout 输入的特征都存在被随机清除的可能,所以该神经元不会再特别依赖于任何一个输入特征,也就是不会给任何一个输入特征设置太大的权重。通过传播过程,dropout 将产生和 L2 正则化相同的收缩权重的效果。
early stop 

六、损失函数深入理解

1 分类问题可以使用MSE(均方误差)作为损失函数吗

2 MSE VS Cross Entrono

     1). 从损失函数本身看:

            a. 交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。MSE衡量的是预测值和目标值的欧式距离。分类问题中label的值大小在欧氏空间中是没有意义的。

例如:在一个三分类模型中,模型的输出结果为(a,b,c),而真实的输出结果为(1,0,0),那么MSE与cross-entropy相对应的损失函数的值如下:

MSE:
在这里插入图片描述
cross-entropy:
在这里插入图片描述

            b. 交叉熵的损失函数只和分类正确的预测结果有关系,而MSE的损失函数还和错误的分类有关系。强行使用的话:除了让正确的分类尽量变大,还会让错误的分类变得平均,

     2). 从优化角度看:

            a. 分类问题是逻辑回归,必须有激活函数这个非线性单元在,比如sigmoid(也可以是其他非线性激活函数),此时mse有多个极值点,所以不适用做损失函数了。

在这里插入图片描述

           b.  mse作为损失函数,求导的时候都会有对激活函数的求导连乘运算,对于sigmoid、tanh,有很大区域导数为0的。

                 在这里插入图片描述

2 softmax loss vs 交叉熵 loss

softmax是激活函数,交叉熵是损失函数,softmax loss是使用了softmax funciton的交叉熵损失。

3 为什么交叉熵损失函数有log项?

第一种:因为是公式推导出来的,比如第六题的推导,推导出来的有log项。极大似然取对数,再加上负号取最小值。

第二种:通过最大似然估计的方式求得交叉熵公式,这个时候引入log项。
这是因为似然函数(概率)是乘性的而loss函数是加性的,所以需要引入log项“转积为和”。而且也是为了简化运算

4 交叉熵为什么可以作为损失函数?

 1) 希望学到的分布与真实分布不一致

  2) 真实分布未知,假设训练数据是从真实数据独立同分布采样。

   3) 极大似然取对数,再加上负号取最小值。

5 SVM损失函数

svm损失函数就是Hinge loss 加上l1 正则

6 Yolo的损失函数

在这里插入图片描述

7 iou计算

在这里插入图片描述

8 Dropout使用经验?

  • 对于不同的层,设置的keep_prob大小也不一致,神经元较少的层,会设keep_prob为 1.0,而神经元多的层则会设置比较小的keep_prob
  • 通常被使用在计算机视觉领域,图像拥有更多的特征,场景容易过拟合,效果被实验人员证明是很不错的。

参考文献:

1  交叉熵损失函数详解推导_yanglee0的博客-CSDN博客_交叉熵损失函数推导

2 深度学习机器学习面试题——损失函数_冰露可乐的博客-CSDN博客_损失函数面试题

你可能感兴趣的:(神经网络,深度学习,神经网络,机器学习,算法)