ML Atlas

Kurs uczenia maszynowego od zera · Lekcja 7.2 · 33 z 33 gotowych lekcji · 12 min

Od sieci neuronowych do dużych modeli językowych

W skrócie

Duży model językowy uczy się zgadywać następny token. Lekcja buduje tę ideę od modelu liczącego słowa i pokazuje, jak temperatura zmienia to, co model pisze.

Rozgrzewka Dwa pytania z wcześniejszych lekcji. Minuta, a lekcji nie blokuje.
Z lekcji 7.1: Sieci neuronowe: wiele prostych elementów razem Dlaczego sieć neuronowa potrzebuje funkcji aktywacji?

Pokaż odpowiedź

Poprawna odpowiedź: Bo bez niej kilka warstw działa jak jedna ważona suma i rysuje prostą

Aktywacja zagina sygnał; bez zgięć kolejne warstwy nie dodają nic ponad jeden model liniowy.

Z lekcji 5.6: Który model kiedy? Na cyfrach SVM ma więcej trafień niż regresja logistyczna w 17 z 20 podziałów, a na pingwinach w żadnym (regresja w 9, remis w 11). Co z tego wynika?

Pokaż odpowiedź

Poprawna odpowiedź: Który model lepszy, zależy od danych, więc sprawdzasz to na swoich

Kolejność odwraca się między zbiorami. Dlatego model wybiera się walidacją na własnych danych, a nie z cudzego rankingu.

Klawiatura w telefonie podpowiada następne słowo, kiedy piszesz. Czatbot pisze całe wypracowania, odpowiada na pytania i tłumaczy wiersze. Czy to ten sam rodzaj maszyny? W sercu obu leży jedno zaskakująco skromne zadanie: mając dotychczasowy tekst, zgadnij, co będzie dalej. Ta ostatnia lekcja pokazuje, jak daleko może zaprowadzić to jedno pytanie i gdzie leżą jego granice.

Przewidź, potem sprawdź Model zna słowo „w” z 14 miejsc w tekście, a najczęściej po nim występuje „ogrodzie” (tylko 3 z 14 razy). Obniżasz temperaturę z 1 do 0,1. Jaką szansę dostanie „ogrodzie”?
Jak bardzo jesteś pewny(-a)?

Eksperyment

Ten interaktywny eksperyment działa w przeglądarce z włączonym JavaScriptem. Tekst wokół opisuje, co w nim widać.

Pokaż odpowiedź

Poprawna odpowiedź: Około 97%

Przy temperaturze 1 „ogrodzie” ma 21%, przy 0,5 37%, a przy 0,1 aż 97%, choć w tekście stanowi tylko 3 z 14 wystąpień. Niska temperatura wyostrza rozkład: najczęstsze słowo zabiera prawie wszystko. Wysoka (3) spłaszcza go do 13%.

Spróbuj

  • Wpisz w pole tekstowe częste słowo i przeczytaj listę prawdopodobnych następnych słów z ich prawdopodobieństwami. Czy mają sens przy tym, co wiesz o tekście?
  • Przesuń suwak temperatury w lewo i patrz, jak najczęstsze słowo zgarnia prawie całe prawdopodobieństwo. Potem przesuń go w prawo i zobacz, jak prawdopodobieństwa się wyrównują.
  • Spróbuj słowa, które w krótkim tekście jest pewnie rzadkie. Skoro jest tak mało przykładów do policzenia, na ile można ufać pokazanym prawdopodobieństwom?
  • Przejdź łańcuch ręcznie: wpisz najbardziej prawdopodobne następne słowo, potem najbardziej prawdopodobne po nim i tak dalej. Czy powstałe zdanie brzmi płynnie? Czy dokądś prowadzi?

Gdy już sprawdzisz to w labie, zobaczmy, co się tam właściwie działo.

Pomysł w prostych słowach

Model językowy przypisuje prawdopodobieństwa temu, co pojawi się dalej w tekście. Po „Poproszę filiżankę” prawdopodobna jest „herbaty”, „kawy” też, „żwiru” raczej nie. Mając takie prawdopodobieństwa, można generować tekst: wybrać następne słowo, dopisać je i zapytać znowu.

Najprostszy możliwy model językowy to model bigramowy. Czyta zbiór tekstów (korpus) i po prostu liczy, jakie słowo pojawia się po jakim. W tej lekcji przyglądamy się takiemu modelowi, zbudowanemu na krótkim tekście napisanym specjalnie dla tego kursu. Dla każdego słowa model zna słowa, które pojawiały się po nim w korpusie, razem z ich prawdopodobieństwami.

Pomyśl o kimś, kto przeczytał w życiu tylko jedną książkę, za to wiele razy, i którego jedyną umiejętnością jest pamiętanie, jakie słowo szło po jakim. Poproś go o dokończenie zdania, a wyprodukuje coś, co brzmi trochę jak ta książka — płynnie na krótkim odcinku, bez celu w całości. Ta osoba to model bigramowy.

Dlaczego to działa

