Cały pomysł w jednym łańcuchu

Oto cała droga. Nie przejmuj się, jeśli na początku brzmi jak zagadka; reszta artykułu rozwija każde ogniwo.

Rozbij zdanie na kawałki, a dostaniesz tokeny. Zamień tokeny w listy liczb, a dostaniesz embeddingi. Pozwól każdemu tokenowi zadać pytanie, a dostaniesz zapytanie (query); pozwól pozostałym odpowiedzieć, a dostaniesz klucze (keys) i wartości (values). Porównaj zapytania z kluczami, a dostaniesz wyniki uwagi. Znormalizuj je funkcją softmax, a dostaniesz wagi uwagi. Użyj wag, by wymieszać wartości, a dostaniesz kontekst. Zrób to dla każdego tokenu, a dostaniesz self-attention. Dodaj sieć feed-forward, połączenia rezydualne i normalizację, a dostaniesz blok transformera. Ułóż bloki jeden na drugim, a dostaniesz transformer. Wytrenuj go do przewidywania następnego tokenu, a dostaniesz model językowy. Naucz go wykonywać polecenia i uczyć się z ludzkiej informacji zwrotnej, a dostaniesz coś bardzo bliskiego ChatGPT.

Krok 1: rozbij zdanie na kawałki, a dostaniesz tokeny

Komputer nie czyta słów tak jak ty. Pierwsze, co robi model językowy, to pocięcie tekstu na małe kawałki zwane tokenami. Token może być całym słowem („rozmowa”), częścią słowa („roz” + „mowa”), znakiem interpunkcyjnym, a nawet spacją doklejoną do słowa.

Dlaczego nie całe słowa? Jest ich za dużo, a codziennie pojawiają się nowe. Dzięki fragmentom słów model poradzi sobie z dowolnym tekstem, także z rzadkimi nazwiskami i literówkami, mając stały słownik złożony z kilkudziesięciu tysięcy tokenów. Każdy token w tym słowniku dostaje numer ID. Zdanie „Świetnie poszła mi rozmowa” mogłoby zamienić się w coś w rodzaju [40, 1734, 279, 7274].

Jeden token to mniej więcej trzy czwarte angielskiego słowa, więc „okno kontekstu o długości 128 000 tokenów” oznacza około 95 000 słów, które model może rozważyć naraz.

Krok 2: zamień tokeny w wektory, a dostaniesz embeddingi

Identyfikator tokenu, taki jak 7274, to tylko etykieta. Nic nie mówi o znaczeniu. Dlatego model wyszukuje każdy identyfikator w dużej tabeli i zastępuje go długą listą liczb, często setek lub tysięcy. Taka lista nazywa się wektorem, a wektor reprezentujący token nazywa się embeddingiem.

Nikt nie wpisuje tych liczb ręcznie. Zaczynają jako losowe i są korygowane w trakcie treningu, aż uchwycą, co znaczy każdy token i jak się go używa.

Krok 3: umieść embeddingi w przestrzeni, a znaczenie stanie się geometrią

Potraktuj każdy embedding jako współrzędne punktu, a każdy token stanie się miejscem w ogromnej, wielowymiarowej przestrzeni. Nie wyobrazisz sobie tysiąca wymiarów, ale pomysł działa już w dwóch lub trzech.

W tej przestrzeni tokeny o podobnym znaczeniu lądują blisko siebie. „Pensja” leży blisko „płacy” i „wynagrodzenia”. „Rozmowa kwalifikacyjna” leży blisko „spotkania” i „rekrutacji”. Nawet kierunki mogą nieść znaczenie: słynny przykład mówi, że krok od „mężczyzny” do „kobiety” wskazuje mniej więcej ten sam kierunek co krok od „króla” do „królowej”.

Same embeddingi nie mówią, gdzie stoi token, a kolejność zmienia znaczenie: „kandydat przepytał menedżera” to nie to samo co „menedżer przepytał kandydata”. Dlatego modele dodają do każdego wektora także informację o pozycji.

Krok 4: każdy token zadaje pytania i odpowiada na nie: zapytania, klucze i wartości

Słowa zmieniają znaczenie w zależności od sąsiadów: „zamek” znaczy coś innego w „zamek królewski” i „zamek w drzwiach”. Każdy token musi więc patrzeć na pozostałe. To najważniejszy pomysł współczesnej AI.

Z embeddingu każdego tokenu model tworzy trzy nowe wektory, mnożąc go przez trzy wyuczone tabele liczb:

Pomyśl o bibliotece: zapytanie to twoje wyszukiwanie, klucze to tytuły na półkach, a wartości to to, co jest w środku książek.

Krok 5: porównaj zapytanie z kluczami, a dostaniesz wyniki uwagi

