PyTorch — 最常见损失函数 LOSS 的选择
- 损失函数:度量模型的预测结果与真实值之间的差异;通过
最小化 loss
-> 最大化模型表现 - 代码实现框架:设有 模型预测值
f (x)
, 真实值y
- 方法一: 步骤 1.
criterion = torch.nn.某个Loss()
;步骤 2.loss = criterion(f(x), y)
- 方法二:直接采用
F.某个_loss(f(x), y)
- 方法一: 步骤 1.
回归损失(Regression Loss):希望预测值和真实值接近,即 f(x) = y
- 【
torch.nn.L1Loss()
】平均绝对值误差MAE
(Mean Abs Error): f (x) 和 y 之间差的绝对值的平均值
- 具体数学计算公式:
Loss
=
1
n
∑
i
=
0
n
∣
f
(
x
i
)
−
y
i
∣
ext{Loss}=\frac{1}{n}\sum^n_{i=0} |f(x_i)-y_i|
- 注:L1 损失, 主要用于回归问题和简单的模型,所以很少使用
- 具体数学计算公式:
- 【
torch.nn.MSELoss()
】平均平方误差MSE
(Mean Squared Error): f (x) 和 y 之间差的平方的平均值
- 具体数学计算公式:
Loss
=
1
n
∑
i
=
0
n
(
f
(
x
i
)
−
y
i
)
2
ext{Loss}=\frac{1}{n}\sum^n_{i=0} (f(x_i)-y_i)^2
F.mse_loss(f(x), y)
- 注:L2 损失, 很常用
- 具体数学计算公式:
分类损失(Classification Loss):希望分类准确率高等
- 【
torch.nn.CrossEntropyLoss()
】分类交叉熵损失CEL
(Cross Entropy Loss): 和 KL divergence (衡量两个分布的相似度) 有关- 具体数学计算公式:
−
∑
y
i
j
log
(
f
(
x
i
)
j
)
-\sum y_{ij}\log(f(x_i)_j)
f
(
x
i
)
f(x_i)
F.cross_entropy(直接传入 logits (已打包了 softmax))
- 通常和
softmax
(soft version of maxS
(
y
i
)
=
e
y
i
∑
e
y
i
S(y_i) = \frac{e^{y_i}}{\sum e^{y_i}}
F.softmax(y)
) 搭配使用 (softmax 负责产生上述概率输出) - logistic regression (按
sigmoid
输出的概率大小分类) 已被 classification 代替
- 具体数学计算公式:
- B站视频参考资料
- 详细博客参考资料