loss 函数
首先,Loss 是允许不降到 0 的,模型计算的 loss 最终结果可以接近 0。
可以成为 loss 函数的条件## 常用 loss
以下函数调用基于 Pytorch,头文件导入:
import torch.nn as nn
- 均方差(MSE)
nn.functional.mse_loss
定义
预测值与真实值之差的平方的平均值
应用场景
主要用于回归问题 - 交叉熵(Cross Entropy)
nn.functional.cross_entropy
要求二维的输入,一维的输出
nn.CrossEntropyLoss
中已经实现了softmax功能
对于 y_pred 的要求是:n * class_num,对于 y 的要求是 n
交叉熵计算逻辑的例子
定义
衡量概率分布之间的差异
应用场景- 主要用于分类问题,尤其是二分类和多分类问题
- 适用于输出层使用 sigmoid 或 softmax 激活函数的情况,因为这些函数的输出可以解释为概率分布
- 计算逻辑
-log(预测值与正确标签对位相乘,再相加) - 使用前提
- 交叉熵的输入是一个概率值
- 预测场景概率空间和结果为1(log函数在x小于0时无定义)
特点 - 目前,在分类问题上,基本都采用交叉熵。
- 使模型输出易于比较(通过交叉熵损失)
- 通过归一化(指将模型输出转换为概率分布)来评估模型性能
记录应用不多的其他 loss(以下 loss 有使用心得之后再做记录)
- 0/1损失(BCELoss)
通常与 sigmoid 函数一起使用 - 指数损失
- 对数损失
- Hinge损失