admin 管理员组

文章数量: 1086019


2024年3月21日发(作者:python 正则表达式处理文字)

交叉熵损失函数的优点

这篇文章中,讨论的Cross Entropy损失函数常用于分类问题

中,但是为什么它会在分类问题中这么有效呢?我们先从一个

简单的分类例子来入手。

1. 图像分类任务

我们希望根据图片动物的轮廓、颜色等特征,来预测动物的类

别,有三种可预测类别:猫、狗、猪。假设我们当前有两个模

型(参数不同),这两个模型都是通过sigmoid/softmax的方

式得到对于每个预测结果的概率值:

模型1:

预测

真实

是否正确

0.3 0.3 0.4

0 0 1 (猪)

正确

0.3 0.4 0.3

0 1 0 (狗)

正确

0.1 0.2 0.7

1 0 0 (猫)

错误

模型1对样本1和样本2是对的,优势非常微弱,但对样本3

是完全错误的。

模型2:

预测

真实

是否正确

0.1 0.2 0.7

0 0 1 (猪)

正确

0.1 0.7 0.2

0 1 0 (狗)

正确

0.3 0.4 0.3

1 0 0 (猫)

错误

2模型对样本1和样本2很准确,对样本3有错,但也不算

错太多。

好了,有了模型,我们需要定义损失函数来判断模型在样本

上的表现。那么我们可以定义哪些损失函数呢?

1.1 Classification Error(分类错误率)

最为直接的损失函数定义为: classification

error=frac{count of error items}{count of all

items}

模型1:classification error=frac{1}{3}

模型2:classification error=frac{1}{3}

我们知道,模型1和模型2虽然都是预测错了1个,但是相对

来说模型2表现得更好,损失函数值照理来说应该更小,但

是,很遗憾的是, classification error 并不能判断出

来,所以这种损失函数虽然好理解,但表现不太好。

1.2 Mean Squared Error (均方误差)

均方误差损失也是一种比较常见的损失函数,其定义为:

MSE=frac{1}{n}sum_{i}^n(hat{y_i}-y_i)^2

模型1:

begin{aligned} text{sample 1 loss=}(0.3-0)^2 + (0.3-

0)^2 + (0.4-1)^2 = 0.54 text{sample 2 loss=}(0.3-

0)^2 + (0.4-1)^2 + (0.3-0)^2 = 0.54 text{sample 3

loss=}(0.1-1)^2 + (0.2-0)^2 + (0.7-0)^2 = 1.34

end{aligned}

对所有样本的loss求平均:

MSE=frac{0.54+0.54+1.34}{3}=0.81


本文标签: 损失 函数 分类 模型 预测