交叉熵损失函数

线性回归模型产生的预测值是连续的实数值,不适合直接处理分类任务。为了实现分类,可以利用广义线性回归的思想,在线性模型之上,再增加一个Sigmoid函数,把线性模型的输出映射到0到1之间,输出一个概率值,并根据这个概率值实现分类。
交叉熵损失函数_第1张图片
为了衡量模型的优劣,需要使用损失函数,在线性回归模型中,通常使用平方损失函数,下图为逻辑回归的平方损失函数。
交叉熵损失函数_第2张图片
采用梯度下降法来更新模型 w 和 b 时,
交叉熵损失函数_第3张图片
从公式可以看出,需要计算损失函数对 w 和 b 的偏导数。

用损失函数分别计算对 w 和 b 的偏导数,得出公式如下:
交叉熵损失函数_第4张图片
从上面两个式子中可以看到,都用到了
在这里插入图片描述
也就是说需要对这个 Sigmoid 函数求导数。

从上图中的 Sigmoid 函数的曲线可以看出,在大部分的时间(绿色框中往后都是)都是比较平坦的,在这些地方,它的导数非常接近于0,这就会使得损失函数对 w 和 b 的偏导数也非常小,进而导致迭代更新 w 和 b 时,步长非常小,更新非常缓慢。
交叉熵损失函数_第5张图片
另外,在线性回归中,平方损失函数是一个凸函数,只有一个极小值点,但是在逻辑回归中,它的平方损失函数是一个复杂的非凸函数,有多个局部极小值点,使用梯度下降法,就有可能会陷入局部极小值中。

为了解决这些问题,在逻辑回归中,通常采用交叉熵损失函数来代替平方损失函数,交叉熵损失函数的表达式如下:
在这里插入图片描述
(记忆方法,yi 的取值是0或1,而( yi 尖)的取值只会无限趋近于0或者1,因为,因为前面的对数的原因,当 y=0 时,ln0是没有意义的,所以只能是对 ( yi 尖) 取对数。)

其中,
交叉熵损失函数_第6张图片
平均交叉熵损失函数公式如下:
交叉熵损失函数_第7张图片
对于某个样本来说,当它的真实标签 yi = 1 时,1 - yi = 0,这个损失就是第一项
在这里插入图片描述
这是它的曲线图:
交叉熵损失函数_第8张图片
而当它的真实标签 yi = 0 时,1 - yi = 1,这个损失就是第二项为
在这里插入图片描述
这是它的曲线图:
交叉熵损失函数_第9张图片
我们知道作为所示函数,需要具备两个性质:

1、非负性

这是为了保证不同样本的误差不会相互抵消,可以看到,交叉熵损失函数中的每一项都是正的。
交叉熵损失函数_第10张图片
满足非负性的要求。

2、一致性
函数的值应该和误差的变化趋势一致。
交叉熵损失函数_第11张图片
从下图中可以看到,在交叉熵损失函数中,当样本标签值为 1 时,预测值越接近于1(y - y尖越小),损失的值越小。同样当样本标签值为 0 时,预测值越接近于0(y - y尖越小),损失的值越小。
交叉熵损失函数_第12张图片
交叉熵损失函数不仅具备作为损失函数的两条基本性质,而且它还有更多的优点。下图为交叉熵损失函数对模型参数 w 和 b 的偏导数。
交叉熵损失函数_第13张图片
可以看到,它不需要对Sigmoid 函数求导数,因此它能够有效地克服平方损失函数应用于逻辑回归时,更新模型参数过慢的问题。

这个偏导数的值只受到预测值和真实值之间的误差的影响。
交叉熵损失函数_第14张图片
当误差比较大时,偏导数也比较大,模型参数的更新速度就比较快,当误差比较大时,偏导数也比较小,模型参数的更新速度就比较慢,这也符合我们训练模型的要求。

除此之外,交叉熵损失函数是凸函数,因此使用梯度下降法得到的极小值就是全局极小值。

下面,来看一个例子:
交叉熵损失函数_第15张图片
假设这是一个逻辑回归任务的训练集,其中有四个样本。

我们可以使用准确率来评价一个分类器的性能。下面为计算公式,本例中这个模型对所有样本的概率预测都和标签的类别一致,能够正确分类,所以准确率为100%
在这里插入图片描述
下面,来计算一下它的交叉熵损失值和平均交叉熵损失值,公式如下:
交叉熵损失函数_第16张图片
再假设一下,有个模型A对所有样本的概率预测如下:
交叉熵损失函数_第17张图片
现在这个模型的预测准确率为:
在这里插入图片描述
假设还有一个模型 B,
交叉熵损失函数_第18张图片
同样这个模型的预测准确率为:
在这里插入图片描述

比较这两个模型,模型A对前三个样本的判断非常准确,对于样本4,虽然判断错误,但是也没有错的太离谱。

而对于模型B,虽然也只是预测错了一个,但是这三个预测正确的也都比较悬,正好在阈值附近。而这个错误的错的非常离谱。

在这两个模型中,模型A的表现更好,但是它们的分类准确率都是75%,可见仅仅通过准确率是无法细分出模型的优劣的,下面来计算下它们的交叉熵损失值。

模型A:
交叉熵损失函数_第19张图片
模型B:
交叉熵损失函数_第20张图片
可见,模型A的损失明显低于模型B,交叉熵损失函数能够很好地反映出概率之间的误差,是训练分类器时的重要依据。

你可能感兴趣的:(笔记,机器学习,深度学习,逻辑回归)