基础知识
机器学习可以理解为对目标函数的最大化或最小化过程,而需要最小化的目标函数称为损失函数。
1.1
针对分类问题和回归问题,有不同的损失函数,首先简单介绍回归问题常用的损失函数,
1.1.1均方误差(MSE):
均方误差是回归损失函数中最常用的误差,它是预测值与目标值之间差值的平方和,也叫L2范数损失函数,y为真实值,f(xi)为预测值,其公式如下所示:
1.1.2平均绝对误差
指的是误差的距离的平均值,是一种L1范数误差,其表达式为:
1.1.3 SmoothL1Loss:
x为真实值和预测值的差值,smoothL1损失函数,使得误差很小时loss足够小,误差很大时loss也不至于过大。
1.1.4
三种损失函数值随误差变化的图像为:
(1.1参考文献:https://www.cnblogs.com/wangguchangqing/p/12021638.html)
1.2
之后介绍分类问题常用的损失函数:
1.2.1交叉熵损失函数(CrossEntropy Loss):
首先引入信息熵的概念:
可以把熵理解为不确定度,当先验概率P(xi)越大时,结果的熵H(X)就越小,也就是结果不确定性越小。
再介绍相对熵(KL散度)的概念:
用来衡量两个分布P和Q的差异,二者分布更接近时,散度越小。
我们了解了以上两个概念后,可以更好的理解交叉熵的概念,其公式为:
可以看出,交叉熵是信息熵和相对熵的和。在分类问题中,P(x)表示真实分布,p(xi)也就是标签值,Q(x)表预测分布,q(xi)也就是预测值。
对于监督学习,P(X)是确定的,最小化交叉熵可以理解为最小化预测分布和真实分布的差别,之所以采用交叉熵,是因为它要比相对熵的计算简便很多。
二分类问题(logistic regression)的交叉熵:
多分类问题(softmax regression)的交叉熵
CTPN的LOSS
其loss为三项之和:
其中:
第一项为得分的分类Loss,采用交叉熵
nn.CrossEntropyLoss()
#nn.CrossEntropyLoss()是nn.logSoftmax()和nn.NLLLoss()的整合
#所以网络输出不需要softmax
第二项为竖直方向中心点y坐标和高h的的回归Loss,采用SmoothL1Loss
nn.SmoothL1Loss()
第三项为中心点的水平偏移量x的回归Loss,采用SmoothL1Loss