آنچه در این مقاله میخوانید
- نکته
- پیشنیازها
- یادگیری با تعداد نمونههای کم چیست؟
- گرافیک یادگیری Few-Shot Learning
- اصطلاحات مهم مرتبط با یادگیری با تعداد نمونههای کم
- چرا یادگیری تعداد نمونههای کم مهم است؟
- یادگیری با تعداد نمونههای کم چگونه کار میکند؟
- شبکههای سیامی
- رویکردهای Few-Shot Learning
- کاربردهای یادگیری با تعداد نمونههای کم (Few-Shot Learning)
هر آنچه که باید در مورد یادگیری چند مرحلهای بدانید
۱۳ شهریور ۱۴۰۴
موفقیت مدلهای یادگیری عمیق، در وظایفی مانند طبقهبندی تصاویر، بخشبندی معنایی و تشخیص اشیاء، تا حد زیادی به وجود حجم زیادی از دادههای برچسبدار برای آموزش شبکهها وابسته است. رویکردی که به آن یادگیری نظارتشده گفته میشود.
با وجود اینکه در عصر فناوری اطلاعات دادههای خام و بدون ساختار به فراوانی در دسترس هستند، آمادهسازی دادههای برچسبدار همچنان فرایندی دشوار، زمانبر و پرهزینه است.
فرآیند برچسبگذاری دادهها معمولا بخش بزرگی از زمان و هزینه یک پروژه یادگیری ماشین در حوزه بینایی رایانهای را به خود اختصاص میدهد. علاوه بر این، در برخی حوزههای تخصصی مانند مراقبتهای بهداشتی، تنها افراد متخصص (مانند پزشکان) میتوانند دادهها را برچسبگذاری کنند. به عنوان نمونه، در بررسی تصاویر سیتولوژی رحم، تنها یک پزشک متخصص قادر است تشخیص دهد کدام تصویر نشانهای از سرطان دارد.
با هوش مصنوعی لیارا، دسترسی سریع و پایدار به API هوش مصنوعی داشته باشید.
✅ ارائه API هوش مصنوعی✅ ادغام آسان با سرویسها و اپلیکیشنها✅ مقیاسپذیری و امنیت بالا
خرید و راهاندازی سرویس هوش مصنوعی
همچنین، لیارا از جمله نخستین سرویسهای میزبانی ابری ایرانی است که در زمینه ارائه خدمات مرتبط با هوش مصنوعی پیشتاز محسوب میشود. برای اطلاعات بیشتر، مستندات سرویس هوش مصنوعی لیارا را مشاهده کنید.
آنچه در ادامه خواهید خواند:
- نکته
- پیشنیازها
- یادگیری با تعداد نمونههای کم چیست؟
- گرافیک یادگیری Few-Shot Learning
- اصطلاحات مهم مرتبط با یادگیری با تعداد نمونههای کم
- چرا یادگیری تعداد نمونههای کم مهم است؟
- Few-Shot Learning چگونه کار میکند؟
- شبکههای سیامی
- رویکردهای Few-Shot Learning
- کاربردهای یادگیری با تعداد نمونههای کم (Few-Shot Learning)

بیشتر افراد غیرمتخصص در پزشکی قادر به تشخیص درست نیستند؛ برای مثال، تصویر (a) سرطانی است، در حالی که تصویر (b) خوشخیم میباشد. همین موضوع نشان میدهد که برچسبگذاری دادهها در چنین مواردی بسیار سخت و دشوار است. در بهترین حالت، تنها تعداد محدودی نمونه برچسبدار در اختیار داریم که برای آموزش مدلهای یادگیری نظارتشده کافی نیست.
از سوی دیگر، دادههای جدید بهصورت تدریجی در طول زمان در دسترس قرار میگیرند؛ برای نمونه، آموزش یک شبکه عصبی عمیق بر روی مجموعههای داده بزرگ، بسیار پرهزینه و زمانبر است. بنابراین، آموزش مجدد مدل برای انطباق با دادههای تازه در بسیاری از سناریوها عملی نیست.
در همین نقطه است که مفهوم نسبتا جدیدی به نام یادگیری با تعداد نمونههای کم (Few-Shot Learning) مطرح میشود. و موضوع اصلی این مطلب نیز همین مورد است.

