系列文章目录
类别损失权重
前言
不平衡数据集是分类任务中的一个常见问题,其中一个类中的实例数量明显小于另一类中的实例数量。这将导致有偏差的模型在少数群体中表现不佳。
加权损失函数是训练模型时使用的标准损失函数的修改。权重用于对少数类别的错误分类分配更高的惩罚。这个想法是通过增加该类别的错误分类成本来使模型对少数类别更加敏感。
实现加权损失函数的最常见方法是为少数类分配较高的权重,为多数类分配较低的权重。权重可以与类别的频率成反比,使得少数类别获得较高的权重,而多数类别获得较低的权重。
原文链接
一、二元分类
torch.nn.BCEWithLogitsLoss函数是二元分类问题常用的损失函数,其中模型输出是 0 到 1 之间的概率值。它结合了 sigmoid 激活函数和二元交叉熵损失。
对于不平衡数据集,其中一类中的实例数量明显小于其他类,torch.nn.BCEWithLogitsLoss可以通过向损失函数添加权重参数来修改函数。权重参数允许为正类和负类分配不同的权重。
权重参数是一个大小为2(class)的张量
import torch
import torch.nn as nn
#定义带有权重参数的 BCEWithLogitsLoss 函数
weight = torch.tensor([ 0.1 , 0.9 ]) # 正类的权重更高
criteria