| 语言 | 格式 | 评分 |
|---|---|---|
中文(简体) | .pdf | 3 |
| 摘要 | ||
文档主要介绍了交叉熵的概念及其在PyTorch中的实现。交叉熵是衡量两个概率分布差异的指标,可以表示为熵与KL散度之和。文档通过公式推导展示了交叉熵与熵、KL散度之间的关系,并通过实例说明了交叉熵在多分类任务中的应用。此外,文档还比较了交叉熵与均方误差(MSE)在分类任务中的优劣,并通过PyTorch代码示例说明了交叉熵的计算过程及其数值稳定性问题。 | ||
| AI总结 | ||
### 文档总结:深度学习与PyTorch入门实战 - 交叉熵
---
#### 1. **交叉熵的概念**
- 交叉熵(Cross Entropy)用于衡量两个概率分布之间的差异。
- 公式:$$ H(p,q) = -\sum p(x)\log q(x) $$
- 可以分解为熵(Entropy)和KL散度(Kullback-Leibler Divergence)之和:$$ H(p,q) = H(p) + D_{\mathrm{KL}}(p|q) $$
---
#### 2. **为什么选择交叉熵而不是MSE?**
- **MSE的局限性**:在多分类任务中,MSE无法直接反映概率分布的差异。
- **交叉熵的优势**:
- 能够衡量预测概率与真实标签之间的差异。
- 适用于概率预测任务(如分类问题)。
- 示例对比:
| Label | Predict | Correct |
|-------|---------|---------|
| 3 | [0.3,0.3,0.4] | Yes |
| 2 | [0.3,0.4,0.3] | Yes |
| 1 | [0.1,0.2,0.7] | No |
---
#### 3. **交叉熵的实现**
- **PyTorch中的交叉熵**:
- 使用`F.cross_entropy`计算多分类任务的损失。
- 实现流程:
1. 输入`x`通过权重矩阵`W`得到`logit`。
2. 对`logit`应用`softmax`得到概率分布。
3. 计算交叉熵损失。
- **代码示例**:
```python
x = torch.randn(1, 784)
w = torch.randn(10, 784)
logits = x @ w.t()
loss = F.cross_entropy(logits, torch.tensor([3]))
```
---
#### 4. **二分类与交叉熵**
- 二分类任务的交叉熵公式:
$$ H(P,Q) = -y\log(p) - (1-y)\log(1-p) $$
其中:
- \( y \) 是真实标签(0或1)。
- \( p \) 是预测概率。
---
#### 5. **数值稳定性**
- 在计算概率时,直接计算对数避免数值溢出:
```python
pred_log = torch.log(pred)
loss = F.nll_loss(pred_log, torch.tensor([3]))
```
---
#### 6. **总结**
- 交叉熵是衡量概率分布差异的有效工具。
- 在PyTorch中,`F.cross_entropy`结合了`logit`、`softmax`和损失计算,简化了实现。
- 适用于多分类任务,且比MSE更适合概率预测。
---
下一课时将实战多分类问题。 | ||
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
6 页请下载阅读 -
文档评分














深度学习与PyTorch入门实战 - 25 交叉熵