نکته
یادگیری با تعداد نمونههای کم (Few-Shot Learning یا FSL) یک رویکرد متا-یادگیری است که به مدلهای از پیش آموزشدیده اجازه میدهد تنها با چند نمونه محدود، خود را با کلاسهای جدید سازگار کنند. در این روش، مدل از دانش قبلی خود برای تعمیم به دادههایی فراتر از آموزش اولیه استفاده میکند.
مسائل FSL بهصورت N-way K-shot تعریف میشوند؛ یعنی مدل باید بین N کلاس جدید تمایز قائل شود، در حالی که برای هر کلاس تنها K نمونه در اختیار دارد. برای این منظور، از روشهایی مانند متا-یادگیری یا الگوریتمهای مبتنی بر شباهت استفاده میشود تا بتوان از دادههای اندک، تعمیمی موثر به دست آورد.
اهمیت این رویکرد زمانی پدیدار میشود که برچسبگذاری مجموعههای داده بزرگ امکانپذیر یا عملی نباشد؛ مانند حوزه پزشکی برای تشخیص بیماریها یا در شناسایی اشیای نادر. FSL به سیستمهای هوش مصنوعی این توانایی را میدهد که مشابه انسانها، تنها با چند مثال محدود، مفاهیم جدید را بیاموزند.
پیشنیازها
برای همراهی با این مقاله، به یک GPU قدرتمند NVIDIA مانند H100 یا A100-80G، تجربه با کدهای Python و درک مبتدی از یادگیری عمیق نیاز دارید. فرض میکنیم همه به ماشینهای کافی قدرتمند دسترسی دارند تا کدهای ارائهشده را اجرا کنند. GPUهای کم قدرت نیز قابل استفاده هستند، اما نتایج ممکن است زمان بیشتری ببرد.
یادگیری با تعداد نمونههای کم چیست؟
یادگیری با تعداد نمونههای کم (Few-Shot Learning یا FSL) یکی از چارچوبهای یادگیری ماشین است که به مدلهای از پیش آموزشدیده کمک میکند تنها با چند نمونه برچسبدار از هر کلاس، دادههایی را دستهبندی کنند که در مرحله آموزش اولیه هرگز ندیدهاند.
این رویکرد در دسته متا-یادگیری قرار میگیرد.
همانطور که در بالا توضیح دادهایم، متا-یادگیری به معنای فرایادگیری است، یعنی مدلی که میتواند روش یادگیری خود را برای شرایط و دادههای جدید سازگار کند.

