推荐答案
PyTorch 提供了多种损失函数,常用的包括:
- nn.MSELoss:均方误差损失,用于回归任务。
- nn.L1Loss:平均绝对误差损失,用于回归任务。
- nn.CrossEntropyLoss:交叉熵损失,用于多分类任务。
- nn.BCELoss:二分类交叉熵损失,用于二分类任务。
- nn.BCEWithLogitsLoss:结合了 Sigmoid 和二分类交叉熵的损失函数,用于二分类任务。
- nn.NLLLoss:负对数似然损失,通常与 LogSoftmax 结合使用,用于多分类任务。
- nn.KLDivLoss:Kullback-Leibler 散度损失,用于衡量两个概率分布的差异。
- nn.HingeEmbeddingLoss:用于衡量两个输入的相似性,常用于二分类任务。
- nn.MarginRankingLoss:用于排序任务,衡量两个输入之间的相对距离。
- 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}) )