SetFit 文档

SetFit 采样策略

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

SetFit 采样策略

SetFit 在 TrainingArguments 中支持各种对比对采样策略。在本概念指南中,我们将学习以下四种采样策略

  1. "oversampling"(默认)
  2. “undersampling”
  3. “unique”
  4. “num_iterations”

建议首先阅读 SetFit 概念指南,了解对比学习以及正负对的背景知识。

运行示例

在本概念指南中,我们将使用以下示例场景

  • 3 个类别:“happy”(快乐)、“content”(满意)和 “sad”(悲伤)。
  • 总共 20 个样本:8 个 “happy” 样本,4 个 “content” 样本和 8 个 “sad” 样本。

考虑到句子对 (X, Y)(Y, X) 会产生相同的嵌入距离/损失,我们只想考虑这两种情况中的一种。此外,我们不希望句子相同的配对,例如,没有 (X, X)

生成的正负对可以可视化在如下表格中。+- 分别代表正对和负对。此外,h-n 代表第 n 个 “happy” 句子,c-n 代表第 n 个 “content” 句子,s-n 代表第 n 个 “sad” 句子。请注意,对角线以下的区域未使用,因为 (X, Y)(Y, X) 会产生相同的嵌入距离,并且对角线未使用,因为我们对句子相同的配对不感兴趣。

h-1 h-2 h-3 h-4 h-5 h-6 h-7 h-8 c-1 c-2 c-3 c-4 s-1 s-2 s-3 s-4 s-5 s-6 s-7 s-8
h-1 + + + + + + + - - - - - - - - - - - -
h-2 + + + + + + - - - - - - - - - - - -
h-3 + + + + + - - - - - - - - - - - -
h-4 + + + + - - - - - - - - - - - -
h-5 + + + - - - - - - - - - - - -
h-6 + + - - - - - - - - - - - -
h-7 + - - - - - - - - - - - -
h-8 - - - - - - - - - - - -
c-1 + + + - - - - - - - -
c-2 + + - - - - - - - -
c-3 + - - - - - - - -
c-4 - - - - - - - -
s-1 + + + + + + +
s-2 + + + + + +
s-3 + + + + +
s-4 + + + +
s-5 + + +
s-6 + +
s-7 +
s-8

如前表所示,我们有 28 个 “happy” 的正对,6 个 “content” 的正对,以及另外 28 个 “sad” 的正对。总共是 62 个正对。此外,我们有 32 个 “happy” 和 “content” 之间的负对,64 个 “happy” 和 “sad” 之间的负对,以及 32 个 “content” 和 “sad” 之间的负对。总共是 128 个负对。

过采样

默认情况下,SetFit 对其对比对应用过采样策略。此策略采样相等数量的正负训练对,过采样少数类对类型以匹配多数类对类型。由于负对的数量通常大于正对的数量,因此这通常涉及过采样正对。

在我们的运行示例中,这将涉及将 62 个正对过采样至 128 个,从而产生一个 epoch 的 128 + 128 = 256 对。总结如下

  • ✅ 采样相等数量的正负对。
  • ✅ 使用每个可能的对。
  • ❌ 存在一些数据重复。

欠采样

与过采样类似,此策略采样相等数量的正负训练对。但是,它欠采样多数类对类型以匹配少数类对类型。这通常涉及欠采样负对以匹配正对。

在我们的运行示例中,这将涉及将 128 个负对欠采样至 62 个,从而产生一个 epoch 的 62 + 62 = 124 对。总结如下

  • ✅ 采样相等数量的正负对。
  • 并非 使用每个可能的对。
  • 没有 数据重复。

唯一

第三,唯一策略不采样相等数量的正负训练对。相反,它只是对所有可能的对进行一次采样。此处未使用任何形式的过采样或欠采样。

在我们的运行示例中,这将涉及采样所有负对和正对,从而产生一个 epoch 的 62 + 128 = 190 对。总结如下

  • 并非 采样相等数量的正负对。
  • ✅ 使用每个可能的对。
  • 没有 数据重复。

num_iterations

最后,SetFit 仍然可以与已弃用的采样策略一起使用,该策略涉及 num_iterations 训练参数。与其他采样策略不同,此策略不涉及可能对的数量。相反,它为每个训练样本采样 num_iterations 个正对和 num_iterations 个负对。

在我们的运行示例中,如果我们假设 num_iterations=20,那么我们将为每个训练样本采样 20 个正对和 20 个负对。由于有 20 个样本,这涉及 (20 + 20) * 20 = 800 对。由于只有 190 个唯一对,因此这肯定涉及一些数据重复。但是,它不保证使用每个可能的对。总结如下

  • 并非 采样相等数量的正负对。
  • ❌ 不一定使用每个可能的对。
  • ❌ 存在一些数据重复。
< > 在 GitHub 上更新