Pytorch深度学习笔记(02)--损失函数、交叉熵、过拟合与欠拟合

目录

一、损失函数

二、交叉熵损失函数详解

1、交叉熵

2、信息量

3、信息熵

 4、相对熵(KL散度)

5、交叉熵

6、交叉熵在单分类问题中的应用

7、总结:

三、过拟合和欠拟合通俗解释

1、过拟合

2、欠拟合

3、原因和方法此处不再说明


一、损失函数

损失函数(loss function)是用来估量你模型的预测值与真实值的差异程度,损失函数越小,模型的鲁棒性就越好

常用损失函数小结

  • 平方损失
  • 0-1损失
  • Log损失
  • Hinge损失
  • 指数损失
  • 感知损失

二、交叉熵损失函数详解

一般使用交叉熵作为损失函数时,在模型的输出层总会接一个softmax函数。

交叉熵

主要用于度量两个概率分布间的差异性,要理解交叉熵,需要先了解下面几个概念。

1、信息量

信息量的大小与信息发生的概率成反比。概率越大,信息量越小。概率越小,信息量越大。

设某一事件发生的概率为P(x),其信息量表示为:

2、信息熵

信息熵也被称为熵,用来表示所有信息量的期望。

期望是试验中每次可能结果的概率乘以其结果的总和。

所以信息量的熵可表示为:(这里的X是一个离散型随机变量)

Pytorch深度学习笔记(02)--损失函数、交叉熵、过拟合与欠拟合_第1张图片

3、相对熵(KL散度)

如果对于同一个随机变量X XX有两个单独的概率分布P(x)和Q ( x ) ,则我们可以使用KL散度来衡量这两个概率分布之间的差异。

Pytorch深度学习笔记(02)--损失函数、交叉熵、过拟合与欠拟合_第2张图片

 KL散度越小,表示P ( x )与Q ( x ) 的分布更加接近,可以通过反复训练Q ( x ) 来使Q ( x )的分布逼近P ( x ) 。

4、交叉熵

首先将KL散度公式拆开:

Pytorch深度学习笔记(02)--损失函数、交叉熵、过拟合与欠拟合_第3张图片

前者H(p(x))表示信息熵,后者即为交叉熵,KL散度 = 交叉熵 - 信息熵

交叉熵公式表示为:

 信息熵在这里就是一个常量。KL散度的值表示真实概率分布P ( x )与预测概率分布Q ( x ) 之间的差异,值越小表示预测的结果越好。

 5、交叉熵在单分类问题中的应用

Pytorch深度学习笔记(02)--损失函数、交叉熵、过拟合与欠拟合_第4张图片

6、总结:

  • 交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。
  • 交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。

三、过拟合与欠拟合的通俗解释

Pytorch深度学习笔记(02)--损失函数、交叉熵、过拟合与欠拟合_第5张图片

1、过拟合

过拟合(over-fitting):训练的时候效果很好损失函数值可以降得很低,但是到测试数据集的时候表现就不那么好,模型的泛化能力很差。

比如是识别一只狗狗的模型,我需要对这个模型进行训练。恰好,我训练样本中的所有训练图片都是二哈,那么经过多次迭代训练之后,模型训练好了,并且在训练集中表现得很好。基本上二哈身上的所有特点都涵括进去,那么问题来了!假如我的测试样本是一只金毛呢?将一只金毛的测试样本放进这个识别狗狗的模型中,很有可能模型最后输出的结果就是金毛不是一条狗(因为这个模型基本上是按照二哈的特征去打造的)。所以这样就造成了模型过拟合,虽然在训练集上表现得很好,但是在测试集中表现得恰好相反,在性能的角度上讲就是协方差过大(variance is large),同样在测试集上的损失函数(cost function)会表现得很大。

2、欠拟合

欠拟合(under-fitting):是指模型在训练集、验证集和测试集上均表现不佳的情况。样本不够或者算法不精确,测试样本特性没有学到,不具泛化性,拿到新样本后没有办法去准确的判断。

还是拿刚才的模型来说,可能二哈被提取的特征比较少,导致训练出来的模型不能很好地匹配,表现得很差,甚至二哈都无法识别。

原因和方法此处不再说明

参照该链接

你可能感兴趣的:(深度学习)