Model bigramowy szacuje prawdopodobieństwo następnego słowa b po słowie a z liczności:

P(następne = b | bieżące = a) = liczba(a b) / liczba(a)

Jeśli słowo „filiżankę” występuje w korpusie dziesięć razy, a siedem razy idzie po niej „herbaty”, model daje słowu „herbaty” prawdopodobieństwo 0,7 po „filiżankę”. To wszystko — liczenie i dzielenie. Uczenie znów oznacza dopasowanie modelu do przykładów, a ocena to to, jak dobrze przewiduje następne słowo prawdziwego tekstu.

Żeby generować tekst, model musi wybrać spośród kandydatów i tu wkracza temperatura. Niska temperatura wyostrza rozkład: najbardziej prawdopodobne słowo wygrywa prawie zawsze, a tekst robi się powtarzalny i bezpieczny. Wysoka temperatura go spłaszcza: rzadsze słowa dostają realną szansę, a tekst staje się bardziej różnorodny i bardziej chaotyczny. Temperatura nie zmienia tego, co model wie, tylko to, jak śmiało losuje.

Duży model językowy (LLM) robi to samo zadanie z trzema wielkimi ulepszeniami. Po pierwsze, przewiduje tokeny — kawałki słów — więc poradzi sobie z każdym słowem, nawet takim, którego nigdy nie widział w całości. Po drugie, zamiast patrzeć tylko na poprzednie słowo, jest siecią neuronową, zwykle transformerem (zaproponowanym w 2017 roku), którego mechanizm uwagi pozwala każdej pozycji spojrzeć wstecz na tysiące poprzednich tokenów i zdecydować, które są ważne. Po trzecie, jego prawdopodobieństwa to nie liczności, tylko wyjścia sieci z miliardami wag, trenowanej dokładnie narzędziami z tego kursu: stratą logarytmiczną z lekcji 5 na następnym tokenie, minimalizowaną spadkiem gradientu z lekcji 4, z propagacją wsteczną z lekcji 11. Przy treningu na ogromnej ilości tekstu zadanie zgadywania zmusza sieć do przyswojenia gramatyki, faktów i schematów rozumowania, bo wszystko to pomaga przewidzieć, co będzie dalej.

Częsty błąd

Największe nieporozumienie wokół modeli językowych to myślenie, że wyszukują odpowiedzi. Nie zaglądają do bazy danych; produkują ciąg dalszy, który ich trening uczynił prawdopodobnym. Najczęściej jest on też prawdziwy, ale nie zawsze — gdy prawdopodobne i prawdziwe się rozchodzą, model płynnie wygłasza nieprawdę, co nazywamy halucynacją. Drugi błąd to traktowanie temperatury jak pokrętła jakości. Niska temperatura nie jest „bardziej poprawna”, tylko bardziej przewidywalna; pasuje do odpowiedzi rzeczowych, a wyższa do burzy mózgów.

To cała podróż: od jednego progu na jednym pomiarze guza do sieci przewidującej następne słowo wszystkiego, co kiedykolwiek napisano. Przepis się nie zmienił — rodzina modeli, ocena, poszukiwanie i uczciwy test na danych, których model nie widział. Hasła z Atlasu poniżej to miejsce, gdzie można zgłębić każdy krok.

Złap błąd AI

Tak odpowiedział chatbot. Jedno zdanie jest merytorycznie błędne. Które?

Pytanie: Skąd taki czatbot jak ty zna odpowiedź na moje pytanie?

Odpowiedź chatbota

Pokaż błędne zdanie

Błędne zdanie: Gdy zadajesz pytanie, model wyszukuje odpowiedź w swojej bazie sprawdzonych faktów, a potem płynnie ją formułuje.

Model językowy nie zagląda do bazy danych; produkuje ciąg dalszy, który jego trening uczynił prawdopodobnym, tak jak model z laba wie tylko, że po „w” stoi „ogrodzie” w 3 z 14 miejsc. Gdy prawdopodobne i prawdziwe się rozchodzą, model płynnie wygłasza nieprawdę: to halucynacja.

Quiz

Trzy pytania na sprawdzenie się. Wybierz odpowiedź albo rozwiń odpowiedź pod pytaniem. Z klawiatury: strzałki wybierają, Enter albo spacja zatwierdza.

1. Na jakim zadaniu trenuje się duży model językowy?
Pokaż odpowiedź

Poprawna odpowiedź: Na przewidywaniu następnego tokenu na podstawie wcześniejszych

LLM uczy się dawać wysokie prawdopodobieństwo faktycznemu następnemu tokenowi, a cała reszta wyrasta z tego zadania.

2. Obniżasz temperaturę losowania. Co dzieje się z generowanym tekstem?
Pokaż odpowiedź

Poprawna odpowiedź: Dominują najbardziej prawdopodobne tokeny, więc tekst staje się przewidywalny

Temperatura przekształca prawdopodobieństwa w chwili losowania, nie zmieniając tego, czego model się nauczył.

