Zkratka proFew-Shot Learningfjú-šot lérningTakéFew-shot, FSL, Few-shot prompting, In-context learningPokročilý
Definice
Few-shot learning je postup, kdy se model naučí novou úlohu z několika málo ukázek, typicky z jednotek až desítek příkladů místo tisíců trénovacích dat. U velkých jazykových modelů se příklady vkládají přímo do promptu a váhy modelu se nemění, v klasickém strojovém učení jde o metody navržené pro trénink na velmi malém vzorku.
Nezaměňujte: Few-shot learning označuje jednak vkládání ukázek do promptu jazykového modelu, jednak samostatnou oblast strojového učení (meta-učení, prototypové sítě) zaměřenou na trénink z malého vzorku.
Než se na to spolehnete: Odkaz na anglickou Wikipedii „Few-shot learning“ prosím ověřit, článek může být veden pod názvem s dovětkem (natural language processing). Konkrétní čísla ukázek (2 až 32, sytící se přínos) jsou praktická heuristika, ne citovaný benchmark.
Proč několik příkladů stačí
Few-shot learning stojí na tom, že model už umí něco obecného a chybí mu jen ukázka, jak to má aplikovat. Předtrénovaný jazykový model viděl obrovské množství textu a zná pojmy jako „sentiment“ nebo „shrnutí“; pár příkladů v promptu mu jen ukotví formát odpovědi, hranice tříd a styl. Klasické učení s učitelem naopak začíná od náhodně inicializovaných vah a bez tisíců vzorků se nemá o co opřít.
Dvě rodiny metod, které se snadno pletou
Few-shot prompting u jazykových modelů
Few-shot prompting znamená, že do vstupu vloží uživatel několik dvojic vstup–výstup a teprve pak skutečný dotaz. Model nic netrénuje: příklady existují jen po dobu jednoho volání a po vyčerpání kontextového okna zmizí. Tomuto chování se říká in-context learning a je to hlavní důvod, proč se u produkčních promptů vyplatí prompt engineering.
Few-shot learning v klasickém ML
Ve vidění a metrickém učení označuje few-shot learning architektury trénované přímo na to, aby generalizovaly z malého vzorku: siamské sítě, prototypové sítě nebo meta-učení typu MAML. Úloha se popisuje jako „N-way k-shot“, tedy N tříd a k ukázek na třídu. Tady se váhy skutečně mění, jen se optimalizuje schopnost rychle se přizpůsobit.
Zero-shot, one-shot, few-shot
- Zero-shot: pouze instrukce, žádný příklad.
- One-shot: jediná ukázka, obvykle kvůli formátu výstupu.
- Few-shot: typicky 2 až 32 ukázek; přínos se s rostoucím počtem rychle sytí.
Co ovlivňuje kvalitu výsledku
Na výsledku se podepisuje víc než jen počet ukázek. Rozhoduje reprezentativnost: příklady mají pokrýt i hraniční a méně častou třídu, jinak model tichým způsobem převezme rozložení z promptu a menšinovou třídu skoro nikdy nevrátí. Roli hraje i pořadí, protože poslední ukázka bývá vlivnější, a konzistence formátu, protože model kopíruje interpunkci, diakritiku i délku odpovědi doslova. Pokud se dvě ukázky rozcházejí ve stylu, výstup kolísá.
Kdy má smysl sáhnout po fine-tuningu
Few-shot prompting prodlužuje každý požadavek: ukázky se posílají a platí znovu při každém volání a ukrajují z kontextového okna. Jakmile má tým stovky až tisíce označkovaných příkladů, stabilní zadání a vysoký objem provozu, bývá fine-tuning nebo destilace levnější i přesnější. Naopak u úloh, které se mění každý týden, je přepsání promptu otázka minut, zatímco přetrénování modelu znamená celý cyklus sběru dat a evaluace.
Rizika, která se snadno přehlédnou
Malý vzorek svádí k tomu vybírat ukázky podle toho, co zrovna funguje na testovacích datech, což vede k tiché formě přeučení na evaluační sadu. Ukázky v promptu jsou navíc součástí vstupu, takže mohou obsahovat citlivá data zákazníků a stávají se cílem prompt injection. Vyhodnocení proto patří na oddělenou sadu, kterou se prompt nikdy neladil.
Příklady z praxe
Klasifikace tiketů podpory s pěti ukázkami
Tým e-shopu potřebuje třídit příchozí e-maily do kategorií reklamace, doprava a dotaz na produkt. Nulová verze promptu vracela volný text a vlastní kategorie navíc. Po přidání pěti ukázek s pevným formátem výstupu model odpovídá jediným slovem a menšinovou kategorii reklamace už nezaměňuje za dotaz.
Zařaď e-mail do kategorie: reklamace | doprava | dotaz. E-mail: Balík dorazil rozbitý, chci vrátit peníze. Kategorie: reklamace E-mail: Kdy mi přijde zásilka číslo 88213? Kategorie: doprava E-mail: Je ta bunda vhodná do minus deseti stupňů? Kategorie: dotaz E-mail: Zásilka je prázdná, chybí objednané boty. Kategorie: reklamace E-mail: Posíláte i na Slovensko? Kategorie: doprava E-mail: Zip se po týdnu rozpadl, co s tím? Kategorie:5-way 1-shot rozpoznávání vad na výrobní lince
Výrobce má fotografie pěti typů povrchových vad, ale od každého jen jednotky snímků, protože vady jsou vzácné. Místo běžného klasifikátoru se použije prototypová síť: encoder se natrénuje na jiné, bohaté datové sadě a nová vada se pak reprezentuje jediným prototypem v embedding prostoru. Klasifikace probíhá podle nejbližšího prototypu, takže přidání šestého typu vady nevyžaduje přetrénování.
Časté omyly
- MýtusKdyž modelu dám příklady do promptu, model se z nich něco naučí a příště to už bude umět.
- Ve skutečnostiFew-shot prompting nemění váhy modelu. Příklady působí jen v rámci jednoho požadavku a v dalším volání bez nich se model chová stejně jako předtím.
- MýtusČím víc příkladů do promptu vložím, tím lepší výsledek.
- Ve skutečnostiPřínos se rychle sytí a za určitou hranicí kvalita spíš kolísá, zatímco cena a latence rostou lineárně. Reprezentativnost a konzistence ukázek rozhodují víc než jejich počet.
- MýtusFew-shot learning je vždycky levnější než fine-tuning.
- Ve skutečnostiUkázky se posílají při každém volání, takže při vysokém objemu provozu jejich cena překročí jednorázový fine-tuning menšího modelu, který navíc odpovídá rychleji.
Časté dotazy
- Kolik příkladů má few-shot prompt obsahovat?
- Few-shot prompt obvykle vystačí se třemi až osmi ukázkami. Praktický postup je začít na jedné ukázce, měřit přesnost na oddělené evaluační sadě a přidávat další jen dokud se metrika zlepšuje. U úloh s více třídami je rozumné mít aspoň jednu ukázku na každou třídu včetně těch vzácných, jinak model menšinovou třídu podhodnocuje. Nad zhruba dvaceti ukázkami roste hlavně cena a latence, nikoli kvalita, a je čas zvážit fine-tuning nebo dynamický výběr ukázek podle podobnosti se vstupem.
- Jak vybrat konkrétní ukázky do few-shot promptu?
- Ukázky pro few-shot prompt se vybírají tak, aby pokryly typické případy i hraniční situace, ve kterých model dosud chyboval. Osvědčuje se sáhnout do reálných dat, nikoli vymýšlet syntetické věty, a držet naprosto stejný formát výstupu u všech ukázek. Pokročilejší varianta vybírá ukázky dynamicky: systém najde ve znalostní bázi několik nejpodobnějších dříve vyřešených případů a vloží je do promptu. Vybrané ukázky se nikdy nesmí překrývat s evaluační sadou, jinak měření nadhodnotí skutečnou přesnost.
- Kdy few-shot learning nestačí a je nutný fine-tuning?
- Few-shot learning přestává stačit ve chvíli, kdy ani pečlivě vybrané ukázky nedostanou přesnost na požadovanou úroveň, kdy je zadání příliš rozsáhlé na kontextové okno, nebo kdy objem volání dělá z opakovaně posílaných ukázek podstatnou nákladovou položku. Signálem je také potřeba naučit model doménovou znalost, kterou z předtrénování nemá, například interní produktovou taxonomii o stovkách položek. V takových případech se vyplatí fine-tuning nebo napojení na vyhledávání v dokumentech, případně kombinace obojího.
- Funguje few-shot learning i mimo jazykové modely?
- Few-shot learning vznikl mimo jazykové modely a je aktivní oblastí počítačového vidění. Používají se siamské a prototypové sítě, které měří vzdálenost v naučeném embedding prostoru, a meta-učení, kde se model trénuje na mnoha malých úlohách, aby se uměl rychle přizpůsobit nové. Typické nasazení je rozpoznávání vzácných vad, biometrie nebo klasifikace druhů, kde je označkovaných snímků od každé třídy jen několik. Na rozdíl od promptingu se tady váhy modelu skutečně mění.
- Ovlivňuje pořadí příkladů výsledek few-shot promptu?
- Pořadí příkladů ve few-shot promptu výsledek ovlivňuje, u některých modelů překvapivě silně. Model je citlivý na to, co stojí na konci vstupu, a pokud jsou ukázky seřazené podle tříd, přebírá zkreslení směrem k poslední z nich. Doporučený postup je ukázky promíchat tak, aby se třídy střídaly, a stabilitu ověřit několika různými permutacemi na evaluační sadě. Velký rozptyl mezi permutacemi je varovný signál, že prompt není robustní a spoléhat se na něj v produkci je riskantní.
Zdroje
- Language Models are Few-Shot Learners(otevře se v novém okně)
- Prototypical Networks for Few-shot Learning(otevře se v novém okně)
- Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks(otevře se v novém okně)
- Hugging Face Transformers documentation(otevře se v novém okně)