Interview AiBox logo

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

download免费下载
4local_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) = -\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散度定义为:

$$D_{KL}(p||q) = \sum_{x} p(x)\log\frac{p(x)}{q(x)}$$

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

交叉熵的推导

从KL散度到交叉熵

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

$$\begin{align} 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散度

--- 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的概率。

--- 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
  2. Deep Learning Book - Chapter 3: Information Theory
  3. Cross-entropy - Wikipedia
  4. CS231n Convolutional Neural Networks for Visual Recognition
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

相关题目

请详细介绍你参与过的项目,包括项目背景、你的职责、使用的技术和遇到的挑战

这个问题考察面试者的项目经验、技术能力和解决问题思路。回答应包括项目背景、个人职责、使用技术、遇到的挑战及解决方案、项目成果和经验总结。以算法实习生为例,通过校园外卖推荐系统项目,展示了推荐算法设计与实现、数据处理、A/B测试和模型优化等职责,解决了冷启动、数据稀疏性、实时性和多样性等挑战,最终提升了点击率和用户满意度。

arrow_forward

请做一个自我介绍

自我介绍是面试的开场环节,需要简洁有力地展示个人优势与岗位匹配度。一个优秀的自我介绍应包含:基本信息、教育背景、专业技能、项目经历、选择公司原因以及个人特质与职业规划。对于算法岗位,应重点突出算法相关学习经历、项目经验和技能,展示逻辑思维能力和问题解决能力,同时表达对公司的了解和向往。

arrow_forward

你在项目中主要负责哪些部分?承担了什么样的角色?

这个问题主要考察面试者在项目中的角色和职责,以及团队协作能力。回答时应包括项目背景、个人角色、具体职责、遇到的挑战及解决方案、个人贡献和团队协作经验,以及从中获得的成长。作为算法校招生,应重点突出算法设计、模型优化、数据处理等核心技术能力,同时展示解决实际问题的能力和团队协作精神。

arrow_forward

请详细说明你在项目中承担的具体职责,以及你独立完成的工作内容。

面试回答应围绕项目背景、角色定位、团队协作职责和独立完成工作展开。重点详述独立工作内容,包括任务描述、技术方案、实现过程和量化成果。同时展示解决问题的能力和个人成长,体现真实项目经验和技术深度。

arrow_forward

请详细介绍Transformer模型的架构和工作原理

Transformer是一种革命性的序列到序列模型,完全基于注意力机制构建,摒弃了传统的RNN和CNN结构。其核心是自注意力机制,能够直接建模序列中任意位置之间的关系,有效解决长距离依赖问题。Transformer采用编码器-解码器架构,编码器通过多头自注意力和前馈网络处理输入序列,解码器通过掩码自注意力、编码器-解码器注意力和前馈网络生成输出序列。位置编码注入了序列顺序信息,残差连接和层归一化增强了训练稳定性。Transformer的并行计算能力大大提高了训练效率,其变体如BERT、GPT等已成为NLP领域的主流架构,并扩展到计算机视觉等多个领域。

arrow_forward

阅读状态

阅读时长

5 分钟

阅读进度

7%

章节:14 · 已读:0

当前章节: 信息论基础

最近更新:2025-09-05

本页目录

Interview AiBox logo

Interview AiBox

AI 面试实时助手

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

免费下载download

分享题目

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

外部分享