Interview AiBox logo

Interview AiBox 实时 AI 助手,让你自信应答每一场面试

download免费下载
高阶local_fire_department4 次面试更新于 2025-09-05account_tree思维导图

请推导交叉熵公式。

lightbulb

题型摘要

交叉熵是信息论和机器学习中的重要概念,用于衡量两个概率分布之间的差异。它可以通过熵和KL散度推导出来:H(p,q) = H(p) + D_KL(p||q),其中H(p)是熵,D_KL(p||q)是KL散度。在机器学习中,交叉熵常被用作分类问题的损失函数,通过最小化交叉熵使模型预测的分布接近真实分布。对于二分类问题,交叉熵损失为L = -[y log ŷ + (1-y) log (1-ŷ)];对于多分类问题,交叉熵损失为L = -∑y_k log q_k。交叉熵与最大似然估计有密切关系,具有非负性、最小值和凸性等良好数学性质。

交叉熵公式推导

信息论基础

熵的定义

熵是信息论中的基本概念,用于衡量随机变量的不确定性。对于离散随机变量X,其概率分布为p(x),熵的定义为:

H(X)=xp(x)logp(x)H(X) = -\sum_{x} p(x)\log p(x)

其中,p(x)是随机变量X取值为x的概率,log p(x)通常使用以2为底的对数(也可以使用自然对数,只差一个常数因子)。

KL散度(相对熵)

KL散度(Kullback-Leibler divergence)用于衡量两个概率分布之间的差异。对于离散随机变量X,有两个概率分布p(x)和q(x),KL散度定义为:

DKL(pq)=xp(x)logp(x)q(x)D_{KL}(p||q) = \sum_{x} p(x)\log\frac{p(x)}{q(x)}

KL散度具有非负性,即DKL(pq)0D_{KL}(p||q) \geq 0,当且仅当p=q时,DKL(pq)=0D_{KL}(p||q)=0

交叉熵的推导

从KL散度到交叉熵

首先,展开KL散度的表达式:

