分类问题与交叉熵损失函数
为什么在分类问题往往使用交叉熵作为损失函数?
假设数据标签为 \(Y\) = [[0, 1, 0], [0, 0, 1]],预测为 \(\hat{Y}\) = [[0.1, 0.6, 0.3], [0.5, 0.3, 0.2]]
此时模型在真实类别上给出的联合概率就是 p = 0.6 * 0.2,以联合概率的最大化为优化目标是合理的,为计算方便,取联合概率的对数,即 log(p) = log0.6 + log0.2
由于优化过程是对损失函数取最小值,因此定义损失损失函数为
loss = -log(p) = -(log0.6 + log0.2)
再看交叉熵损失函数,其的定义如下(单个样本上)
\(l(y,\hat{y})=-\sum\limits_{j=1}^{q}y_jlog\hat{y_j}\)
其中 \(y\) 和 \(\hat{y}\) 都是长度为 q 的向量(交叉熵不满足交换律,计算交叉熵时需要注意 \(y\) 和 \(\hat{y}\)的顺序)
那么在这个例子中,两个样本上的交叉熵之和为 cross_entropy = – (1 * log0.6 + 1 * log0.2)
可见 loss == cross_entropy,因此交叉熵损失的最小化就是预测在真实类别上的联合概率的最大化