SetFit 文件
SetFit 取樣策略
並獲得增強的文件體驗
開始使用
SetFit 取樣策略
SetFit 在 TrainingArguments 中支援各種對比對取樣策略。在本概念指南中,我們將學習以下四種取樣策略:
"oversampling"
(預設)"undersampling"
"unique"
"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 個正對。此外,我們有“happy”和“content”之間的 32 個負對,“happy”和“sad”之間的 64 個負對,以及“content”和“sad”之間的 32 個負對。總共有 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 個唯一對,這肯定會涉及一些資料重複。但是,它不保證使用了所有可能的對。總而言之:
- ✅ 不取樣等量的正對和負對。
- ❌ 未必使用所有可能的對。
- ❌ 存在一些資料重複。