08 · LLM · 4 min czytania · aktualizacja
Czym jest uczenie w kontekście (in-context learning) i jak LLM uczy się z przykładów w prompcie?
W skrócie
Uczenie w kontekście to zdolność LLM do wykonania nowego zadania na podstawie kilku przykładów w prompcie, bez zmiany wag. Pojawia się wraz ze skalą modelu.
Co to jest
Uczenie w kontekście (ang. in-context learning, ICL) to zdolność modelu językowego do wykonania zadania, którego nie trenowano wprost, wyłącznie na podstawie instrukcji i przykładów umieszczonych w prompcie. Wagi modelu się nie zmieniają — „uczenie” trwa tylko przez jedno wywołanie i znika wraz z kontekstem. Mówi się o trybie zero-shot (sama instrukcja), one-shot (jeden przykład) i few-shot (kilka przykładów).
Brown i in. (2020) pokazali to zjawisko na dużą skalę przy GPT-3: model po samym pretreningu, dostając w prompcie kilka par „pytanie → odpowiedź”, rozwiązywał tłumaczenia, zadania z rozumienia tekstu i proste działania arytmetyczne. Wcześniej każde takie zadanie wymagało osobnego dostrajania.
Dla praktyka to ogromna zmiana: zamiast zbierać tysiące oznaczonych przykładów i trenować model, wystarczy kilka dobrze dobranych przykładów w poleceniu.
Mechanizm — dlaczego tak działa
Pretrening zawiera „zadania w kontekście”. Internet jest pełen tekstów o strukturze listy przykładów: słowniczki, zbiory zadań z rozwiązaniami, tabele, pary pytań i odpowiedzi. Żeby przewidywać takie teksty, model musi nauczyć się rozpoznawać wzorzec z pierwszych elementów i stosować go do kolejnych. Few-shot prompt po prostu wywołuje tę wyuczoną umiejętność.
Rozpoznanie zadania raczej niż nauka od zera. Min i in. (2022) zrobili wymowny eksperyment: zastąpili poprawne etykiety w przykładach losowymi i trafność w wielu zadaniach klasyfikacji spadła tylko nieznacznie. Przykłady dostarczają więc głównie informacji o formacie, przestrzeni etykiet i rozkładzie danych wejściowych — pomagają modelowi zlokalizować zadanie, które już „zna”. Dla zadań naprawdę nowych, np. dowolnego mapowania symboli, poprawność przykładów ma jednak znaczenie.
Mechanizmy wewnątrz transformera. Olsson i in. (2022) opisali „głowy indukcyjne” — obwody uwagi, które znajdują wcześniejsze wystąpienie bieżącego tokenu i kopiują to, co po nim nastąpiło (wzorzec „A B … A → B”). Ich pojawienie się w trakcie treningu zbiega się z gwałtowną poprawą ICL. Inne prace pokazują, że na prostych zadaniach regresji warstwy uwagi mogą w przybliżeniu realizować krok spadku gradientowego na przykładach z kontekstu. To częściowe wyjaśnienia, nie pełna teoria.
Zależność od skali. U Browna i in. przewaga few-shot nad zero-shot rosła z rozmiarem modelu — małe modele korzystały z przykładów słabo. To jeden z przykładów umiejętności, które wyraźnie zyskują na skali.
Ograniczenia. ICL jest wrażliwe na dobór, kolejność i format przykładów. Model bywa skłonny powtarzać etykietę najczęstszą w przykładach lub tę z ostatniego przykładu. Liczba przykładów jest ograniczona oknem kontekstu, a każdy przykład kosztuje tokeny przy każdym wywołaniu.
Na przykładzie
Wyniki GPT-3 175B na pytaniach z wiedzy ogólnej TriviaQA (Brown i in., 2020): zero-shot 64,3%, one-shot 68,0%, few-shot 71,2%. Jeden przykład dodał 3,7 punktu procentowego, kolejne — następne 3,2. Model ani razu nie zmienił wag; zmieniła się tylko zawartość promptu.
Mechanizm dobrze widać na zadaniu, którego model na pewno nie trenował wprost. Prompt: „kot → tok; dom → mod; las → sal; ryba →”. Model musi z trzech przykładów wywnioskować regułę „odwróć litery” i odpowiedzieć „abyr”. Przy okazji wychodzi słabość tokenizacji: litery w obrębie tokenu są dla modelu niewidoczne, więc takie zadania udają się gorzej niż np. „kot → koty; dom → domy; las →”, gdzie wystarczy rozpoznać wzorzec gramatyczny, który model zna z pretreningu.
W praktyce
- Zacznij od zero-shot z jasną instrukcją; dodawaj przykłady, gdy model myli format lub kryteria.
- Dobieraj przykłady różnorodne i zrównoważone pod względem etykiet; dobrze działa wybieranie przykładów najbardziej podobnych do bieżącego wejścia (wyszukiwanie po embeddingach).
- Testuj kilka permutacji kolejności przykładów — duże różnice w wynikach sygnalizują kruchy prompt.
- Przy setkach powtarzalnych przypadków policz koszt: przykłady dopłacasz w każdym wywołaniu; czasem tańsze jest dostrojenie małego modelu.
- Typowy błąd: przykłady łatwiejsze niż rzeczywiste dane — model uczy się wtedy zbyt prostego kryterium.
Najczęstsze pytania
- Czy model się czegoś uczy na stałe z moich przykładów?
- Nie. Wagi pozostają niezmienione, a „wiedza” z przykładów działa tylko w bieżącym kontekście. W kolejnym wywołaniu bez tych przykładów model zachowa się jak przedtem.
- Ile przykładów dać?
- Zwykle 2–8 wystarcza do ustalenia formatu i kryteriów. Długie okna kontekstu pozwalają na setki przykładów i czasem daje to dalszy zysk, ale rośnie koszt i trzeba sprawdzić, czy poprawa jest realna.
- Czym ICL różni się od dostrajania?
- Dostrajanie zmienia wagi na podstawie wielu przykładów i działa trwale. ICL nie zmienia wag, działa natychmiast i łatwo go zmienić, ale jest ograniczone długością kontekstu i bardziej wrażliwe na sformułowanie.
Źródła
- Brown T. i in., 2020, „Language Models are Few-Shot Learners”, NeurIPS 2020.
- Min S. i in., 2022, „Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?”, EMNLP 2022.
- Olsson C. i in., 2022, „In-context Learning and Induction Heads”, Transformer Circuits Thread, arXiv:2209.11895.
- von Oswald J. i in., 2023, „Transformers Learn In-Context by Gradient Descent”, ICML 2023.
- Zhao Z. i in., 2021, „Calibrate Before Use: Improving Few-Shot Performance of Language Models”, ICML 2021.