ICL
Jak działa
1. Konstrukcja promptu: opcjonalna instrukcja zadania w języku naturalnym + k par demonstracyjnych (input, output) + nowy input zapytania. Każda demonstracja jest oddzielona separatorem (np. nowa linia, '###', tag XML). 2. Tokenizacja i forward pass: cały prompt jest podawany jako kontekst do dekodera transformera. Mechanizm uwagi (self-attention) pozwala każdemu tokenowi „widzieć" wszystkie poprzednie tokeny, w tym demonstracje. 3. Indukcja wzorca: warstwy uwagi (w szczególności induction heads, Olsson i in. 2022) wykrywają wzorzec [token A → token B] w demonstracjach i propagują go na nowy input. Mechanizm ten jest analogiczny do implicit gradient descent w przestrzeni aktywacji. 4. Generacja outputu: model generuje tokeny odpowiedzi autoregresywnie, kontynuując wzorzec z demonstracji. 5. Bez aktualizacji wag: w odróżnieniu od fine-tuningu, gradienty nie są obliczane ani wsteczne propagowane. Cała „nauka" odbywa się wyłącznie w aktywacjach jednego forward pass.
Rozwiązany problem
Tradycyjne uczenie nadzorowane wymaga zbioru treningowego dla każdego nowego zadania, fine-tuningu modelu (osobnej kopii wag) oraz infrastruktury treningowej. To uniemożliwia szybką adaptację do nowych zadań i blokuje skalowanie do tysięcy domen. ICL eliminuje ten problem: pojedynczy zamrożony LLM wykonuje dowolne zadanie zdefiniowane w prompcie, bez treningu i bez kopiowania wag.
Komponenty
Opcjonalny opis zadania w języku naturalnym, poprzedzający demonstracje. W modelach instruction-tuned (GPT-3.5+, Claude) sama instrukcja często wystarcza (zero-shot ICL).
Oficjalna
Pary (input, output) ilustrujące oczekiwane zachowanie modelu. Liczba demonstracji k definiuje wariant: zero-shot (k=0), one-shot (k=1), few-shot (k=2–32). Demonstracje muszą mieścić się w oknie kontekstowym modelu.
Faktyczny input, dla którego model ma wygenerować odpowiedź. Musi mieć ten sam format co inputy w demonstracjach, aby model rozpoznał wzorzec.
Specyficzne głowice uwagi w warstwach 2+ transformera, które uczą się rozpoznawać wzorzec [A][B] ... [A] → [B] podczas pretrainingu. Olsson i in. (2022, Anthropic) wykazali, że induction heads są mechanistycznym substratem ICL — ich pojawienie się koreluje z fazą emergencji ICL podczas treningu.
Implementacja
Lu i in. (2022) pokazali, że ten sam zestaw demonstracji w różnej kolejności daje wyniki różniące się o 20–30 punktów procentowych accuracy. Część permutacji daje wyniki gorsze niż random baseline.
Modele wykazują tendencję do dopasowywania się głównie do końcowych demonstracji w prompcie, ignorując informacje z wcześniejszych. Szczególnie problematyczne w many-shot ICL.
Jeśli demonstracje są niezbalansowane (np. 6/8 ma etykietę „pozytywny"), model będzie systematycznie predyktował dominującą etykietę dla nowych zapytań.
Subtelne różnice w formacie (np. spacja przed odpowiedzią, kropka na końcu inputu) między demonstracjami a zapytaniem mogą drastycznie obniżyć jakość ICL.
Łatwo przypadkowo umieścić w demonstracjach przykłady z testowego splitu. Skutkuje to zawyżonymi wynikami benchmarków.
Ewolucja
Radford i in. wykazują, że GPT-2 (1.5B parametrów) potrafi wykonywać zadania NLP bez fine-tuningu, jeśli odpowiednio sformułuje się prompt. Prekursor pełnego ICL.
Brown i in. wprowadzają systematyczną terminologię (zero-/one-/few-shot) i wykazują, że GPT-3 (175B) osiąga konkurencyjne wyniki względem fine-tunowanych modeli na dziesiątkach benchmarków NLP, wyłącznie przez ICL.
Xie i in. proponują formalną interpretację ICL jako bayesowskiego wnioskowania o utajonym koncepcie zadania, wyjaśniającą, dlaczego ICL działa pomimo braku gradientów.
Anthropic identyfikuje induction heads — głowice uwagi formujące się w fazie pretrainingu, których pojawienie się koreluje z nagłym wzrostem zdolności ICL. Pierwszy mechanistyczny dowód, jak ICL emerguje w transformerze.
Min i in. wykazują, że losowe zastąpienie etykiet w demonstracjach minimalnie obniża jakość ICL — sugerując, że model uczy się formatu i przestrzeni etykiet, a nie samego mapowania input→output.
von Oswald i in. wykazują formalnie i empirycznie, że transformer w trybie ICL wykonuje krok gradient descent w przestrzeni aktywacji uwagi. Daje to teoretyczne podstawy mechanizmowi.
Wraz z modelami obsługującymi 1M+ tokenów (Gemini 1.5, Claude 3), DeepMind pokazuje, że many-shot ICL (np. 1000+ demonstracji) potrafi przewyższyć fine-tuning na wielu zadaniach.
Szczegóły techniczne
Hiperparametry (konfigurowalne osie)
Liczba par (input, output) podanych w prompcie. Wpływa zarówno na jakość, jak i koszt inferencji (długość kontekstu).
Kolejność, w jakiej demonstracje pojawiają się w prompcie. Empirycznie jakość ICL jest silnie zależna od permutacji (Lu i in. 2022).
Sposób wybierania demonstracji z puli kandydatów. Static (stała pula) vs. dynamic (retrieval-based, np. KATE — k-nearest demonstrations).
Konwencja oddzielania pól input/output (np. 'Q:/A:', '###', tagi XML). Wpływa na jakość rozpoznawania wzorca przez model.
Złożoność obliczeniowa
Złożoność czasowa: O((k·L_demo + L_query)² · d). Złożoność przestrzenna: O(k·L_demo + L_query).
Wąskie gardło obliczeniowe
Self-attention skaluje się jak O(N²) względem długości promptu. Z k demonstracjami i długimi inputami koszt rośnie szybko, szczególnie w many-shot ICL.
Paradygmat wykonania
ICL to technika promptowania stosowana do standardowego dense Transformera w trybie inferencji. Wszystkie parametry są aktywne, brak warunkowego routingu.
Równoległość
Prefill demonstracji może być w pełni równoległy (jeden forward pass nad całym promptem). Generacja odpowiedzi jest sekwencyjna jak w każdym dekoderze transformera.
Wymagania sprzętowe
ICL jest stosowane do standardowego LLM, który najefektywniej działa na GPU z tensor cores do mnożeń macierzowych w warstwach uwagi i feed-forward.
TPU są szeroko stosowane do inferencji LLM. Brak specjalnych wymagań sprzętowych dla ICL ponad bazowy model.