گرافیک یادگیری Few-Shot Learning
ما انسانها میتوانیم کلاسهای جدید داده را به راحتی تنها با چند مثال و با استفاده از دانش قبلی خود شناسایی کنیم. یادگیری با تعداد نمونههای کم (FSL) هدفش تقلید از همین توانایی است. این رویکرد در چارچوب فرایادگیری قرار میگیرد و با یک مثال بهتر قابل درک است.
فرض کنید برای اولین بار به یک باغوحش ناشناخته میروید و پرندهای را میبینید که قبلا ندیدهاید. سپس، سه کارت به شما داده میشود که هر کدام شامل دو تصویر از گونههای مختلف پرندگان هستند. با مشاهده تصاویر روی کارتها و مقایسه آنها با پرندهای که در باغوحش میبینید، میتوانید گونه پرنده را به راحتی تشخیص دهید؛ با استفاده از نشانههایی مانند رنگ پرها، طول دم و ویژگیهای دیگر. در این مثال، شما خودتان گونه پرنده را با کمک اطلاعات موجود یاد گرفتهاید. همین چیزی است که فرایادگیری در یادگیری ماشینی سعی دارد آن را شبیهسازی کند.
اصطلاحات مهم مرتبط با یادگیری با تعداد نمونههای کم
بیایید ابتدا چند اصطلاح رایج در یادگیری با تعداد نمونههای کم (FSL) را بررسی کنیم که در ادامه مقاله به کار خواهند آمد.
- مجموعه پشتیبان (Support Set): این مجموعه شامل چند نمونه برچسبدار از هر کلاس جدید است که مدل پیشآموزشدیده از آن برای تعمیم به این کلاسها استفاده میکند.
- مجموعه پرسوجو (Query Set): این مجموعه شامل نمونههایی از کلاسهای جدید و قدیمی است که مدل باید با استفاده از دانش قبلی و اطلاعات بهدست آمده از مجموعه پشتیبان، آنها را دستهبندی کند.
- طرح یادگیری N-way K-shot: این اصطلاح در FSL بسیار رایج است و وضعیت مسئله یادگیری با تعداد نمونههای کم را توصیف میکند.
- N-way: نشان میدهد که مدل با چند کلاس جدید (N کلاس) روبهرو است و باید آنها را دستهبندی کند. هرچه مقدار N بیشتر باشد، مسئله دشوارتر است.
- K-shot: تعداد نمونههای برچسبدار در مجموعه پشتیبان برای هر کلاس جدید را نشان میدهد. هرچه K کمتر باشد، یادگیری سختتر میشود زیرا اطلاعات کمتری برای استنتاج وجود دارد.
چرا یادگیری تعداد نمونههای کم مهم است؟
روشهای قدیمی یادگیری نظارتشده برای آموزش مدلها، به حجم زیادی از دادههای برچسبدار نیاز دارند. علاوه بر این، مجموعه تست معمولا شامل نمونههایی است که علاوه بر تعلق به همان کلاسها، باید از توزیع آماری مشابهی نیز پیروی کنند. برای مثال، مجموعهای که از تصاویر گوشی موبایل ساخته شده، از نظر آماری با مجموعهای که تصاویر آن با دوربین DSLR حرفهای گرفته شده متفاوت است. این مسئله به عنوان تغییر دامنه (Domain Shift) شناخته میشود.
یادگیری با تعداد نمونههای کم (FSL) این مشکلات را به روشهای زیر کاهش میدهد:
حتی اگر مدل پیشآموزشدیده با توزیع آماری متفاوت داده آموزش دیده باشد، میتواند به دامنههای جدید تعمیم یابد، به شرط آنکه دادههای مجموعه پشتیبان و پرسوجو با هم همخوانی داشته باشند. نیاز به حجم زیاد دادههای برچسبدار و پرهزینه برای آموزش مدل حذف میشود، زیرا هدف، تعمیم مدل با تنها چند نمونه برچسبدار است.
از آنجایی که مدل پیشآموزشدیده (ربه عنوان مثال بر روی مجموعهای گسترده مانند ImageNet) برای کلاسهای جدید توسعه مییابد، نیازی به آموزش مجدد مدل از صفر نیست و در نتیجه صرفهجویی زیادی در انرژی محاسباتی صورت میگیرد.
با استفاده از FSL، مدلها میتوانند دستههای نادر داده را با چند نمونه محدود یاد بگیرند. برای مثال، دادههای مربوط به گونههای در معرض خطر یا تازهشناساییشده حیوانات و گیاهان کمیاب معمولاً کم هستند و همین مقدار برای آموزش مدل FSL کافی است.
یادگیری با تعداد نمونههای کم چگونه کار میکند؟
در روشهای قدیمی یادگیری با تعداد نمونههای کم (FSL)، هدف اصلی یادگیری یک تابع شباهت است که بتواند شباهت بین نمونهها در مجموعههای پشتیبان و پرسوجو را تشخیص دهد. این توابع یک مقدار احتمال برای میزان شباهت خروجی میدهند.
به عنوان مثال، فرض کنید تصویری داریم که دو عکس از گربهها (I و I) در آن قرار دارد. یک تابع شباهت دقیق باید هنگام مقایسه این دو تصویر مقدار 1.0 را به صورت خروجی نشان دهد. در مقابل، هنگام مقایسه گربه با یک گربه وحشی خالدار، مقدار خروجی شباهت باید 0.0 باشد.
با این حال، در عمل چنین سناریویی کامل نیست. ممکن است خروجی تابع شباهت برای I و I مقداری نزدیک به 0.95 باشد و برای مقایسه تصاویر گربه با گربه خالدار، مقادیر کوچکی بیشتر از صفر مانند 0.02 و 0.03 تولید شود.