3. Dlaczego model językowy może z pewnością stwierdzić coś fałszywego?
Pokaż odpowiedź

Poprawna odpowiedź: Bo składa prawdopodobne ciągi dalsze, a prawdopodobne nie znaczy prawdziwe

Cel treningu nagradza prawdopodobny tekst, więc gdy prawdopodobne i prawdziwe się rozchodzą, model może płynnie halucynować.

Najważniejsze wnioski

  • Model językowy daje prawdopodobieństwa następnego tokenu; generowanie tekstu to wielokrotne losowanie z nich.
  • Model bigramowy liczy, które słowo idzie po którym; LLM zastępuje liczności transformerem patrzącym na długi kontekst.
  • Temperatura steruje tym, jak śmiało model losuje, a nie tym, ile wie.
  • LLM trenuje się tym samym przepisem co resztę kursu: strata logarytmiczna, spadek gradientu, propagacja wsteczna.
  • Prawdopodobne to nie to samo co prawdziwe i dlatego modele językowe mogą halucynować.

Co dalej?

To ostatnia lekcja kursu. Kilka spokojnych następnych kroków — wybierz jeden.

Głębiej: wzór, kod, praktyka

Matematyka

W modelu bigramowym prawdopodobieństwo następnego słowa b po słowie a to iloraz liczników: P(b | a) = count(a b) / count(a). Temperatura t zmienia kształt tych prawdopodobieństw, nie ruszając liczników:

  • P_t(b | a) = count(a b)^(1/t) / Σ_c count(a c)^(1/t), gdzie suma biegnie po wszystkich słowach c, które następowały po a.
  • Dla t = 1 to zwykły iloraz. Gdy t dąży do 0, najczęstsze słowo zabiera wszystko. Gdy t rośnie, rozkład spłaszcza się ku równym szansom.
  • Duży model językowy stosuje ten sam pomysł do logitów z: P_t(b) = exp(z_b / t) / Σ_c exp(z_c / t). Powyższe liczniki to szczególny przypadek z = log count.
  • Trening minimalizuje stratę logarytmiczną prawdziwego następnego tokenu, −log P(prawdziwy token | kontekst), uśrednioną po tekście.
W kodzie (Python)

Kod czyta angielskie zdania laba, liczy, co następuje po „the”, i stosuje wzór z temperaturą. Działa więc na ANGIELSKICH zdaniach, a jego liczby to liczby angielskiej wersji lekcji (polski lab ma własny, polski tekst, w którym po „w” najczęściej następuje „ogrodzie”). Notebook podlinkowany pod wynikiem sam pobierze dane.

import re
from collections import Counter

src = open("site-src/course/labs/next-token.corpus.js", encoding="utf-8").read()
text = re.search(r"en: `(.*?)`", src, re.S).group(1)  # angielskie zdania laba
words = re.findall(r"[a-z']+", text.lower())
after_the = Counter(b for a, b in zip(words, words[1:]) if a == "the")
counts = after_the.most_common()
print(f'"the" seen {sum(after_the.values())} times, {len(after_the)} different next words, top: {counts[:3]}')
for t in (1, 0.5, 0.1, 3):
    w = {b: c ** (1 / t) for b, c in counts}
    print(f"temperature {t}: P(morning | the) = {w['morning'] / sum(w.values()):.1%}")

Wynik

"the" seen 42 times, 26 different next words, top: [('morning', 4), ('cup', 3), ('garden', 3)]
temperature 1: P(morning | the) = 9.5%
temperature 0.5: P(morning | the) = 18.6%
temperature 0.1: P(morning | the) = 85.0%
temperature 3: P(morning | the) = 5.3%

To liczby angielskiej lekcji: po „the” następuje 26 różnych słów w 42 miejscach, a najczęstsze z nich, „morning”, ma 4 z 42, czyli 9,5% przy temperaturze 1. Przy temperaturze 0,1 dostaje 85,0%, a przy 3 tylko 5,3%.

Dla praktyka
  • Liczniki z małego tekstu są zaszumione. Słowo widziane trzy razy to trzy przykłady, a nie wiarygodny rozkład. Dlatego prawdziwe modele uczy się na ogromnych korpusach.
  • Wybór zachłanny (zawsze najbardziej prawdopodobne słowo) daje powtarzalny tekst. Losowanie przy temperaturze bliskiej 1 albo tylko spośród kilku najlepszych słów daje większą różnorodność.
  • Niską temperaturę stosuj tam, gdzie odpowiedź ma być stabilna i sprawdzalna, a wyższą do burzy mózgów. Żadna nie czyni odpowiedzi prawdziwszą.
  • Płynne nie znaczy poprawne. Sprawdzaj fakty, liczby i cytaty w źródle, bo model tylko kontynuuje to, co prawdopodobne.
  • Prawdziwe modele czytają tokeny, nie słowa. Rzadkie słowo jest dzielone na kawałki, więc liczenie całych słów, jak tu, to uproszczenie.

Więcej w Atlasie

Hasła encyklopedii o pojęciach z tej lekcji: