طاها اکبری
طاها اکبری
خواندن ۱ دقیقه·۴ ماه پیش

یادگیری با استفاده از نمونه های کم با استفاده از SetFit

گاهی اوقات در حل مسائل دسته‌بندی NLP تعداد کمی داده از هر کدام از دسته‌ها داریم. (به طور مثال ۸ داده از هر دسته داریم). SetFit روشی برای دسته‌بندی در این حالت ها مبتنی بر معماری sentence transformer ارائه می‌دهد.

در حالت کلی SetFit در دو مرحله انجام می‌گردد.

  1. یک embedding با استفاده از ساختار sentence transformer روی داده ها به طور contrastive آموزش داده می‌شود، به طوری که داده های از یک کلاس به عنوان نمونه های positive و داده های از کلاس های متفاوت به عنوان نمونه های negative در نظر گرفته می‌شوند.
  2. یک مدل Logistic Regression روی امبدینگ های استخراج شده با لیبل به طور نظارت شده آموزش داده می‌شوند.

با توجه به این که در مرحله اول جفت دادگان به عنوان داده آموزش در نظر گرفته می‌شوند، اگر K تعداد دادگان آموزش از هر کلاس باشند، تعداد کل دادگان مثبت به تعداد K(K - 1) ضربدر تعداد کلاس ها خواهد بود، و لذا کمی از وضعیت دادگان کم خارج می‌شویم.

کتابخانه SetFit در Huggingface بدین منظور نوشته شده‌است. کارکردن با این کتابخانه مشابه با کتابخانه transformers می‌باشد. برای استفاده از این کتابخانه باید چندین مرحله را طی کنیم:

  1. ابتدا مدل SetFit را مشابه کتابخانه transformers لود می‌کنیم
# Initializing a new SetFit model model = SetFitModel.from_pretrained('BAAI/bge-small-en-v1.5', labels=['negative', 'positive'])

۲. آرگومان‌های آموزش را مقداردهی می‌کنیم تا به کلاس Trainer دهیم

# Preparing the training arguments args = TrainingArguments( batch_size=32, num_epochs=10, )

۳. کلاس Trainer را ایجاد کرده و مدل را روی دادگان ایجاد می‌کنیم

# Preparing the trainer trainer = Trainer( model=model, args=args, train_dataset=train_dataset, ) trainer.train()

۴. در نهایت می‌توانیم مدل را روی دادگان ارزیابی، ارزیابی کنیم

# Evaluating metrics = trainer.evaluate(test_dataset) print(metrics)

۵. در نهایت می‌توانیم مدل را ذخیره کنیم

# Saving the trained model model.save_pretrained('setfit-bge-small-v1.5-sst2-8-shot')


llmmlai
شاید از این پست‌ها خوشتان بیاید