برای آموزش پارامترهای تابع شباهت، از یک مجموعه داده بزرگ و برچسبدار استفاده میکنیم.
پس از آموزش تابع شباهت، میتوان در فاز یادگیری با تعداد نمونههای کم (FSL) از آن برای محاسبه احتمال شباهت بین نمونههای مجموعه پرسوجو و نمونههای مجموعه پشتیبان استفاده کرد. سپس، برای هر نمونه در مجموعه پرسوجو، کلاسی که بیشترین شباهت را با نمونههای پشتیبان دارد به عنوان برچسب پیشبینیشده توسط مدل FSL انتخاب میشود.
مثالی از این فرآیند در تصویر زیر نشان داده شده است.

شبکههای سیامی
در یادگیری با تعداد نمونههای کم (FSL)، توابع شباهت همیشه توابع ساده نیستند و اغلب با شبکههای عصبی مدلسازی میشوند. یکی از محبوبترین نمونهها، شبکه سیامی است. نام این شبکه از شبکه عصبی دوقلو گرفته شده، چون دو شاخه همزمان دارد که با هم مرتبط هستند. برخلاف شبکههای عصبی سنتی که یک ورودی و یک خروجی دارند، شبکه سیامی دو یا سه شاخه ورودی (بسته به روش آموزش) و یک شاخه خروجی دارد.
دو روش اصلی برای آموزش شبکه سیامی وجود دارد که در ادامه توضیح داده خواهیم داد.
روش ۱: شباهت جفتی (Pairwise Similarity)
در این روش، شبکه سیامی دو ورودی دریافت میکند همراه با برچسبهای مربوط به شباهت آنها. برای این کار، ابتدا یک نمونه از مجموعه داده به صورت تصادفی انتخاب میکنیم (به عنوان مثال تصویری از یک سگ). سپس یک نمونه دیگر نیز به صورت تصادفی انتخاب میشود.
- اگر نمونه دوم به همان کلاس نمونه اول تعلق داشته باشد (دوباره تصویر یک سگ باشد)، برچسب 1.0 به عنوان جواب درست به شبکه داده میشود.
- اگر نمونه دوم متعلق به کلاس دیگری باشد، برچسب 0.0 به آن اختصاص مییابد.
این فرآیند به شبکه کمک میکند تا شباهت بین نمونهها را یاد بگیرد و بتواند در مراحل بعدی دستهبندی نمونهها در FSL از آن استفاده کند.

