ML Atlas

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.

Zobacz też