D_{KL}(p||q) &= \sum_{x} p(x)\log\frac{p(x)}{q(x)} \\ &= \sum_{x} p(x)[\log p(x) - \log q(x)] \\ &= \sum_{x} p(x)\log p(x) - \sum_{x} p(x)\log q(x) \\ &= -H(X) - \sum_{x} p(x)\log q(x) \end{align}$$ 其中,$H(X) = -\sum_{x} p(x)\log p(x)$是熵。 从上面的表达式,我们可以得到: $$\sum_{x} p(x)\log q(x) = -H(X) - D_{KL}(p||q)$$ ### 交叉熵的定义 交叉熵$H(p,q)$定义为: $$H(p,q) = -\sum_{x} p(x)\log q(x)$$ 因此,我们可以得到交叉熵与KL散度的关系: $$H(p,q) = H(X) + D_{KL}(p||q)$$ 这表明**交叉熵等于真实分布p的熵加上p与q之间的KL散度**。 ```mermaid --- title: 交叉熵与熵、KL散度的关系 --- graph TD A["真实分布 p"] --> B["熵 H(p) = -∑p(x)log p(x)"] A --> C["模型预测分布 q"] C --> D["交叉熵 H(p,q) = -∑p(x)log q(x)"] B --> E["KL散度 D_KL(p||q) = H(p,q) - H(p)"] D --> E E --> F["最小化交叉熵等价于最小化KL散度"] ``` ## 交叉熵在机器学习中的应用 ### 二分类问题的交叉熵 在二分类问题中,通常使用sigmoid函数将模型的输出转换为概率。假设真实标签为y(0或1),模型预测为正类的概率为ŷ,则交叉熵损失为: $$L = -[y \log ŷ + (1-y) \log (1-ŷ)]$$ ### 多分类问题的交叉熵 在多分类问题中,通常使用softmax函数将模型的输出转换为概率分布。假设有K个类别,真实标签为y(one-hot编码),模型预测的概率分布为q,则交叉熵损失为: $$L = -\sum_{k=1}^{K} y_k \log q_k$$ 其中,$y_k$是真实标签的第k个分量(通常为1表示正确类别,0表示其他类别),$q_k$是模型预测的属于类别k的概率。 ```mermaid --- title: 交叉熵在机器学习中的应用流程 --- flowchart TD A["输入数据"] --> B["模型预测"] B --> C["Softmax/Sigmoid激活函数"] C --> D["概率分布 q"] D --> E["计算交叉熵损失 H(p,q) = -∑p(x)log q(x)"] E --> F["反向传播"] F --> G["更新模型参数"] G --> B ``` ### 交叉熵与最大似然估计的关系 交叉熵损失函数与最大似然估计有密切关系。在分类问题中,使用交叉熵作为损失函数等价于最大化模型预测的概率分布与真实分布之间的似然。 假设我们有N个独立同分布的样本,真实分布为p,模型预测分布为q,则似然函数为: $$L = \prod_{i=1}^{N} \prod_{k=1}^{K} q_k(x_i)^{p_k(x_i)}$$ 对数似然为: $$\log L = \sum_{i=1}^{N} \sum_{k=1}^{K} p_k(x_i) \log q_k(x_i)$$ 最大化对数似然等价于最小化负对数似然: $$-\min \log L = -\sum_{i=1}^{N} \sum_{k=1}^{K} p_k(x_i) \log q_k(x_i)$$ 这正是交叉熵损失函数(对于N个样本的平均)。 ## 交叉熵的直观理解 交叉熵可以理解为:**使用编码q(模型预测)来编码来自分布p(真实分布)的信息时,所需的平均编码长度**。当p和q完全相同时,交叉熵等于熵,此时编码效率最高。当p和q不同时,交叉熵大于熵,多出的部分就是KL散度,表示编码效率的损失。 在机器学习中,我们希望模型预测的分布q尽可能接近真实分布p,因此最小化交叉熵等价于最小化KL散度(因为熵H(X)是固定的)。 ## 交叉熵的数学性质 交叉熵具有以下数学性质: 1. **非负性**:$H(p,q) \geq 0$ 2. **最小值**:当p=q时,$H(p,q)$取得最小值$H(p)$ 3. **凸性**:对于固定的p,$H(p,q)$关于q是凸函数 这些性质使得交叉熵成为优化问题的良好目标函数。 ## 交叉熵与其他损失函数的比较 交叉熵损失函数在分类问题中有很多优势: 1. 对模型输出的概率差异敏感,能够提供较大的梯度,有利于模型训练。 2. 与最大似然估计等价,有坚实的统计学基础。 3. 在处理类别不平衡问题时,可以通过调整权重来缓解。 相比之下,均方误差(MSE)在分类问题中可能面临梯度消失的问题,特别是在模型输出接近0或1时。 ## 总结 交叉熵是信息论和机器学习中的重要概念,通过熵和KL散度推导出来:$H(p,q) = H(p) + D_{KL}(p||q)$。在机器学习中,交叉熵常被用作分类问题的损失函数,通过最小化交叉熵使模型预测的分布接近真实分布。交叉熵与最大似然估计有密切关系,具有非负性、最小值和凸性等良好数学性质,使其成为分类问题中常用的损失函数。 **参考资料:** 1. [Information Theory, Inference and Learning Algorithms - David MacKay](https://www.inference.org.uk/itprnn/book.html) 2. [Deep Learning Book - Chapter 3: Information Theory](https://www.deeplearningbook.org/contents/info.html) 3. [Cross-entropy - Wikipedia](https://en.wikipedia.org/wiki/Cross_entropy) 4. [CS231n Convolutional Neural Networks for Visual Recognition](http://cs231n.github.io/linear-classify/#softmax)
account_tree

思维导图

Interview AiBox logo

Interview AiBox — 面试搭档

不只是准备,更是实时陪练

Interview AiBox 在面试过程中提供实时屏幕提示、AI 模拟面试和智能复盘,让你每一次回答都更有信心。

AI 助读

一键发送到常用 AI

