SetFit: 프롬프트 없이 효율적인 Few-Shot 학습

Hugging Face, Intel Labs 및 UKP Lab와 협업하여 Sentence Transformers의 효율적인 Few-Shot 파인튜닝을 위한 프레임워크인 SetFit를 출시했습니다. SetFit는 개발자가 매우 적은 라벨링된 예시—클래스당 때로는 8개만—로도 높은 분류 정확도를 달성하게 해 주며, 일반적인 Few-Shot 학습에 수반되는 수작업 프롬프트나 버베리사이저가 필요하지 않습니다.

대조 학습 아키텍처

SetFit는 제한된 데이터에서 고품질 임베딩을 생성하기 위해 두 단계의 학습 과정을 사용합니다:

  1. Contrastive Fine-Tuning: 프레임워크는 먼저 소량의 라벨링된 예시를 사용해 Sentence Transformer 모델을 파인튜닝합니다. 클래스 내부와 외부 선택을 통해 양성 및 음성 쌍(또는 삼중항)을 생성하여 모델이 클래스별로 군집화되는 밀집 벡터를 생성하도록 학습합니다.
  2. Classification Head Training: 그런 다음 파인튜닝된 Sentence Transformer가 생성한 임베딩과 해당 클래스 라벨을 사용해 분류 헤드를 학습합니다.

추론 시, 보지 못한 예시는 파인튜닝된 Sentence Transformer를 통과해 임베딩을 생성하고, 이 임베딩을 분류 헤드가 사용해 클래스 라벨을 예측합니다.

성능 및 벤치마킹

SetFit는 높은 샘플 효율성과 노이즈에 대한 강인성을 보여주며, 훨씬 작은 모델을 사용함에도 불구하고 최신 Few-Shot 방법들과 동등하거나 더 나은 성능을 종종 달성합니다.

RAFT 벤치마크 결과

RAFT Few-Shot 분류 벤치마크에서 SetFit(all-roberta-large-v1 모델, 파라미터 3억 5500만 개 사용)는 PET와 GPT-3보다 우수한 성능을 보였습니다. 정확도 71.3%를 달성했으며, 이는 110억 파라미터 T-Few 모델(75.8%)과 인간 기준(73.5%) 바로 아래 수준입니다. 특히 SetFit는 11개의 RAFT 과제 중 7개에서 인간 기준을 능가했습니다.

순위 방법 정확도 모델 크기
2 T-Few 75.8 11B
4 Human Baseline 73.5 N/A
6 SetFit (Roberta Large) 71.3 355M
9 PET 69.6 235M
11 SetFit (MP-Net) 66.9 110M
12 GPT-3 62.7 175 B

다른 방법들과의 비교

클래스당 8개의 예시만으로도 SetFit는 일반적으로 PERFECT, ADAPET, 그리고 기본 파인튜닝된 트랜스포머보다 우수한 성능을 보입니다. 또한 27배 더 작고 프롬프트가 필요 없는 상태에서 T-Few 3B와 비슷한 결과를 달성합니다.

학습 및 추론 효율성

SetFit는 대규모 Few-Shot 모델에 비해 학습 및 실행 속도가 훨씬 빠르고 비용도 저렴합니다.

  • Training Speed: NVIDIA V100에서 라벨링된 예시 8개로 SetFit를 학습하면 약 30초가 소요되고 비용은 $0.025입니다. 반면 NVIDIA A100에서 T-Few 3B를 학습하면 약 11분이 걸리며 비용은 약 $0.70으로, 비용과 시간이 28배 증가합니다.
  • Hardware Accessibility: SetFit는 단일 GPU(예: Google Colab)에서 혹은 몇 분 안에 CPU에서도 학습할 수 있습니다.
  • Inference: SetFit는 추론 시 상당한 속도 향상을 제공하며, 모델 증류를 통해 이러한 속도 향상을 최대 123배까지 늘릴 수 있습니다.

다국어 지원 및 구현

SetFit는 Hugging Face Hub에 있는 모든 Sentence Transformer와 호환됩니다. 다국어 Sentence Transformer를 기본 모델로 사용하면 독일어, 일본어, 중국어, 프랑스어, 스페인어 등 여러 언어에 대해 텍스트 분류에 활용할 수 있으며, 언어 내 및 언어 간 설정 모두 지원합니다.

SetFit를 구현하려면 Hugging Face가 제공하는 setfit 라이브러리를 사용합니다. 학습 워크플로우는 다음과 같습니다:

  1. pip install setfit 명령으로 라이브러리를 설치합니다.
  2. 사전 학습된 Sentence Transformer를 로드합니다(예: paraphrase-mpnet-base-v2).
  3. SetFitTrainer를 사용해 대조 학습 및 분류 헤드 학습을 수행합니다.

Sources