Każdy token porównuje swoje zapytanie z kluczem każdego tokenu, który widzi, za pomocą iloczynu skalarnego: mnoży się oba wektory liczba po liczbie i dodaje wyniki. Podobne kierunki dają duży wynik, niepowiązane mały lub ujemny.

Wynikiem jest zestaw wyników uwagi, po jednym dla każdej pary tokenów. Wysoki wynik oznacza: „ten drugi token wydaje się istotny dla mojego pytania”. W zdaniu „Rekruterka zadzwoniła do kandydatki, bo spodobało jej się jej portfolio” token „jej” powinien dać wysoki wynik z „kandydatki” i niższy z „rekruterki”.

Krok 6: znormalizuj wyniki funkcją softmax, a dostaniesz wagi uwagi

Surowe wyniki mogą być dowolnie duże, dodatnie lub ujemne. Funkcja zwana softmax zamienia je w wartości dodatnie, które sumują się dokładnie do 1, dając największym wynikom znacznie większy udział.

Te udziały to wagi uwagi, coś w rodzaju procentów skupienia. Uproszczony przykład dla „jej”:

Inny tokenSurowy wynikWaga uwagi
kandydatki4,00,84
rekruterki2,00,11
zadzwoniła1,00,04
do-1,00,01

Zatem „jej” skieruje około 84% swojej uwagi na „kandydatki”.

Krok 7: użyj wag do połączenia wartości, a dostaniesz kontekst

Teraz każdy token buduje nowy wektor jako ważoną mieszankę wartości: 84% wartości z „kandydatki”, 11% z „rekruterki” i tak dalej. Wynikiem jest nowa reprezentacja „jej”, niosąca informację o tym, do kogo „jej” faktycznie się odnosi.

To właśnie oznacza kontekst wewnątrz modelu. Słowo nie jest już tylko abstrakcyjnym „jej”; jest „jej, czyli kandydatki, w zdaniu o portfolio”.

Krok 8: niech każdy token to robi, a dostaniesz self-attention

Gdy każdy token wykonuje ten proces jednocześnie, nazywa się to self-attention (samouwagą): zdanie zwraca uwagę na samo siebie.

Dwa udoskonalenia czynią ją potężną:

Krok 9: dodaj feed-forward, połączenia rezydualne i normalizację, a dostaniesz blok transformera

Uwaga dzieli się informacją; model musi ją też przetworzyć. Trzy kolejne elementy dopełniają całość:

Uwaga plus feed-forward, opakowane w połączenia rezydualne i normalizację, to jeden blok transformera.

Krok 10: ułóż bloki w stos, a dostaniesz transformer

Jeden blok daje skromne zrozumienie. Ułóż ich dziesiątki, a wyjście jednego niech zasila następny, i dostaniesz transformer, architekturę przedstawioną przez badaczy Google w artykule z 2017 roku „Attention Is All You Need”. To „T” w GPT, co oznacza „Generative Pre-trained Transformer”.

Każda warstwa doprecyzowuje obraz: wczesne mają tendencję do wychwytywania gramatyki, późniejsze bardziej abstrakcyjnych idei, takich jak ton i intencja. Wagi we wszystkich tych tabelach, liczby, których model się uczy, to właśnie parametry. Duże modele mają ich miliardy.

Krok 11: wytrenuj go do przewidywania następnego tokenu, a dostaniesz model językowy

Do tej pory mamy maszynę, która zamienia tekst w wektory świadome kontekstu. Teraz dajemy jej zadanie. Na końcu stosu model zamienia wektor ostatniego tokenu w wynik dla każdego tokenu w swoim słowniku, a potem znów stosuje softmax, by dostać prawdopodobieństwo każdego z nich. Innymi słowy: „Biorąc pod uwagę wszystko dotąd, co będzie dalej?”

Podczas treningu model czyta ogromne ilości tekstu: książki, artykuły, kod, strony internetowe. Na każdej pozycji zgaduje następny token, porównuje swoją propozycję z prawdziwym i lekko przesuwa wszystkie parametry w kierunku, który uczyniłby poprawną odpowiedź bardziej prawdopodobną. Powtórz to biliony razy, a wynikiem będzie model językowy.

To proste zadanie uczy wiele: żeby przewidzieć następne słowo w podręczniku czy umowie, model musi przyswoić gramatykę, fakty i wzorce rozumowania.

Generowanie tekstu to po prostu to przewidywanie w pętli. Model wybiera następny token, zwykle losując z prawdopodobieństw (ustawienie zwane temperaturą kontroluje, jak odważny jest wybór), dodaje go do tekstu i przewiduje znowu, token po tokenie.

Krok 12: naucz go wykonywać polecenia i uczyć się z informacji zwrotnej, a dostaniesz ChatGPT

