基础知识补充

1 对数交叉熵损失函数Cross-Entropy Loss

衡量模型预测的概率分布与真实标签的概率分布之间的差异

  1. 二分类 Binary Cross-Entropy
    真实标签 yyy :000 或 111。
    模型输出 y^\hat{y}y^(Sigmoid 函数激活)是一个 000 到 111 之间的概率值,表示样本属于类别 111 的概率。
    对于单个样本,L=−ylog⁡(y\^)+(1−y)log⁡(1−y\^)L = - y \\log(\\hat{y}) + (1 - y) \\log(1 - \\hat{y})L=−ylog(y\^)+(1−y)log(1−y\^)
    • 当真实标签 y=1y = 1y=1 时:L=−log⁡(y^)L = - \log(\hat{y})L=−log(y^)
      • 如果模型预测 y^\hat{y}y^ 接近 111(预测对了),−log⁡(y^)-\log(\hat{y})−log(y^) 接近 000,损失很小。
      • 如果模型预测 y^\hat{y}y^ 接近 000(预测错了),−log⁡(y^)-\log(\hat{y})−log(y^) 会趋近于正无穷,给予模型巨大的惩罚。
    • 当真实标签 y=0y = 0y=0 时:L=−log⁡(1−y^)L = - \log(1 - \hat{y})L=−log(1−y^)
      • 如果模型预测 y^\hat{y}y^ 接近 000(预测对了),1−y^1-\hat{y}1−y^ 接近 111,损失接近 000。
      • 如果模型预测 y^\hat{y}y^ 接近 111(预测错了),1−y^1-\hat{y}1−y^ 接近 000,损失趋近于正无穷。
    • sigmod:y^=σ(z)=11+e−z\hat{y} = \sigma(z) = \frac{1}{1 + e^{-z}}y^=σ(z)=1+e−z1
      • 求导:∂L∂z=y^−y\frac{\partial L}{\partial z} = \hat{y} - y∂z∂L=y^−y
  2. 多分类 Multi-Class Cross-Entropy
    真实标签 yyy 通常是一个 One-Hot 编码的向量,
    模型输出 y^\hat{y}y^(Softmax 函数激活)是一个概率分布向量,所有类别的预测概率之和为 100%。
    对于单个样本,L=−∑c=1Myclog⁡(y^c)L = - \sum_{c=1}^{M} y_c \log(\hat{y}_c)L=−c=1∑Myclog(y^c)MMM:总类别数
    ycy_cyc:如果样本属于第 ccc 类,则 yc=1y_c = 1yc=1,否则 yc=0y_c = 0yc=0
    y^c\hat{y}_cy^c:模型预测样本属于第 ccc 类 的概率
    • 除了真实类别外,其他的 ycy_cyc 全都是 000,所以多分类损失在本质上只关心模型在那个正确类别上的预测概率。正确类别的预测概率越接近 111,整体损失就越低。
    • Softmax:y^i=ezi∑k=1Mezk\hat{y}i = \frac{e^{z_i}}{\sum{k=1}^{M} e^{z_k}}y^i=∑k=1Mezkezi
      求导:∂L∂zi=y^i−yi\frac{\partial L}{\partial z_i} = \hat{y}_i - y_i∂zi∂L=y^i−yi
  3. 求导:∂L∂z=y^−y\frac{\partial L}{\partial \mathbf{z}} = \mathbf{\hat{y}} - \mathbf{y}∂z∂L=y^−y

为什么分类问题不用均方误差(MSE)

在回归问题中,我们常用均方误差(MSE=(y−y^)2MSE = (y - \hat{y})^2MSE=(y−y^)2)。为什么分类问题要大费周章地用对数交叉熵呢?

  • 对错误惩罚更严厉(梯度消失问题):分类模型的最后一层通常是 Sigmoid 或 Softmax。如果使用 MSE,当模型预测完全错误(真值为 111,预测为 000)时,Sigmoid 的导数会趋于 000,导致梯度消失,模型很难通过反向传播来纠错。而交叉熵由于引入了 log⁡\loglog,求导后可以完美抵消 Sigmoid 的导数项,使得预测差异越大,梯度越大,模型学得越快。
  • 符合概率最大似然估计:从统计学角度来看,最小化交叉熵损失,实际上等价于最大化样本数据的似然函数,具有严谨的数学理论支撑。
相关推荐
半个落月1 小时前
从 Tokenization 到 Embedding:用 Node.js 搞懂大模型为什么先“分词”再“向量化”
人工智能·node.js
vanuan1 小时前
MCP协议实战(Java版):用Spring Boot让AI直接查你的数据库
人工智能
雪隐1 小时前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
Coffeeee2 小时前
帮你快速理解AI Agent之我想招个Android实习生
android·人工智能·agent
新新技术迷2 小时前
AI聊天自动跟随滚动,附回到底部按钮
人工智能
先锋部队2 小时前
用Web Worker解析AI返回的大文本不卡UI
人工智能
把你拉进白名单2 小时前
8.OpenClaw源码解析——三层洋葱重试
人工智能·llm·agent
用户632415031782 小时前
拖文档进AI对话框解析,前端要处理哪些脏活
人工智能
姗姗来迟了2 小时前
AI回答里的引用来源卡片,前端怎么做
人工智能
用户7106207733402 小时前
Codex-端口配置错误排查案例(stream disconnected before completion)
人工智能