neural network中的loss function (一)
2026/5/26 19:37:48 网站建设 项目流程

交叉熵损失

loss函数是机器学习中衡量模型预测值与真实值之间的差距, 并指导模型在训练过程中不断优化自身。交叉熵损失 (Cross-Entropy Loss)是分类任务中最常用的损失函数之一。交叉熵损失的目标最小化该值,使得模型输出的预测概率真实标签的分布尽可能接近。

交叉熵损失主要用于衡量两个概率分布之间的差异性。在分类问题中,我们通常将真实标签和模型预测都视为概率分布。

  • 真实标签 (True Label)通常以 one-hot 编码形式表示,例如对于一个三分类问题,如果样本属于第二类,则真实标签为[0, 1, 0]。这表示样本属于第二类的概率为 1,属于其他类的概率为 0。
  • 模型预测 (Predicted Probability)是模型输出的各个类别的概率分布,例如[0.1, 0.7, 0.2]。这表示模型预测样本属于第一类的概率为 0.1,第二类为 0.7,第三类为 0.2。

交叉熵损失的公式如下:

对于二分类问题:

L=−[ylog⁡(y^)+(1−y)log⁡(1−y^)]L = -[y \log(\hat{y}) + (1-y) \log(1-\hat{y})]L=[ylog(y^)+(1y)log(1y^)]

其中:

  • yyy是真实标签 (0 或 1)
  • y^\hat{y}y^是模型预测的样本属于类别 1 的概率

对于多分类问题:

L=−∑i=1Cyilog⁡(y^i)L = - \sum_{i=1}^{C} y_i \log(\hat{y}_i)L=i=1Cyilog(y^i)

其中:

  • CCC是类别数量
  • yiy_iyi是真实标签的 one-hot 编码中第iii个元素 (0 或 1)
  • y^i\hat{y}_iy^i是模型预测的样本属于第iii个类别的概率

理解公式:

  • 交叉熵损失的核心思想是惩罚模型对于错误类别的预测。
  • 当模型预测的概率越接近真实标签时,损失值越小。反之,当模型预测的概率与真实标签相差甚远时,损失值越大。
  • 公式中的负号是为了确保损失值为正数,方便后续的梯度下降优化。
  • log⁡\loglog函数使得当预测概率接近 0 时,损失值趋于无穷大,从而对错误的预测施加更大的惩罚。

logits:

Logits 就是模型在最后一层线性变换之后、还没进 Softmax 之前的那个原始输出向量
换句话说,logits 是“未归一化的预测分数”,每个元素对应一个类别的“得分”。Softmax 的作用就是把这组得分压缩成 0–1 之间、加和为 1 的概率分布。

为什么交叉熵损失适合分类任务?

  • 概率解释:交叉熵损失直接基于概率分布,与分类任务的本质相符。分类任务的目标就是预测样本属于各个类别的概率。
  • 梯度特性:交叉熵损失函数在梯度下降优化过程中,能够提供更有效的梯度信息,加速模型收敛,尤其是在使用 Sigmoid 或 Softmax 激活函数的情况下,可以缓解梯度消失问题。
  • 直观性:交叉熵损失能够直观地衡量预测概率分布与真实概率分布之间的差异,损失值越小,表示模型预测越准确。

为什么使用log函数计算loss?

计算机中的log函数a>1, 计算loss时, x<1, 所以取-log(x)

  • 当x -> 1时, log(x)->0
  • x -> 0时, log(x) ->无穷大
其他类似概念
  • KL 散度(Kullback-Leibler Divergence):衡量两个概率分布之间的相对差异,常用于生成模型(如自编码器)中。
  • Hinge 损失:用于支持向量机(SVM)中的损失函数,适合二分类任务。
  • 均方误差(MSE):通常用于回归问题中,衡量预测值与真实值之间的误差平方和。
  • 交叉熵 vs 均方误差(MSE):交叉熵主要用于分类任务,而均方误差主要用于回归任务。
  • 二元交叉熵 vs 多分类交叉熵:二元交叉熵用于二分类问题,输入值是单个预测概率;多分类交叉熵用于多类别问题,输入值是每个类别的概率分布。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询