交叉熵是信息论和机器学习中的重要概念,用于衡量两个概率分布之间的差异。它可以通过熵和KL散度推导出来:H(p,q) = H(p) + D_KL(p||q),其中H(p)是熵,D_KL(p||q)是KL散度。在机器学习中,交叉熵常被用作分类问题的损失函数,通过最小化交叉熵使模型预测的分布接近真实分布。对于二分类问题,交叉熵损失为L = -[y log ŷ + (1-y) log (1-ŷ)];对于多分类问题,交叉熵损失为L = -∑y_k log q_k。交叉熵与最大似然估计有密切关系,具有非负性、最小值和凸性等良好数学性质。

智能总结

深度解读

考点定位

思路启发

auto_awesome

相关题目

对于数据不平衡问题,有哪些解决办法?

数据不平衡问题指分类任务中不同类别样本数量差异大,导致模型偏向多数类。解决方法主要从三个层面:1)数据层面:包括过采样(SMOTE、ADASYN)、欠采样(NearMiss、Tomek Links)和混合采样(SMOTEENN);2)算法层面:包括成本敏感学习、集成方法(EasyEnsemble、BalanceCascade)和特定算法调整;3)评估指标选择:使用精确率、召回率、F1分数、PR曲线、ROC-AUC等代替准确率。实际应用中需结合具体问题选择合适方法或组合策略,并使用合适的评估指标。

arrow_forward

请解释L1/L2正则化的原理及其在LightGBM中的应用。

L1/L2正则化是防止机器学习模型过拟合的关键技术。L1正则化通过添加参数绝对值之和作为惩罚项,产生稀疏解并实现特征选择;L2正则化通过添加参数平方和作为惩罚项,使所有参数值缩小但不为零。在LightGBM中,可通过reg_alpha和reg_lambda参数控制L1和L2正则化强度,这些参数影响叶子节点权重的计算,有效控制模型复杂度并提高泛化能力。实际应用中,应根据数据特性和问题需求选择合适的正则化方法,并通过交叉验证等手段优化参数设置。

arrow_forward

除了正则化外,还有哪些方法可以防止过拟合?

防止过拟合的方法可分为三大类:数据相关方法(获取更多数据、数据增强、交叉验证)、模型相关方法(早停、Dropout、批量归一化、特征选择与降维、集成学习、减少模型复杂度、权重约束、权重衰减)和其他方法(贝叶斯方法、对抗训练、标签平滑)。实际应用中通常需要结合多种方法,根据数据特性、模型类型和任务需求选择合适的策略组合。

arrow_forward

请详细解释XGBoost和GBDT的原理区别。

XGBoost和GBDT都是基于梯度提升的集成学习算法,但XGBoost在GBDT基础上进行了多项优化。主要区别包括:1) XGBoost使用二阶泰勒展开优化损失函数,而GBDT仅使用一阶导数;2) XGBoost引入了正则化项控制模型复杂度;3) XGBoost能自动处理缺失值;4) XGBoost支持并行计算,效率更高;5) XGBoost更灵活,支持自定义目标函数。这些优化使XGBoost在保持精度的同时,提高了计算效率和泛化能力,特别适合处理大规模数据集。

arrow_forward

请详细介绍你使用过的特征选择方法,包括过滤法、包装法和嵌入法,并分析它们各自的特点。

特征选择是机器学习中的关键步骤,主要分为过滤法、包装法和嵌入法三大类。过滤法作为预处理步骤,使用统计测试独立评估特征,计算效率高但忽略特征间交互;包装法通过模型性能评估特征子集,考虑特征交互但计算开销大;嵌入法将特征选择融入模型训练过程,平衡了效率和效果。实际应用中应根据数据规模、计算资源、模型类型等因素选择合适方法,并可组合使用多种方法以获得最佳效果。

arrow_forward

阅读状态

阅读时长

5 分钟

阅读进度

7%

章节:14 · 已读:0

当前章节: 信息论基础

最近更新:2025-09-05

本页目录

Interview AiBox logo

Interview AiBox

AI 面试实时助手

面试中屏幕实时显示参考回答,帮你打磨表达。

免费下载download

分享题目

复制链接,或一键分享到常用平台

外部分享