PyTorch 的损失函数有哪些?

推荐答案

PyTorch 提供了多种损失函数,常用的包括:

  1. nn.MSELoss:均方误差损失,用于回归任务。
  2. nn.L1Loss:平均绝对误差损失,用于回归任务。
  3. nn.CrossEntropyLoss:交叉熵损失,用于多分类任务。
  4. nn.BCELoss:二分类交叉熵损失,用于二分类任务。
  5. nn.BCEWithLogitsLoss:结合了 Sigmoid 和二分类交叉熵的损失函数,用于二分类任务。
  6. nn.NLLLoss:负对数似然损失,通常与 LogSoftmax 结合使用,用于多分类任务。
  7. nn.KLDivLoss:Kullback-Leibler 散度损失,用于衡量两个概率分布的差异。
  8. nn.HingeEmbeddingLoss:用于衡量两个输入的相似性,常用于二分类任务。
  9. nn.MarginRankingLoss:用于排序任务,衡量两个输入之间的相对距离。
  10. nn.TripletMarginLoss:用于三元组损失,常用于度量学习任务。

本题详细解读

1. nn.MSELoss

  • 用途:用于回归任务,计算预测值和目标值之间的均方误差。
  • 公式:( \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 )

2. nn.L1Loss

  • 用途:用于回归任务,计算预测值和目标值之间的平均绝对误差。
  • 公式:( \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| )

3. nn.CrossEntropyLoss

  • 用途:用于多分类任务,结合了 LogSoftmax 和 NLLLoss。
  • 公式:( \text{CrossEntropy} = -\sum_{i=1}^{n} y_i \log(\hat{y}_i) )

4. nn.BCELoss

  • 用途:用于二分类任务,计算二分类交叉熵。
  • 公式:( \text{BCE} = -\frac{1}{n} \sum_{i=1}^{n} [y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)] )

5. nn.BCEWithLogitsLoss

  • 用途:用于二分类任务,结合了 Sigmoid 和二分类交叉熵,避免数值不稳定。
  • 公式:与 BCELoss 相同,但输入不需要经过 Sigmoid。

6. nn.NLLLoss

  • 用途:用于多分类任务,通常与 LogSoftmax 结合使用。
  • 公式:( \text{NLL} = -\sum_{i=1}^{n} y_i \log(\hat{y}_i) )

7. nn.KLDivLoss

  • 用途:用于衡量两个概率分布的差异。
  • 公式:( \text{KL} = \sum_{i=1}^{n} y_i \log(\frac{y_i}{\hat{y}_i}) )

8. nn.HingeEmbeddingLoss

  • 用途:用于衡量两个输入的相似性,常用于二分类任务。
  • 公式:( \text{Hinge} = \max(0, 1 - y_i \cdot \hat{y}_i) )

9. nn.MarginRankingLoss

  • 用途:用于排序任务,衡量两个输入之间的相对距离。
  • 公式:( \text{Margin} = \max(0, -y_i \cdot (\hat{y}_i - \hat{y}_j) + \text{margin}) )

10. nn.TripletMarginLoss

  • 用途:用于三元组损失,常用于度量学习任务。
  • 公式:( \text{Triplet} = \max(0, \text{distance}(a, p) - \text{distance}(a, n) + \text{margin}) )
纠错
反馈