Učení v kontextu

Jak se model učí z příkladů, když se váhy nemění.

Co se naučíš: Pochopíš, proč se model „učí“ z příkladů v promptu, i když se ani jeden parametr nemění.

5 min čtení + cvičeníNavazuje na:🔬 Transformer po lopatě

Dáš modelu tři příklady v promptu a on se podle nich zařídí u čtvrtého. Přitom se nezměnil ani jeden parametr. Jak je to možné? Tohle je jedna z nejzajímavějších vlastností transformerů, a od chvíle, kdy víme, jak zhruba funguje, je z ní použitelný nástroj místo záhady.


Co se doopravdy děje

Model se neučí v tom smyslu, jak jsi to poznal u tréninku. Váhy jsou zmrazené. Co se mění, je kontext a model má naučenou schopnost rozpoznat vzor v kontextu a pokračovat v něm.

prompt:
  jablko → ovoce
  mrkev  → zelenina
  hruška → ovoce
  brambora →
              ↑ model najde vzor „slovo → kategorie“ a aplikuje ho

Mechanicky za tím z velké části stojí induction heads (viz co je uvnitř modelu): hlavy, které umí najít dřívější výskyt podobného vzoru a zkopírovat, co po něm následovalo. Learning je to tedy jen v uvozovkách, přesnější popis je rozpoznání a pokračování vzoru.


Praktické důsledky, které z toho plynou

Formát je důležitější než obsah příkladů. Model si z příkladů bere hlavně tvar úlohy: jak vypadá vstup, jak výstup, jak jsou oddělené. Konzistentní formátování napříč příklady udělá víc než pečlivě vybrané případy.

Konzistence je klíčová. Když jeden příklad odpovídá jinak než ostatní, model se řídí většinou, nebo se rozhodne nešťastně. Rozporuplné příklady jsou horší než žádné.

Pořadí hraje roli. Poslední příklady mívají větší vliv. U klasifikace pomůže střídat třídy, aby model nezískal dojem, že „správná odpověď je vždycky ta poslední zmíněná“.

Zvládne i nesmyslné mapování. Když příkladům přiřadíš náhodné (ale konzistentní) štítky, model je z velké části následuje. Je to dobrý důkaz, že jde o rozpoznání vzoru, ne o porozumění zadání a zároveň varování: špatný vzor v příkladech se propíše do výstupu.


Kolik příkladů použít

SituaceDoporučení
Jednoduchá úloha, jasná instrukceŽádné (zero-shot)
Specifický formát výstupu1–3 příklady
Jemné rozlišování kategorií5–10 příkladů, vyváženě po třídách
Složitý styl nebo doménaDynamicky vybírané příklady (viz níže)

Dál už se návratnost rychle láme: dvacet příkladů obvykle nepřinese víc než pět, jen zdraží prompt.


Dynamické příklady: levná alternativa k fine-tuningu

Místo pevné sady příkladů si k dotazu vyhledej pár nejpodobnějších už vyřešených případů (přes embeddingy) a vlož je do promptu. Model tak dostane přesně ty vzory, které jsou pro daný dotaz relevantní.

nový tiket → embedding → najdi 3 podobné vyřešené tikety
          → vlož je jako příklady → nech odpovědět

Dostaneš velkou část efektu fine-tuningu bez tréninku, a navíc se to zlepšuje samo, jak přibývají vyřešené případy.


Emergentní schopnosti a fázové přechody

Během tréninku model některé schopnosti nezískává plynule, ale skokem: dlouho to nejde vůbec a pak najednou ano. U induction heads je tenhle přechod pěkně vidět a časově se kryje se skokem ve schopnosti učit se z kontextu.

U schopností měřených benchmarky je ale namístě opatrnost. Část „emergence“ je artefakt měření: když metrika hodnotí jen úplně správnou odpověď (všechno, nebo nic), vypadá plynulé zlepšování jako skok. Při jemnějším měření je křivka často hladká.

💡 Prakticky to znamená: netvrď, že model něco „neumí“, na základě jedné metriky u jedné velikosti. Změň způsob měření nebo formát úlohy a výsledek se může výrazně posunout.


Cvičení

  1. Dáš modelu pět příkladů klasifikace, ale u jednoho z nich je schválně špatný štítek. Co to udělá s výsledkem a co ti to prozradí o tom, co se vlastně děje?
  2. Proč se tomu říká učení, když se nezmění ani jeden parametr?
Náčrt řešení: rozbal, až si cvičení zkusíš sám
  1. Kvalita klesne, ale míň, než by člověk čekal, protože model se řídí hlavně vzorem, ne pravdivostí štítků. Když prohodíš štítky ve všech příkladech, model je z velké části následuje, což je pěkný důkaz, že jde o rozpoznání a pokračování vzoru, ne o porozumění zadání. Prakticky z toho plyne, že na konzistenci příkladů záleží víc než na jejich počtu.
  2. Je to zavádějící název a stojí za to ho brát doslova jen v uvozovkách. Váhy zůstávají zmrzlé; všechno se odehrává v aktivacích během jediného průchodu. Model v kontextu rozpozná vzor a pokračuje v něm, což zvenku vypadá jako naučení se úlohy z příkladů. Rozdíl je zásadní v praxi: nic z toho nepřetrvá do dalšího volání.

Shrnutí

  • Učení v kontextu není učení: váhy se nemění, model rozpoznává a pokračuje ve vzoru.
  • Mechanicky za tím stojí hlavně induction heads, které kopírují dřívější pokračování vzoru.
  • Konzistentní formát příkladů je důležitější než jejich obsah; rozpory škodí.
  • Dynamicky vybírané příklady jsou levná náhrada fine-tuningu.
Model se řídí příklady v promptu, ale žádné parametry se nezměnily. Jak to?

Nejde o učení, ale o rozpoznání vzoru v kontextu. Model má natrénovanou schopnost najít dřívější výskyt podobného vzoru (mechanismus induction heads) a pokračovat stejně. Váhy zůstávají zmrazené, mění se jen obsah kontextu.

Proč fungují i příklady s náhodně přiřazenými, ale konzistentními štítky?

Protože model si z příkladů bere hlavně tvar úlohy a mapování, ne jeho věcnou správnost. Je to důkaz, že jde o rozpoznání vzoru a zároveň varování, že chybný vzor v příkladech se propíše do výsledků.

Kdy dává smysl vybírat příklady dynamicky podle dotazu?

Když je úloha rozmanitá a pevná sada příkladů nepokryje všechny varianty, třeba u zákaznických tiketů. K dotazu se vyhledají nejpodobnější vyřešené případy a vloží se jako vzory, čímž se dosáhne velké části efektu fine-tuningu bez tréninku.