深度学习损失函数

目录

前言

1、均方差损失——MSE

 2、交叉熵损失——CrossEntropyLoss


前言

 

一直使用的Pytorch这个框架,关于损失函数的内容,可以在Pytorch的官方文档

torch.nn — PyTorch 1.10 documentation

里找到,介绍的还是比较详细的,在torch.nn的Loss Functions模块中,在学习的时候最忌讳的是眼高手低,关于这些基础知识,大家还是动手过一遍比较好,这里就当是自己做的一个笔记吧,平常接触最多的主要是均方差损失(MSE)以及交叉熵损失(CrossEntropyLoss),下面主要介绍这两个损失函数。

1、均方差损失——MSE

均方差损失一般是用于回归问题,均方差损失的定义如下:

L(s,y)=\frac{1}{n}\sum_{t=1}^{n}\left ( s_{t}-y_{t} \right )^{2}

其中y为标签值,s为网络前向传播的预测值。

其反向传播的过程如下:

由于\frac{\partial L}{\partial s_{1}}=\frac{2}{n}\left ( s_{1}-y_{1} \right )

\frac{\partial L}{\partial s} =\frac{2}{n}((s_{1}-y_{1}),...,(s_{n}-y_{n}))

\frac{\partial L}{\partial x}=\frac{\partial L}{\partial s}\frac{\partial s}{\partial x}

 2、交叉熵损失——CrossEntropyLoss

交叉熵损失一般用于分类问题,在分类问题中,一般使用softmax函数作为输出层的激活函数,首先介绍一下softmax函数。

多分类问题(分类种类为t个)在经过输出层的计算后,会产生t个输出x,softmax的作用就是将输出x转化为和为1的概率问题。其定义如下:

s_{i}=\frac{e^{x_{i}}}{\sum_{i=1}^{t}e^{x_{i}}}

交叉熵损失的定义如下:

C(y,s)=-\sum_{i=1}^{t}y_{i}ln(s_{i})

此处的si即为softmax处理后的si。

其反向传播过程也比较好算,在这用一个例子来具体解释一下交叉熵在多分类问题的应用。

给定一个猫的图片,我们想要制作一个三分类的分类器,分别有猫、狗、鼠三个类别,在训练过程中,当我们输入一个猫的图片后,经过网络的前向传播(输出层的激活函数为softmax),我们可以得到这样一个输出[0.6,0.1,0.3],我们的标签数据为[1,0,0]。此时可以计算得到交叉熵损失为:

C=-(1*ln(0.426))=0.85

为便于比较,我们可以计算一下输出为[0.9,0.05,0.05]的交叉熵:

C=-(1*ln(0.539))=0.618

可以看到,当准确率越大时,对应的交叉熵损失就会越小。

你可能感兴趣的:(深度学习基础知识,深度学习)