为什么交叉熵能作为损失函数及其弥补了平方差损失什么缺陷

本文深入探讨了交叉熵作为损失函数的原因及其优势,从熵的定义出发,逐步解析至交叉熵的由来,并对比了其与均方误差的梯度特性,强调了交叉熵在避免梯度消失问题上的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在很多二分类问题中,特别是正负样本不均衡的分类问题中,常使用交叉熵作为loss对模型的参数求梯度进行更新,那为何交叉熵能作为损失函数呢,我也是带着这个问题去找解析的。

以下仅为个人理解,如有不当地方,请读到的看客能指出。

我们都知道,各种机器学习模型都是模拟输入的分布,使得模型输出的分布尽量与训练数据一致,最直观的就是MSE(均方误差,Mean squared deviation), 直接就是输出与输入的差值平方,尽量保证输入与输出相同。这种loss我们都能理解。

以下按照(1)熵的定义(2)交叉熵的定义 (3) 交叉熵的由来 (4)交叉熵作为loss的优势 作为主线来一步步理清思路。

(1)熵的定义 各种熵的名称均来自信息论领域,这方面的背景就不介绍了,随便就能找到很多。

根据维基的定义,熵的定义如下:熵是接收的每条消息中包含的信息的平均量,又被称为信息熵、信源熵、平均自信息量。直白地解释就是信息中含的信息量的大小,其定义如下:

其曲线如下所示:

 

可以看出,一个事件的发生的概率离0.5越近,其熵就越大,概率为0或1就是确定性事件,不能为我们带信息量。也可以看作是一件事我们越难猜测是否会发生,它的信息熵就越大

(2)交叉熵的定义 交叉熵的公式定义如下:

其中p(x)在机器学习中为样本label,q(x)为模

### 交叉熵损失函数在基础分类问题中的应用 #### 背景介绍 在机器学习尤其是深度学习领域,分类问题是核心任务之一。为了评估模型预测的结果与实际标签之间的差距,需要引入合适的损失函数来指导优化过程。 #### 选择原因 交叉熵损失被广泛应用于多类别的分类问题中,因为其能够有效地衡量预测概率分布和真实标签之间差异的程度[^2]。具体来说: - **对数似然解释**:当考虑最大似然估计时,最小化负对数似然是等价于最大化正确分类的可能性。而二元或多类别情况下的交叉熵正是这种形式的一个特例。 - **梯度特性良好**:相比于其他类型的损失函数(如均方误差),交叉熵提供了更平滑且更有利的梯度下降路径,有助于加速收敛并减少陷入局部最优的风险[^5]。 #### 数学表达式 对于一个具有\( C \)个类别的分类器而言,如果给定输入样本的真实标签为 \( y_i \),对应的预测向量记作 \( p(y|x;\theta)_i \),那么单一样本上的交叉熵定义如下: \[ L_{CE}(y, p)= -\sum _{c=1}^{C}{I}\left({y=c}\right)\log {p(c)} \] 其中 \( I(\cdot ) \) 是指示函数,表示只有当条件成立时取值为1;否则为0。 #### 实现代码示例 下面给出一段简单的Python代码片段用于计算二分类情况下的一批数据的平均交叉熵损失: ```python import numpy as np def binary_cross_entropy_loss(labels, predictions): epsilon = 1e-12 # 防止 log(0) predictions = np.clip(predictions, epsilon, 1. - epsilon) N = labels.shape[0] ce_loss = -np.sum((labels * np.log(predictions)) + ((1-labels)*np.log(1-predictions))) / N return ce_loss ``` #### 主要优势 采用交叉熵作为损失函数的主要优点在于它可以促使模型输出更加接近真实的分布模式,并且通过直接针对概率空间进行操作从而提高了泛化能力。此外,由于其良好的数值稳定性和易于求导的特点,在实践中表现出色[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值