بنابراین، شبکه سیامی در واقع یک معیار برای تطبیق شباهت از طریق نمونههای برچسبدار است، همانطور که در مثال بالا نشان داده شد.
فرآیند کار به این صورت است:
استخراج ویژگیها:
تصاویر ابتدا به تنهایی از یک شبکه عصبی پیشآموزشدیده عبور میکنند (ماننئ شبکههای کانولوشنی) تا ویژگیهای مهم آنها استخراج شود. این یعنی شبکه به جای نگاه کردن به کل تصویر، اطلاعات مهم مانند شکلها، رنگها یا الگوهای خاص را به یک عدد یا بردار تبدیل میکند که نشاندهنده تصویر است.
محاسبه شباهت
دو بردار ویژگی به دست آمده (یکی برای هر تصویر) با هم ترکیب میشوند و از چند لایه شبکه عبور داده میشوند تا یک عدد بین 1 و 1 تولید شود. این عدد نشان میدهد که تصاویر چقدر به هم شبیه هستند؛ نزدیک به 1 یعنی خیلی شبیه و نزدیک به 0 یعنی خیلی متفاوت.
آموزش شبکه
ما از قبل میدانیم که دو تصویر متعلق به یک کلاس هستند یا خیر. این اطلاعات به شبکه گفته میشود تا بتواند فرق بین تصاویر مشابه و غیرمشابه را یاد بگیرد. این مقدار واقعی به عنوان جواب درست استفاده میشود و شبکه وزنهای خود را طوری تنظیم میکند که پیشبینیهایش به جواب درست نزدیکتر شود.
اگر این فرآیند را متوجه نشدید به زبان ساده:
- تصویر → شبکه → بردار ویژگی
- دو بردار ویژگی → ترکیب → عدد شباهت
- شبکه از جواب درست میآموزد تا بتواند شباهت واقعی را بهتر پیشبینی کند.
برای نمونه، در Python 3 میتوان شباهت کسینوسی بین دو نمونه را با کد زیر محاسبه کرد.
import torch
import torch.nn as nn
input1 = torch.randn(100, 128)
input2 = torch.randn(100, 128)
cos = nn.CosineSimilarity(dim=1, eps=1e-6)
output = cos(input1, input2)
برای دریافت تصاویر و اطلاعات مربوطه در مورد اینکه آیا به همان کلاس تعلق دارند یا نه، مجموعه داده سفارشی زیر باید در Python 3 پیادهسازی شود.
import random
from PIL import Image
import torchvision
import torchvision.datasets as datasets
import torchvision.transforms as transforms
from torch.utils.data import DataLoader, Dataset
import torchvision.utils
import torch
import torch.nn as nn
class SiameseDataset(Dataset):
def __init__(self,folder,transform=None):
self.folder = folder #type: torchvision.datasets.ImageFolder
self.transform = transform #type: torchvision.transforms
def __getitem__(self,index):
#Random image set as anchor
image0_tuple = random.choice(self.folder.imgs)
random_val = random.randint(0,1)
if random_val: #If random_val = 1, output a positive class sample
while True:
#Find "positive" Image
image1_tuple = random.choice(self.folder.imgs)
if image0_tuple[1] == image1_tuple[1]:
break
else: #If random_val = 0, output a negative class sample
while True:
#Find "negative" Image
image1_tuple = random.choice(self.folder.imgs)
if image0_tuple[1] != image1_tuple[1]:
break
image0 = Image.open(image0_tuple[0])
image1 = Image.open(image1_tuple[0])
image0 = image0.convert("L")
image1 = image1.convert("L")
if self.transform is not None:
image0 = self.transform(image0)
image1 = self.transform(image1)
#Return the two images along with the information of whether they belong to the same class
return image0, image1, int(random_val)
def __len__(self):
return len(self.folder.imgs)
روش ۲: تلفات سهتایی (Triplet Loss)
این روش بر پایه تلفات ترانسفورماتور طراحی شده و شباهتهایی با روش جفتی دارد، اما استراتژی آموزش متفاوت است.
۱. ابتدا یک نمونه داده از مجموعه آموزش انتخاب میکنیم که به آن اثر لنگر (Anchor) گفته میشود.
۲. سپس دو نمونه دیگر انتخاب میشوند:
- نمونه مثبت (Positive): از همان کلاس اثر لنگر
- نمونه منفی (Negative): از کلاس متفاوت با اثر لنگر
۳. هر سه نمونه از شبکه عصبی عبور داده میشوند تا نمایندگیهای ویژگی آنها در فضای جاسازی (Embedding Space) به دست آید.

۴. سپس فاصله L2
نرمالشده بین نمایندگیهای لنگر و نمونه مثبت (d⁺)
و بین لنگر و نمونه منفی (d⁻)
محاسبه میشود. این فاصلهها برای تعریف تابع تلفات سهتایی استفاده میشوند، که هدف آن کمینه کردن این تابع است.
در این قسمت، یک حاشیه مثبت (>0) وجود دارد که از برابر شدن دو عبارت داخل تابع جلوگیری میکند. هدف اصلی این است که:
- نمایندگیهای لنگر و نمونه منفی تا حد امکان از هم دور شوند
- نمایندگیهای لنگر و نمونه مثبت تا حد امکان به هم نزدیک باشند
به این ترتیب، در فضای جاسازی، نمونههای مربوط به یک کلاس نزدیک هم قرار میگیرند و نمونههای کلاسهای مختلف از هم دور میشوند.

