损失函数
在深度学习中,损失函数是用来横向模型参数质量的函数,衡量的方式是比较网络输出和真实输出的差异
损失函数的不同名称:
- 损失函数 loss function
- 代价函数 cost function
- 目标函数 objective function
- 误差函数 error function
分类任务损失函数
多分类任务损失函数
在多分类任务通常使用softmax将logits转换为概率的形式, 所以多酚类的交叉熵损失也叫做softmax损失,他的计算方法是:
其中:
y是样本x属于某一个类别的真实概率
而f(x)是样本属于某一类别的预测分数
S是softmax激活函数,将属于某一类别的预测分数转换成概率
L用来衡量真实值y和预测值f(x)之间差异性的损失结果
上图中的交叉熵损失为:
从概率角度理解,我们的目的是最小化正确类别所对应的预测概率的对数的负值(损失值最小),如下图所示:
# 分类损失函数:交叉熵损失使用nn.CrossEntropyLoss()实现。nn.CrossEntropyLoss()=softmax + 损失计算
def test():
# 设置真实值: 可以是热编码后的结果也可以不进行热编码
# y_true = torch.tensor([[0, 1, 0], [0, 0, 1]], dtype=torch.float32)
# 注意的类型必须是64位整型数据
y_true = torch.tensor([1, 2], dtype=torch.int64)
y_pred = torch.tensor([[0.2, 0.6, 0.2], [0.1, 0.8, 0.1]]