2026/6/9 19:38:32
网站建设
项目流程
网站开发设计教程,wordpress小米商城主题,品牌策划公司都有哪些,为什么建设厅的网站不好打开评价指标准确率/精确率/召回率Positive (预测到的正例) Negative (预测到的反例)True (预测结果为真) TP TNFalse (预测结果为假) FP FN争对正案例的计算#xff1a;1、准确率计算方式#xff08;ACC#xff09;#xff1a;2、精确率计算方式#xff08;Precision#xf…评价指标准确率/精确率/召回率Positive (预测到的正例) Negative (预测到的反例)True (预测结果为真) TP TNFalse (预测结果为假) FP FN争对正案例的计算1、准确率计算方式ACC2、精确率计算方式Precision3、召回率计算方式Recall4、F1计算方式指标 优点 缺点准确率 - 直观且易理解 - 在类别不平衡的情况下可能误导模型评估精确率 - 衡量预测为正类的样本中实际为正类的比例适用于避免假阳性 - 可能忽视召回率导致漏掉正类样本假阴性召回率 - 衡量模型对正类样本的识别能力适用于避免假阴性 - 可能导致精确率较低增加误报假阳性F1 分数 - 平衡精确率和召回率适用于不平衡的任务 - 不能单独反映精确率或召回率可能不适用于需要单独关注某一项的场景BLEUBLEU 采用一种N-gram的匹配规则原理比较简单就是比较译文和参考译文之间n组词的相似的一个占比原文今天天气不错机器译文It is a nice day today人工译文Today is a nice day1-gram:命中5个词那么计算得到匹配度为3-gram:计算得到匹配度为在通过结合召回率和惩罚因子之后得到BLEU计算公式为使用例子直接使用第三方库sacrebleuimport sacrebleuhyps [我有一个帽衫, 大大的帽子]refs [你好我有一个帽衫, 帽子大大的]bleu sacrebleu.corpus_bleu(hyps, [refs], tokenizezh)print(float(bleu.score))# 59.809989126151606Loss FunctionCross-Entropy Loss(交叉熵损失)交叉熵损失用于分类任务它度量的是预测概率分布与真实标签分布之间的差异。通常用于多分类问题。交叉熵损失公式多分类如下其中为类别数量真实标签数据模型预测概率。二分类交叉熵损失为在pytorch中对于交叉熵损失函数主要参数1、label_smoothing (float, optional)通过平滑标签的方式来避免模型过度自信提高模型的泛化能力并缓解类别不平衡问题的技术。假设模型有 C 个类别标签为 y真实标签的平滑值为 ε则对于真实类别 y 1标签值变为 1 - ε对于其他类别 y ≠ 1标签值变为 ε / (C - 1)2、ignore_index (int, optional)忽略某些特定的标签通常用于标记某些数据的特殊情况如填充padding区域、无效标签或其他不需要参与损失计算的标签3、reduction (str, optional)none、mean 和 sum分别表示对最后 不汇总、平均值、求和4、weight相当于在计算损失过程中给每一个标签额外补充一个权重对于交叉熵损失计算从代码角度出发需要考虑的就是输入数据格式InputShape或者。Target或者其中 C代表类别N代表batch_size。从数据格式上可以看出也就是保证N、C在同一维度即可⭐值得注意的是在pytorch的交叉熵损失里面已经计算了softmax/sigmoid所以模型输出如果用交叉熵损失函数就不需要用softmax/sigmoid处理Mean Squared Error(均方误差)均方误差损失用于回归任务度量预测值与真实值之间的差异。MSE 计算的是预测值和实际值的平方误差的平均值。MSE 公式其中为类别数量真实标签数据模型预测概率。例子比如说预测类别假设为3模型输出之后通过sigmoid/softmax处理之后得到预测 真实0.3 0.3 0.4 0 0 1 (A)0.3 0.4 0.3 0 1 0 (B)0.1 0.2 0.7 1 0 0 (C)均方误差计算交叉熵计算Focal LossFocal Loss主要用于处理样本失衡问题样本里面标签不平衡问题比如说分类任务标签大部分是类别A只有少部分是标签B其原理也很简单可以直接在原交叉熵基础上补充一个 因子即可。调节因子用于控制对易分类样本的惩罚程度。它是一个非负实数通常设置为大于 0 的值。当0 时随着的增加的值会迅速减小从而降低易分类样本的损失值。这样可以使得模型更加关注那些难以分类的样本。换言之如果样本里面大部分都是A那么计算得到也就会越大那么可以增加值来减小这部分值对于损失值的影响: 平衡因子用于调整正类和负类之间的权重。它是一个可调参数通常设置为对于正类和 1−对于负类。当数据集中正负样本数量不均衡时可以通过调整来平衡两类样本的贡献。例如在一个正负样本比例为 1:9 的数据集中可以将设置为 0.9以增加正类样本的权重一般而言对于这个参数直接使用我的标签权重即可import torchimport torch.nn as nnimport torch.nn.functional as Fclass FocalLoss(nn.Module):Focal Loss implementation.def __init__(self, gamma1.5, alpha0.25):super().__init__()self.gamma gammaself.alpha alphadef forward(self, pred, label, mask_labelsNone):Calculates focal loss with optional mask_labels.loss F.binary_cross_entropy_with_logits(pred, label, reductionnone)pred_prob pred.sigmoid()p_t label * pred_prob (1 - label) * (1 - pred_prob)loss * (1.0 - p_t) ** self.gammaif self.alpha 0:loss * label * self.alpha (1 - label) * (1 - self.alpha)if mask_labels is not None:loss * mask_labels.float()return loss.sum() / mask_labels.sum()return loss.mean()if __name__ __main__:h, w 500, 500labels_parent torch.randint(0, 2, (h, w), dtypetorch.float32)tmp_labels torch.zeros(1000, 1000)tmp_labels[:h, :w] labels_parenttmp_labels_mask torch.zeros(1000, 1000)tmp_labels_mask[:h, :w] 1pred torch.randn(1, 1000, 1000)focal_loss FocalLoss()loss focal_loss(pred, tmp_labels.unsqueeze(0), tmp_labels_mask)print(loss)对于 FocalLoss另外一个改进为CB Loss用于改进样本分布不均衡问题L1 lossL1 loss算预测值与真实值之间的绝对差值来衡量模型的预测误差公式为Huber LossHuber Loss用于回归任务的损失函数它结合了均方误差MSE和绝对误差MAE的优点可以减少对异常值outliers的敏感性同时保持较好的梯度性质