با استفاده از PyTorch، میتوان تلفات ترانسفورماتور را به راحتی برای نمونههای تصادفی لنگر، مثبت و منفی پیادهسازی کرد.
import torch
import torch.nn as nn
triplet_loss = nn.TripletMarginLoss(margin=1.0, p=2)
anchor = torch.randn(100, 128, requires_grad=True)
positive = torch.randn(100, 128, requires_grad=True)
negative = torch.randn(100, 128, requires_grad=True)
output = triplet_loss(anchor, positive, negative)
output.backward()
برای تولید نمونههای لنگر، مثبت، و منفی از یک مجموعه داده تصویر با استفاده از PyTorch، کلاس مجموعه داده سفارشی زیر باید نوشته شود.
import random
from PIL import Image
import torchvision
import torchvision.datasets as datasets
import torchvision.transforms as transforms
from torch.utils.data import DataLoader, Dataset
import torchvision.utils
import torch
import torch.nn as nn
class SiameseDataset(Dataset):
def __init__(self,folder,transform=None):
self.folder = folder #type: torchvision.datasets.ImageFolder
self.transform = transform #type: torchvision.transforms
def __getitem__(self,index):
#Random image set as anchor
anchor_tuple = random.choice(self.folder.imgs)
while True:
#Find "positive" Image
positive_tuple = random.choice(self.folder.imgs)
if anchor_tuple[1] == positive_tuple[1]:
break
while True:
#Find "negative" Image
negative_tuple = random.choice(self.folder.imgs)
if anchor_tuple[1] != negative_tuple[1]:
break
anchor = Image.open(anchor_tuple[0])
positive = Image.open(positive_tuple[0])
negative = Image.open(negative_tuple[0])
anchor = anchor.convert("L")
positive = positive.convert("L")
negative = negative.convert("L")
if self.transform is not None:
anchor = self.transform(anchor)
positive = self.transform(positive)
negative = self.transform(negative)
return anchor, positive, negative
def __len__(self):
return len(self.folder.imgs)
کد فوق میتواند به راحتی در یک نوتبوک پیادهسازی شود. کافی است یک نوتبوک باز کنید و از کد ارائهشده در این مخزن GitHub استفاده کنید.
رویکردهای Few-Shot Learning
رویکردهای یادگیری با تعداد نمونههای کم را میتوان به طور گسترده به چهار دسته طبقهبندی کرد که در ادامه در مورد آن بحث خواهیم کرد.
سطح داده (Data-Level)
رویکردهای FSL در سطح داده بسیار ساده هستند. اگر تعداد نمونههای آموزش محدود باشد و مدل برای جلوگیری از بیشبرازش یا کمبرازش متوقف شود، میتوان با اضافه کردن دادههای بیشتر این مشکل را کاهش داد. این دادهها میتوانند ساختارمند یا بدون برچسب باشند.
برای مثال، اگر در مجموعه پشتیبان تنها دو نمونه برچسبدار در هر کلاس داریم، میتوان با استفاده از تکنیکهای افزایش داده (Data Augmentation) نمونههای بیشتری ایجاد کرد.
اگرچه افزایش داده اطلاعات کاملا جدیدی ارائه نمیدهد، اما هنوز میتواند برای آموزش FSL مفید باشد. روش دیگر، افزودن دادههای بدون برچسب به مجموعه پشتیبان است که مسئله را به شکل نیمهنظارتشده درمیآورد. مدل FSL میتواند حتی از این دادههای بدون برچسب برای جمعآوری اطلاعات بیشتر استفاده کند، که عملکرد آن را بهبود میبخشد.
یک رویکرد دیگر استفاده از شبکههای مولد (Generative Networks) مانند GAN برای تولید نمونههای جدید از توزیع داده موجود است.
سطح پارامتر (Parameter-Level)
در FSL، تعداد نمونهها محدود خواهد بود. رویکردهای سطح پارامتر از متا-یادگیری استفاده میکنند تا استفاده از پارامترهای مدل را کنترل کنند و به صورت هوشمند تصمیم بگیرند کدام ویژگیها برای وظیفه فعلی مهم هستند.
روشهای سطح پارامتر با محدود کردن فضای پارامتر و استفاده از تکنیکهای منظمسازی، مدل را آموزش میدهند تا بهترین مسیر در فضای پارامتر برای تولید پیشبینیهای دقیق پیدا شود.
سطح متریک (Metric-Level)
در رویکردهای سطح متریک در FSL هدف اصلی یادگیری یک تابع فاصله بین نمونهها خواهد بود. ابتدا ویژگیها از تصاویر استخراج میشوند و فاصله بین نمونهها در فضای جاسازی محاسبه میشود. این فاصله میتواند فاصله اقلیدسی، فاصله کسینوسی، Earth Mover Distance و غیره باشد.
تابع فاصله میتواند پارامترهای خود را با استفاده از دادههای آموزش تنظیم کند و سپس امتیازهای شباهت بین نمونههای مجموعه پشتیبان و پرسوجو را برای پیشبینی کلاسها استفاده کند. این همان مفهومی است که در شبکههای سیامی توضیح داده شد.
متا-یادگیری مبتنی بر گرادیان (Gradient-Based Meta-Learning)
در این رویکرد، دو یادگیرنده وجود دارند:
- Base Learner
- Meta-Learner
مدل Base Learner ابتدا با استفاده از مجموعه پشتیبان آموزش داده میشود تا پیشبینیهایی بر روی نمونههای پرسوجو انجام دهد. سپس تلفات حاصل برای آموزش مدل Meta-Learner استفاده میشود تا وظیفه طبقهبندی را به خوبی یاد بگیرد.
یادگیری تک شات (One-Shot Learning)
در یادگیری تک شات، مجموعه پشتیبان تنها یک نمونه برای هر کلاس دارد، بنابراین وظیفه پیچیدهتر میشود.
برای مثال، فناوری تشخیص چهره در گوشیهای هوشمند از یادگیری تک شاتی استفاده میکند.
شاخه دوم، این پارامترها و یک تصویر جدید را دریافت میکند و ماسک تقسیمبندی کلاس جدید را تولید میکند.
شاخه اول تصویر برچسبدار را میگیرد و یک وکتور پارامتر تولید میکند.

