交叉熵的概率计算取决于具体应用和模型,但在分类问题中,通常通过神经网络或其他分类模型来得到预测概率。以下是计算步骤的概述:
### 步骤1:模型输出
对于分类问题,模型输出的是每个类别的得分或原始值(logits)。例如,对于一个有 \( C \) 个类别的分类问题,模型输出一个长度为 \( C \) 的向量。
### 步骤2:应用 Softmax 函数
为了将模型输出的得分转换为概率分布,通常使用 Softmax 函数。Softmax 函数将模型的输出转换为概率,且这些概率的和为 1。Softmax 函数定义为:
$$ \hat{y}_i = \frac{\exp(z_i)}{\sum_{j=1}^{C} \exp(z_j)} $$
其中:
* \( z_i \) 是模型输出的第 \( i \) 类的得分(logit)。
* \( \hat{y}_i \) 是模型预测的第 \( i \) 类的概率。
### 步骤3:计算交叉熵损失
计算得到的概率分布 \( \hat{y} \) 和真实标签的概率分布 \( y \) 之间的交叉熵。交叉熵损失函数为:
$$ \text{Loss} = - \sum_{i=1}^{C} y_i \log(\hat{y}_i) $$
对于单个样本:
* \( y_i \) 是真实标签的概率分布(one-hot 编码的情况下,属于真实类别的分量为 1,其余为 0)。
* \( \hat{y}_i \) 是模型预测的概率分布。
对于多个样本,交叉熵损失取所有样本损失的平均值:
$$ \text{Loss} = - \frac{1}{N} \sum_{n=1}^{N} \sum_{i=1}^{C} y_{ni} \log(\hat{y}_{ni}) $$
### 具体示例
假设我们有一个神经网络进行三分类任务(类别分别为 A、B、C),某个样本的模型输出 logits 为 \([2.0, 1.0, 0.1]\),真实标签为类别 A(one-hot 编码为 \([1, 0, 0]\))。
1. **计算 Softmax 概率**:
$$
\begin{align*}
\hat{y}_A & = \frac{\exp(2.0)}{\exp(2.0) + \exp(1.0) + \exp(0.1)} \approx \frac{7.39}{7.39 + 2.72 + 1.11} \approx 0.66 \\
\hat{y}_B & = \frac{\exp(1.0)}{\exp(2.0) + \exp(1.0) + \exp(0.1)} \approx \frac{2.72}{7.39 + 2.72 + 1.11} \approx 0.24 \\
\hat{y}_C & = \frac{\exp(0.1)}{\exp(2.0) + \exp(1.0) + \exp(0.1)} \approx \frac{1.11}{7.39 + 2.72 + 1.11} \approx 0.10
\end{align*}
$$
2. **计算交叉熵损失**:
$$ \text{Loss} = - \sum_{i=1}^{3} y_i \log(\hat{y}_i) = - [1 \cdot \log(0.66) + 0 \cdot \log(0.24) + 0 \cdot \log(0.10)] \approx - \log(0.66) \approx 0.41 $$
这样,通过计算 softmax 概率和交叉熵损失,我们可以评估模型预测与真实标签之间的差异,从而指导模型的训练。
标签:approx,frac,log,模型,123,exp,hat From: https://www.cnblogs.com/lizhiqiang0204/p/18245270