多分类与二分类问题详解
前言
在机器学习和深度学习中,分类问题是核心任务之一。但你是否真正理解:
- 为什么多分类用 softmax + 交叉熵?
- 为什么二分类用 sigmoid + 二元交叉熵?
- 为什么交叉熵损失函数要这样设计?
很多人在写代码时只是简单地调用
CrossEntropyLoss
,却不清楚背后的数学原理和逻辑关系。
🎯 本文将为你揭示: 1. Softmax、交叉熵、极大似然估计(MLE)三者的内在联系 2. 从数学原理到实际应用的完整推导过程 3. 二分类作为多分类特例的统一理解
让我们从最基础的概念开始,构建完整的知识体系。
多分类问题
大家都知道做多分类的时候,模型的输出是一个向量,向量的每个元素对应一个类别的分数(logits)。为了将这些分数转换为概率分布,我们通常使用 softmax 函数。为了训练模型,我们需要一个损失函数来衡量预测概率分布与真实标签之间的差异。这里我们使用 交叉熵损失 函数。
从 softmax 到交叉熵损失函数的过程中,我们还需要知道 极大似然估计(MLE) 的概念。下面我们将详细介绍这三者之间的关系。
1. Softmax 函数
作用:将模型输出的原始分数(logits)转换为概率分布。
设模型对样本
Softmax 的构造逻辑:
- 目标:概率
- 方法:通过指数函数保证正值,再归一化:
2. 极大似然估计(MLE)
目标:找到模型参数,使得观测数据(真实标签)出现的概率最大。
问题设定:
假设真实类别为
似然函数构建:
- 单样本的似然是模型对真实类别的预测概率:
- 对数似然(取对数简化计算):
关键点:
- MLE 的假设是样本独立同分布(i.i.d.),对于
3. 交叉熵损失
信息论基础:
- 交叉熵衡量两个分布 $ 你的理解是正确的!在 类别数
新的思考:CE 和 BCE 的本质区别与应用场景
1. 核心区别
维度 | 多分类交叉熵(CE) | 二元交叉熵(BCE) |
---|---|---|
问题类型 | 单标签多分类(一个样本仅属于一个类别) | 多标签分类 / 二分类(一个样本可属于多个类别) |
标签形式 | One-hot 向量(如 [0, 1, 0] ) |
多标签向量(如 [1, 0, 1] ) |
概率约束 | Softmax:所有类别概率和为 1 | Sigmoid:每个类别的概率独立 ∈ [0, 1] |
损失计算 | 只计算真实类别的负对数概率 | 对每个标签独立计算二元交叉熵并求和 / 平均 |
2. 推荐系统中的正负样本问题
在推荐系统中,我们常遇到 “用户 - 物品” 交互数据,其中:
- 正样本:用户点击 / 购买的物品(标签
(1)使用 BCE 的逻辑
- 模型输出:对每个物品
,输出一个独立的概率 。 - 物理意义:
表示用户对物品 的偏好概率,各物品之间概率无关。 - 损失函数:
- 适用场景:
- 显式负采样(如推荐系统的负样本构造)。
- 多标签分类(如一张图片同时包含 “猫” 和 “狗”)。
(2)使用 CE 的逻辑(错误示范)
- 若错误地使用 Softmax + CE:
- 模型输出:对所有物品计算 Softmax 概率,强制
。 - 问题:Softmax 隐含 “互斥” 假设,即用户只能喜欢一个物品,这与推荐场景矛盾(用户可能喜欢多个物品)。
- 后果:模型会倾向于打压其他正样本的概率,导致训练不稳定。
- 模型输出:对所有物品计算 Softmax 概率,强制
3. 多标签分类问题
假设一个任务需要预测样本是否同时属于多个类别(如图像中的多物体识别):
- 标签:[1, 0, 1]
(类别 1 和类别 3 共存)。 -
BCE 处理: - 对每个类别独立计算 Sigmoid 概率和 BCE
损失。 - 各类别之间无竞争关系。 - CE 的错误使用: -
Softmax
会强制模型在类别 1 和类别 3 之间做 “非此即彼” 的选择,违背多标签特性。
4. 数学本质对比
(1)BCE 的独立性假设
BCE 的损失函数可分解为:
(2)CE 的互斥性假设
CE 的损失函数为:
5. 实际代码中的选择
(1)PyTorch 实现对比
1 | import torch |
(2)何时选择 BCE 或 CE?
场景 | 选择 | 原因 |
---|---|---|
二分类(单标签) | BCE/CE | 两者数学等价,但 BCE 更直观(输出一个概率)。 |
多分类(单标签) | CE | Softmax 天然约束概率和为 1,符合单标签假设。 |
多标签分类 / 推荐系统 | BCE | 各类别独立判断,不要求概率和约束。 |
显式负采样(如推荐系统) | BCE | 正负样本独立计算损失,无需全局归一化。 |
最终结论
- 数学等价性仅限于
的单标签分类,此时 CE 和 BCE 可互换。 - 应用场景决定选择:
- 用 CE(Softmax) 当类别互斥(如手写数字识别)。
- 用 BCE(Sigmoid) 当类别独立(如推荐系统、多标签分类)。
- 推荐系统中的正负样本必须用 BCE,因为 Softmax 的归一化假设会引入偏差。
通过这一补充,你的笔记将更完整地覆盖理论等价性和实际应用的差异!(真实)和
与 MLE 的关系:
- 交叉熵的表达式
- 数学本质:最小化交叉熵损失等价于最大化似然函数。
这里非常关键!softmax 和交叉熵损失是通过极大似然估计联系起来的,因为交叉熵损失最小化就是最大化似然函数,所以交叉熵损失可以用于 softmax 模型的训练。
多样本情况:
对于批量数据,损失函数为所有样本交叉熵的平均:
4. 三者的联合推导链条
步骤 1:模型输出到概率
模型输出 logits $
步骤 2:构建似然函数
对于真实类别
步骤 3:交叉熵的形式化
直接代入交叉熵定义:
步骤 4:梯度反向传播
通过链式法则计算损失对 logits
5. 总结:三者的核心联系
- Softmax:将模型输出
转换为概率分布 ,为似然计算提供基础。
- MLE:通过最大化
(似然)指导模型训练,转化为最小化 。
- 交叉熵损失:是
的具体实现形式,直接作为优化目标。
数学一致性:
物理意义:
- Softmax:概率归一化。
- MLE:统计学最优性保证。
- 交叉熵:衡量信息差异,实现高效优化。
这一链条在分类问题中构成了从模型输出到损失计算的完整闭环。
二分类问题
在二分类问题中,softmax、交叉熵损失和极大似然估计的联系依然存在,但形式上可以简化为使用 sigmoid 函数 和 二元交叉熵损失(Binary Cross-Entropy, BCE)。下面我们详细推导它们的关系,并与多分类情况对比。
1. 二分类的模型输出
在二分类问题中,通常只需要预测一个类别(如正类)的概率
对比多分类 softmax: - 多分类:softmax
对所有类别归一化,输出
2. 极大似然估计(MLE)
假设真实标签
似然函数(单个样本):
对数似然:
3. 二元交叉熵损失(BCE)
交叉熵衡量真实分布
对比多分类交叉熵: - 多分类交叉熵:
4. 反向传播梯度计算
为了优化模型,我们需要计算损失对 logit
总结:二分类 vs. 多分类
概念 | 二分类 | 多分类 |
---|---|---|
模型输出 | 1 个 logit |
|
概率转换 | sigmoid |
softmax |
MLE 目标 | ||
损失函数 | 二元交叉熵 |
交叉熵 |
梯度 |
最终结论
- 二分类可以看作是 多分类的特例(
),但由于对称性,仅需计算一个概率 ,另一个为 。 - sigmoid + 二元交叉熵 等价于 softmax + 交叉熵 在二分类情况下的简化形式。
- MLE 仍然成立,最大化似然等价于最小化交叉熵。
- 梯度计算一致,均为预测概率减去真实标签(
)。
因此,二分类与多分类在数学本质上是统一的,只是实现方式不同。
新的思考:CE 和 BCE 的本质区别与应用场景
1. 核心区别
维度 | 多分类交叉熵(CE) | 二元交叉熵(BCE) |
---|---|---|
问题类型 | 单标签多分类(一个样本仅属于一个类别) | 多标签分类 / 二分类(一个样本可属于多个类别) |
标签形式 | One-hot 向量(如 [0, 1, 0] ) |
多标签向量(如 [1, 0, 1] ) |
概率约束 | Softmax:所有类别概率和为 1 | Sigmoid:每个类别的概率独立 ∈ [0, 1] |
损失计算 | 只计算真实类别的负对数概率 | 对每个标签独立计算二元交叉熵并求和 / 平均 |
2. 推荐系统中的正负样本问题
在推荐系统中,我们常遇到 “用户 - 物品” 交互数据,其中:
- 正样本:用户点击 / 购买的物品(标签
(1)使用 BCE 的逻辑
- 模型输出:对每个物品
,输出一个独立的概率 。 - 物理意义:
表示用户对物品 的偏好概率,各物品之间概率无关。 - 损失函数:
- 适用场景:
- 显式负采样(如推荐系统的负样本构造)。
- 多标签分类(如一张图片同时包含 “猫” 和 “狗”)。
(2)使用 CE 的逻辑(错误示范)
- 若错误地使用 Softmax + CE:
- 模型输出:对所有物品计算 Softmax 概率,强制
。 - 问题:Softmax 隐含 “互斥” 假设,即用户只能喜欢一个物品,这与推荐场景矛盾(用户可能喜欢多个物品)。
- 后果:模型会倾向于打压其他正样本的概率,导致训练不稳定。
- 模型输出:对所有物品计算 Softmax 概率,强制
3. 多标签分类问题
假设一个任务需要预测样本是否同时属于多个类别(如图像中的多物体识别):
- 标签:[1, 0, 1]
(类别 1 和类别 3 共存)。 -
BCE 处理: - 对每个类别独立计算 Sigmoid 概率和 BCE
损失。 - 各类别之间无竞争关系。 - CE 的错误使用: -
Softmax
会强制模型在类别 1 和类别 3 之间做 “非此即彼” 的选择,违背多标签特性。
4. 数学本质对比
(1)BCE 的独立性假设
BCE 的损失函数可分解为:
(2)CE 的互斥性假设
CE 的损失函数为:
5. 实际代码中的选择
(1)PyTorch 实现对比
1 | import torch |
(2)何时选择 BCE 或 CE?
场景 | 选择 | 原因 |
---|---|---|
二分类(单标签) | BCE/CE | 两者数学等价,但 BCE 更直观(输出一个概率)。 |
多分类(单标签) | CE | Softmax 天然约束概率和为 1,符合单标签假设。 |
多标签分类 / 推荐系统 | BCE | 各类别独立判断,不要求概率和约束。 |
显式负采样(如推荐系统) | BCE | 正负样本独立计算损失,无需全局归一化。 |
最终结论
- 数学等价性仅限于
的单标签分类,此时 CE 和 BCE 可互换。 - 应用场景决定选择:
- 用 CE(Softmax) 当类别互斥(如手写数字识别)。
- 用 BCE(Sigmoid) 当类别独立(如推荐系统、多标签分类)。
- 推荐系统中的正负样本必须用 BCE,因为 Softmax 的归一化假设会引入偏差。