کاربردهای یادگیری با تعداد نمونههای کم (Few-Shot Learning)
یادگیری با تعداد نمونههای کم در زمینههای مختلف یادگیری عمیق به کار گرفته شده است، از جمله:
- بینایی رایانهای: طبقهبندی تصاویر، تشخیص اشیاء
- سنجش از دور
- پردازش زبان طبیعی
طبقهبندی تصاویر
یکی از مهمترین کاربردهای FSL، طبقهبندی تصاویر است.
برای مثال، در مقاله Zhang یک روش نوین برای طبقهبندی تصاویر با تعداد نمونههای کم معرفی شد. ایده اصلی آنها این است که نمایندگیهای پیچیده و ساختارمند تصاویر را با بررسی اجزای اصلی آنها مقایسه کنند.
چالش اصلی این است که:
- همه عناصر یک ساختار ممکن است معادل مستقیم در ساختار دیگر نداشته باشند
- یادگیری تطبیقی برای این وضعیت دشوار است
برای حل این مسائل، محققان طبقهبندی FSL را به مسئله تطبیق بهینه تبدیل کردهاند. آنها از هزینه تطبیق بهینه بین دو ساختار به عنوان معیار شباهت استفاده میکنند.
با توجه به نمایندگیهای ویژگی تولیدشده توسط دو تصویر، نویسندگان از فاصله Earth Mover’s (EMD) برای اندازهگیری شباهت ساختاری استفاده کردهاند. EMD متریکی است که ابتدا برای بازیابی تصاویر پیشنهاد شده و فاصله بین نمایندگیهای ساختاری دو تصویر را محاسبه میکند. با توجه به فاصله بین تمام جفتهای عناصر، EMD جریان تطبیق بهینه بین دو ساختار را پیدا میکند، طوری که هزینه کل حداقل شود. همچنین، میتوان آن را به عنوان حداقل هزینه بازسازی یک نمایندگی با دیگری تفسیر کرد.

