交叉熵损失函数公式,深度学习领域
时间: 2025-05-31 12:56:43 浏览: 26
### 交叉熵损失函数的定义
在深度学习领域,交叉熵损失函数是一种广泛应用于分类任务中的损失函数。它通过比较模型输出的概率分布 \( p \) 和目标的真实概率分布 \( q \),来衡量两者之间的差异。对于二分类问题,通常使用 **Binary Cross-Entropy (BCE)** 损失;而对于多分类问题,则采用 **Categorical Cross-Entropy (CCE)**。
#### 1. 二分类问题中的交叉熵损失公式
假设模型的输出为 \( a \in [0, 1] \),表示样本属于正类的概率,而真实的标签为 \( y \in \{0, 1\} \)。那么,二分类问题中的交叉熵损失函数可以写成如下形式:
\[ L(a, y) = -[y \log(a) + (1-y)\log(1-a)] \]
其中:
- \( a \) 是经过激活函数(如 sigmoid 函数)后的预测值;
- \( y \) 是真实标签。
这个公式的含义是对数似然估计的最大化过程[^1]。
#### 2. 多分类问题中的交叉熵损失公式
在多分类场景下,假设有 \( K \) 类,模型的输出是一个长度为 \( K \) 的向量 \( \mathbf{a} = [a_1, a_2, ..., a_K]^T \),表示每个类别对应的概率值。这些概率值通常是通过 softmax 函数得到的。如果第 \( k \)-th 类是正确标签,则其真实分布可以用 one-hot 编码表示为 \( \mathbf{y} = [y_1, y_2, ..., y_K]^T \),其中只有正确类别的位置为 1,其余均为 0。
此时,多分类问题中的交叉熵损失函数可表达为:
\[ C(\mathbf{a}, \mathbf{y}) = -\sum_{k=1}^{K} y_k \log(a_k) \]
这里:
- \( a_k \) 表示模型对第 \( k \)-th 类的预测概率;
- \( y_k \) 表示第 \( k \)-th 类是否为目标类(one-hot 编码下的取值)。
当目标类为单个类别时,上述公式简化为仅针对目标类的负对数概率[^2]。
#### 3. 数学推导背景
交叉熵损失函数来源于信息论中的交叉熵概念。给定两个离散概率分布 \( P \) 和 \( Q \),它们的交叉熵被定义为:
\[ H(P, Q) = -\sum_x P(x) \log(Q(x)) \]
在机器学习中,\( P \) 被视为真实数据分布,而 \( Q \) 则代表模型预测的数据分布。因此,在训练过程中最小化交叉熵实际上是在优化模型使其更接近于真实分布[^3]。
---
### Python 实现代码
以下是基于 TensorFlow/Keras 的交叉熵损失函数实现方式:
```python
import tensorflow as tf
# 定义真实标签和预测值
true_labels = [[1., 0., 0.], [0., 1., 0.]] # One-hot编码
predicted_probs = [[0.9, 0.05, 0.05], [0.1, 0.8, 0.1]]
# 计算Categorical Cross-Entropy Loss
cce_loss_fn = tf.keras.losses.CategoricalCrossentropy()
loss_value = cce_loss_fn(true_labels, predicted_probs)
print(f"Categorical Cross-Entropy Loss: {loss_value.numpy()}")
```
对于二分类情况,可以直接调用 `tf.keras.losses.BinaryCrossentropy` 来计算 BCE 损失。
---
阅读全文
相关推荐



