Model wytrenowany wyłącznie do przewidywania następnego tokenu to znakomite autouzupełnianie, a nie asystent. Zadaj mu pytanie, a może odpowiedzieć trzema kolejnymi pytaniami. Naprawiają to dwa dodatkowe etapy treningu:

  1. Dostrajanie na instrukcjach (instruction tuning): model trenuje się na wielu przykładach prośby, po której następuje dobra, pomocna odpowiedź. Uczy się schematu „ktoś pyta, ja odpowiadam z pożytkiem”.
  2. Uczenie się z ludzkiej informacji zwrotnej: ludzie porównują pary odpowiedzi modelu i wybierają lepszą. Te preferencje służą do dalszego kierowania modelu ku odpowiedziom pomocnym, trafnym i bezpiecznym. Nazywa się to uczeniem ze wzmocnieniem na podstawie ludzkiej informacji zwrotnej, czyli RLHF.

Dodaj interfejs czatu, a dostaniesz coś bliskiego ChatGPT, Claude czy Gemini: ten sam transformer, ukształtowany tak, by działał jak asystent.

Wszystko razem: podróż jednego zdania

Wyobraź sobie, że wpisujesz: „Najtrudniejsze pytanie na rozmowie kwalifikacyjnej to…” W ułamku sekundy dzieje się tak:

  1. Tekst zostaje podzielony na tokeny, a każdy staje się embeddingiem z informacją o pozycji.
  2. W każdym bloku transformera każdy token tworzy zapytanie, klucz i wartość, ocenia wcześniejsze tokeny, zamienia wyniki w wagi i domieszkuje ich wartości. „Najtrudniejsze” łączy się z „pytaniem”, a fraza zostaje zrozumiana jako temat rozmowy kwalifikacyjnej.
  3. Warstwy feed-forward przetwarzają każdy zaktualizowany wektor; połączenia rezydualne i normalizacja utrzymują stabilność; dziesiątki bloków dopracowują go dalej.
  4. Końcowy wektor staje się prawdopodobieństwami nad słownikiem. Token taki jak „opowiedz” dostaje wysoki wynik; model go wybiera, dodaje i zaczyna od nowa.

Krótki słowniczek

PojęcieProstymi słowami
TokenMały kawałek tekstu, często słowo lub jego część
WektorUporządkowana lista liczb
EmbeddingWektor reprezentujący znaczenie tokenu
Zapytanie / Klucz / WartośćCo token pyta / co oferuje / co przekazuje
Wynik uwagiJak istotny wydaje się jeden token dla drugiego
SoftmaxZamienia wyniki w udziały sumujące się do 1
Waga uwagiUdział skupienia, jaki jeden token daje drugiemu
KontekstZnaczenie tokenu zaktualizowane przez jego sąsiadów
Self-attentionKażdy token zwraca uwagę na tokeny, które widzi
Blok transformeraUwaga + feed-forward + połączenia rezydualne + normalizacja
ParametryWyuczone liczby wewnątrz modelu
Okno kontekstuIle tokenów model może rozważyć naraz

Dlaczego to ważne dla twojej kariery

Jeśli idziesz na rozmowę kwalifikacyjną na stanowisko związane z AI, umiejętność wyjaśnienia tokenów czy uwagi prostymi słowami to realna przewaga. Dzięki temu będziesz też mądrzejszym użytkownikiem narzędzi AI: zrozumiesz, dlaczego potrafią pewnie podawać błędne fakty (przewidują prawdopodobny tekst, a nie zweryfikowaną prawdę) i dlaczego jasny, konkretny prompt daje lepsze odpowiedzi. Praktyczne zastosowania znajdziesz w naszych przewodnikach: jak używać narzędzi AI do ćwiczenia rozmów kwalifikacyjnych oraz co naprawdę zmieniają asystenci AI na rozmowach.

Najczęściej zadawane pytania

Czym różni się token od słowa?

Token to jednostka, którą czyta model językowy. Popularne słowa są często pojedynczym tokenem, a dłuższe lub rzadsze dzielą się na kilka kawałków. W języku angielskim jeden token to średnio około trzech czwartych słowa.

Czy model językowy rozumie to, co mówi?

Buduje bogate wewnętrzne reprezentacje znaczenia i kontekstu, ale jest trenowany, by przewidywać prawdopodobny tekst, a nie sprawdzać fakty. Dlatego jego odpowiedzi mogą brzmieć pewnie i mimo to być błędne, więc ważne twierdzenia zawsze warto zweryfikować.

Czy ChatGPT to po prostu transformer?

W gruncie rzeczy tak: duży transformer wytrenowany do przewidywania następnego tokenu. Pomocnym asystentem czyni go dodatkowy trening na instrukcjach i ludzkiej informacji zwrotnej oraz produkt zbudowany wokół niego.