تشخیص اشیاء
تشخیص اشیاء یکی از مسائل مهم بینایی رایانه است که شامل شناسایی و مکانیابی اشیاء در یک تصویر یا ویدئو میشود. برخلاف طبقهبندی تصاویر که کل تصویر یک برچسب کلاس میگیرد، در تشخیص اشیاء ممکن است چندین شیء مختلف در یک تصویر وجود داشته باشد.
این مدل از انتقال دانش مبتنی بر ویژگی استفاده میکند و مدل پایه CentreNet را به دو بخش تقسیم میکند:
- کلاسعمومی (Generic Class)
- کلاسخاص (Specific Class)
این کار باعث میشود یادگیری با تعداد نمونههای کم افزایشی (Incremental Few-Shot Learning) امکانپذیر شود.
رویکرد ONCE به این صورت است:
پس از آموزش، با چند تصویر محدود از یک کلاس نوین، تولیدکننده کد کلاس آموزشدیده به تشخیصگر ONCE اجازه میدهد تا کلاس جدید را به صورت افزایشی و در مرحله متا-تست یاد بگیرد، به شکلی کارآمد و بدون نیاز به بازآموزی کامل مدل.
ابتدا از دادههای فراوان کلاسهای پایه برای آموزش یک استخراجکننده ویژگی کلاسعمومی استفاده میشود.
سپس با استفاده از متا-یادگیری، یک تولیدکننده کد کلاسخاص با وظایف شبیهسازیشده FSL آموزش داده میشود.

تقسیمبندی معنایی
تقسیمبندی معنایی وظیفهای است که در آن هر پیکسل یک تصویر به یک کلاس مشخص اختصاص داده میشود، مانند یک شیء خاص یا پسزمینه. یادگیری با تعداد نمونههای کم (FSL) در تقسیمبندی معنایی باینری و چندبرچسبی کاربرد دارد.
برای مثال:
تقسیم پروتوتایپ کلی به پروتوتایپهای بخشمحور:
- نمایندگی پروتوتایپ کلی به مجموعهای از پروتوتایپهای آگاه از بخش تقسیم میشود.
- این کار باعث میشود ویژگیهای متنوع و دقیق شیء بهتر گرفته شوند و پوشش فضایی بهتری در مناطق شیء ایجاد شود.
استفاده از تصاویر بدون برچسب:
- تصاویر بدون برچسب به مجموعه پشتیبان اضافه میشوند.
- این امکان را میدهد تا پروتوتایپهای بخشمحور از دادههای برچسبدار و بدون برچسب یاد بگیرند.
- در نتیجه، مدل میتواند فراتر از مجموعه پشتیبان کوچک برود و تنوع درونکلاسی ویژگیهای شیء را بهتر مدل کند.
نمای کلی مدل پیشنهادی آنها در شکل زیر نشان داده شده است.

رباتیک
یادگیری با تعداد نمونههای کم به رباتها کمک میکند تا وظایف جدید را با چند نمونه تقلید کنند، مشابه توانایی انسانها.
برای مثال، الگوریتمی معرفی شد که با مشاهده چند نمایش از یک مسیر، میتواند مسیر حرکت برای سناریوی جدید را پیشبینی کند. این روش از ویژگیها و موقعیتهای دادهشده در هر نمایش برای تولید مسیر استفاده میکند و نیاز به آزمایشهای متعدد را کاهش میدهد.
پردازش زبان طبیعی
در پردازش زبان طبیعی، به دلیل دشواری دستیابی به دادههای برچسبدار، یادگیری با تعداد نمونههای کم کاربرد زیادی پیدا کرده است.
برای مثال، روش FSL مبتنی بر یادگیری متریک و متا-یادگیری برای طبقهبندی متن ارائه شده است که میتوان از این روش استفاده کرد. این روش چند متریک را انتخاب و ترکیب میکند و وظایف آموزشی را در خوشههایی دستهبندی میکند تا انتقال دانش به وظایف جدید با داده محدود بهتر انجام شود.

جمع بندی
یادگیری عمیق به انتخاب پیشفرض برای حل مسائل پیچیده بینایی رایانه و تشخیص الگو تبدیل شده است. با این حال، نیاز به حجم زیاد دادههای برچسبدار و هزینه محاسباتی بالا برای آموزش شبکههای عمیق، پیشرفت این حوزه را محدود میکند.
یادگیری با تعداد نمونههای کم (FSL) یک راهحل مناسب ارائه میدهد. این رویکرد به مدلهای عمیق پیشآموزشدیده اجازه میدهد تا با تنها چند نمونه برچسبدار از دادههای جدید کار کنند، بدون اینکه نیاز به آموزش مجدد کامل داشته باشند. به همین دلیل، FSL در طبقهبندی و تقسیمبندی تصاویر، تشخیص اشیاء، پردازش زبان طبیعی و سایر وظایف بهطور فزایندهای استفاده میشود.