目录
前言
一直使用的Pytorch这个框架,关于损失函数的内容,可以在Pytorch的官方文档
torch.nn — PyTorch 1.10 documentation
里找到,介绍的还是比较详细的,在torch.nn的Loss Functions模块中,在学习的时候最忌讳的是眼高手低,关于这些基础知识,大家还是动手过一遍比较好,这里就当是自己做的一个笔记吧,平常接触最多的主要是均方差损失(MSE)以及交叉熵损失(CrossEntropyLoss),下面主要介绍这两个损失函数。
1、均方差损失——MSE
均方差损失一般是用于回归问题,均方差损失的定义如下:
其中y为标签值,s为网络前向传播的预测值。
其反向传播的过程如下:
由于
则
2、交叉熵损失——CrossEntropyLoss
交叉熵损失一般用于分类问题,在分类问题中,一般使用softmax函数作为输出层的激活函数,首先介绍一下softmax函数。
多分类问题(分类种类为t个)在经过输出层的计算后,会产生t个输出,softmax的作用就是将输出x转化为和为1的概率问题。其定义如下:
交叉熵损失的定义如下:
此处的si即为softmax处理后的si。
其反向传播过程也比较好算,在这用一个例子来具体解释一下交叉熵在多分类问题的应用。
给定一个猫的图片,我们想要制作一个三分类的分类器,分别有猫、狗、鼠三个类别,在训练过程中,当我们输入一个猫的图片后,经过网络的前向传播(输出层的激活函数为softmax),我们可以得到这样一个输出[0.6,0.1,0.3],我们的标签数据为[1,0,0]。此时可以计算得到交叉熵损失为:
为便于比较,我们可以计算一下输出为[0.9,0.05,0.05]的交叉熵:
可以看到,当准确率越大时,对应的交叉熵损失就会越小。