通辽做家教的网站,做纸巾定制的网站,宿迁网站建设哪家专业,电子商务课程内容大家好#xff0c;在处理文本分类任务时#xff0c;基准测试流行的自然语言处理架构的性能是建立对可用选项的理解的重要步骤。在这里#xff0c;本文将深入探讨与分类相关的最常见的挑战之一——数据倾斜。如果你曾经将机器学习#xff08;ML#xff09;应用于真实世界的…大家好在处理文本分类任务时基准测试流行的自然语言处理架构的性能是建立对可用选项的理解的重要步骤。在这里本文将深入探讨与分类相关的最常见的挑战之一——数据倾斜。如果你曾经将机器学习ML应用于真实世界的分类数据集那么你可能已经很熟悉这个问题了。 了解数据分类中的不平衡问题
在数据分类中我们经常关注数据点在不同类别中的分布情况。平衡的数据集在所有类别中的数据点数大致相同因此更易于处理然而现实世界中的数据集往往是不平衡的。
不平衡数据可能会导致问题因为模型可能会学习用最常见的类来标注所有内容而忽略实际输入。如果主要类别非常普遍以至于模型不会因为将少数类别错误分类而受到太多惩罚这种情况。此外代表性不足的类别可能没有足够的数据供模型学习有意义的模式。
不平衡是数据的一个特征一个很好的问题是我们是否要对其采取任何措施。有一些技巧可以让模型的训练过程变得更容易可以选择对训练过程或数据本身进行操作让模型知道哪些类对我们来说特别重要但这应该以业务需求或领域知识为依据。接下来我们将详细讨论这些技巧和操作。
为了说明解决数据不平衡的不同技术的效果我们将使用包含747条垃圾短信和4827条正常短信的sms-spam数据集。虽然只有两类但为了更好地泛化我们将把该任务视为多类分类问题将使用roberta-base模型。 “Safe” 技巧
偏置初始化
本文的第一项技术是从一开始就让模型了解数据分布。我们可以通过相应地初始化最终分类层的偏置来传播这一知识。Andrej Karpathy在他的《训练神经网络的秘诀》A Recipe for Training Neural Networks中分享了这一技巧它有助于模型从知情的角度出发。在我们的多分类案例中我们使用softmax作为最终激活函数我们希望模型在初始化时的输出能够反映数据分布。为了实现这一目标我们需要解决以下问题 然后有 其中b0和b1分别为负类和正类的偏置neg和pos分别为负类和正类中元素的数量。通过这种初始化所有指标都得到了简单的改善。 下采样和上加权/上采样和下加权
这些技术也能有效解决类不平衡问题。二者的概念相似但执行方式不同。下采样和上加权涉及减少主要类的规模以平衡分布同时在训练过程中为该类的示例分配更大的权重。上加权可确保输出概率仍然代表观察到的数据分布。相反上采样和下加权则需要增加代表性不足的类别的规模并按比例降低其权重。
下采样和上加权的结果 上采样和下加权的结果
在这两种情况下“垃圾邮件”的召回率都有所下降这可能是因为“正常邮件”的权重是“垃圾邮件”权重的两倍。
“Not-so-safe”的技巧
众所周知存在着方法可以故意改变输出概率分布从而给代表性不足的类别带来优势。通过使用这些技术我们明确地向模型发出信号表明某些类别至关重要不应被忽视。这通常是由业务需求驱动的比如检测金融欺诈或攻击性评论这比意外地错误标记好的示例更重要。当目标是提高特定类别的召回率时即使牺牲其他指标也要应用这些技术。
加权法是为不同类别的样本损失值分配不同的权重。这是一种有效且适应性强的方法因为它可以让你指出每个类别对模型的重要性。以下是单个训练样本的多类别加权交叉熵损失公式 其中pytrue表示真实类别的概率wytrue是该类别的权重。
确定权重的一个很好的默认方法是使用类别频率倒数 其中N是数据集的总条目数c是类别计数ni是第i个类别的元素计数
权重计算如下{ham: 0.576, spam: 3.784}
以下是使用这些权重得出的指标 指标超过基线方案。虽然这种情况可能会发生但并非总是如此。
不过如果避免特定类的漏检至关重要可以考虑增加类别的权重这样可能会提高类别的召回率。让我们尝试使用权重{ham: 0.576, spam: 10.0}来查看结果。
结果如下 正如预期的那样“垃圾邮件”的召回率提高了但精确度却下降了。与使用类别频率倒数权重相比F1分数有所下降。这证明了基本损失加权的潜力。即使对于平衡数据加权也可能有利于召回关键类别。
上采样和下采样虽然与前面讨论的方法类似但它们不包括加权步骤。下采样可能会导致数据丢失而上采样可能会导致过度拟合上采样类别。虽然这两种方法都有帮助但加权通常是更有效、更透明的选择。
必要时可以解决数据不平衡问题有些技术会有意改变数据分布只有在必要时才可使用。虽然本文讨论了概率问题但最终的性能指标才是对业务最重要的指标。如果离线测试表明某个模型能增加价值那么就在生产中进行测试。在实验中本文使用了Toloka ML平台它提供了一系列随时可用的模型可以为ML项目提供一个良好的开端。
总的来说考虑到训练ML模型的数据分布至关重要。训练数据必须代表真实世界的分布模型才能有效工作。如果数据本身不平衡模型应考虑到这一点以便在实际场景中表现良好。