、
YOLOv5使用二元交叉熵损失函数计算类别概率和目标置信度得分的损失(分类/定位),使用CIOU Loss作为bounding box回归的损失。
分类损失/定位损失/置信度损失
类别预测 Class Prediction
一般分类器假设输出标签是互斥的,例如猫和狗两个标签,你不能同时是猫和狗,YOLO应用softmax函数将得分转换为总和为1的概率。而YOLOv5使用多标签分类,比如标签可以是行人和儿童,他们不互斥,那么此时得分就可能大于1。
这么一看就不适合在使用softmax而是用多个独立逻辑分类器替换softmax函数,以计算输入属于特定标签的可能性。
在计算分类损失进行训练时,对每个标签使用二元交叉熵损失。
softmax函数
用于多类分类问题的激活函数。
可以分成soft和max,max就是最大值嘛,soft浅理解为不是求唯一的最大值,而是为每个输出分类的结果赋予一个概率值表示可能性。确保较小的值有较小的概率,不能直接丢弃。
二元交叉熵
多用于处理二分类问题。(是一个对数运算)
计算了真实标签和预测概率之间的对数差异。需要对错误的预测进行惩罚,如果实际的类的概率是1.0,那么需要它的损失为零。如果概率比较低,那么它的损失很大。
H(p,q) = - ∑(p(x) * log(q(x)))
其中,p(x)表示真实标签的分布,q(x)表示模型预测的分布。交叉熵越小,表示两个概率分布越接近,模型的预测结果越准确。
从直观上理解,交叉熵损失函数可以看作是一种表示信息量的度量。假设一个事件发生的概率为p,那么它的信息量可以用-log(p)来表示。当交叉熵越小,表示模型的预测分布越接近真实分布,模型预测的结果可以更好地表示真实情况,所以损失也就越小。
好了知道你看不懂,那么——
有一篇翻译外文的文章,很Nice , Daniel Godoy 的:可视化理解Binary Cross-Entropy - 知乎 (zhihu.com)
Understanding binary cross-entropy / log loss: a visual explanation
by Daniel Godoy