对于交叉熵的一些理解

如果有错误,欢迎指正。

交叉熵应该是从极大似然估计从推导出来的,并且使用的log似然的形式是为了提高反向传播的速度和防止不收敛。

具体内容可以参考参考文献

这篇参考文献对MSE的缺点作出了分析(主要的缺点是反向传播的速度太慢,可能导致收敛到局部最优)。

参考文献:

Supervised Learning of Probability Distributions by Neural Networks

### 交叉熵的定义 在机器学习中,交叉熵是一种衡量两个概率分布之间差异的方法。具体而言,它用于评估模型预测的概率分布 $\hat{y}$ 和真实标签分布 $y$ 的接近程度[^4]。如果两者完全一致,则交叉熵值最小。 交叉熵的形式化定义如下:给定一个离散随机变量的真实分布 $P(x)$ 和近似分布 $Q(x)$,则它们之间的交叉熵为: $$ H(P, Q) = -\sum_{x} P(x)\log(Q(x)) $$ 其中,$\log(Q(x))$ 是以自然对数为基础的对数值[^5]。 --- ### 交叉熵的公式推导与计算 对于二分类问题,假设真实标签为 $y \in {0, 1}$,而模型输出的预测概率为 $\hat{y} \in [0, 1]$,此时交叉熵损失函数可以写成: $$ L(y, \hat{y}) = -(y \cdot \log(\hat{y}) + (1-y) \cdot \log(1-\hat{y})) $$ 而对于多分类问题(假设有 $K$ 类),设真实标签向量为独热编码形式 $y_k$,模型输出的概率分布为 $\hat{y}_k$,则交叉熵损失函数为: $$ L(y, \hat{y}) = -\sum_{k=1}^{K} y_k \cdot \log(\hat{y}_k) $$ 这里需要注意的是,为了防止取对数时出现零值而导致无穷大误差,通常会对输入加一个小常数平滑项,例如 $\epsilon = 1e-8$[^3]。 以下是基于 Python 实现的一个简单例子: ```python import numpy as np def cross_entropy_loss(y_true, y_pred): epsilon = 1e-8 # 防止 log(0) y_pred_clipped = np.clip(y_pred, epsilon, 1 - epsilon) loss = -np.sum(y_true * np.log(y_pred_clipped), axis=-1) return np.mean(loss) # 示例数据 y_true = np.array([[1, 0, 0], [0, 1, 0]]) # 真实标签 y_pred = np.array([[0.9, 0.05, 0.05], [0.1, 0.8, 0.1]]) # 模型预测 loss_value = cross_entropy_loss(y_true, y_pred) print(f"交叉熵损失: {loss_value}") ``` --- ### 应用场景 #### 图像分类 在卷积神经网络(CNN)中,交叉熵被广泛应用于图像分类任务。通过优化交叉熵损失函数,模型能够更好地调整权重参数,使得最终输出更贴近真实类别分布[^3]。 #### 自然语言处理 无论是词嵌入还是序列建模,交叉熵都扮演着核心角色。比如,在文本生成过程中,每一步都会根据前文上下文预测下一个单词的可能性,并以此为目标最大化正确答案对应的条件概率[^1]。 #### 迁移学习 当面临目标域样本稀缺的情况时,可以通过预训练好的源模型提取特征并微调最后一层全连接部分完成新任务的学习过程。在此期间仍然采用交叉熵作为监督信号指导整个流程进展[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值