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:
- Zapytanie (query): pytanie, które zadaje ten token. Wyobraź sobie słowo „on” pytające: „Do którego wcześniejszego rzeczownika w zdaniu się odnoszę?”
- Klucz (key): to, co ten token oferuje, jak etykieta na szafie z aktami. Klucz rzeczownika mógłby w skrócie mówić: „Jestem czymś, do czego można się odnieść”.
- Wartość (value): faktyczna informacja, którą ten token przekaże, jeśli inny token uzna ją za istotną.
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 token | Surowy wynik | Waga uwagi |
|---|---|---|
| kandydatki | 4,0 | 0,84 |
| rekruterki | 2,0 | 0,11 |
| zadzwoniła | 1,0 | 0,04 |
| do | -1,0 | 0,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ą:
- Tylko tokeny, które widzi. W modelu piszącym tekst każdy token może patrzeć tylko na tokeny przed sobą, nigdy do przodu. Ta maska przyczynowa istnieje, bo podczas generowania przyszłe słowa jeszcze nie istnieją.
- Wiele głowic naraz. Modele uruchamiają równolegle kilka procesów uwagi, zwanych głowicami uwagi, każdy z własnymi tabelami zapytań, kluczy i wartości. Jedna może śledzić gramatykę, inna to, kto do kogo się odnosi. To multi-head attention.
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ść:
- Sieć feed-forward: po uwadze wektor każdego tokenu przechodzi samodzielnie przez małą sieć neuronową. Jeśli uwaga to spotkanie, na którym wszyscy dzielą się notatkami, to tu każdy przetwarza je przy swoim biurku.
- Połączenia rezydualne: zamiast zastępować wektor tokenu nowym wynikiem, model dodaje wynik do oryginału. Dzięki temu wcześniejsza informacja zostaje zachowana, a głębokie sieci łatwiej się trenuje.
- Normalizacja: krok, który przeskalowuje liczby do stabilnego zakresu, by nie rosły w sposób niekontrolowany ani nie kurczyły się do zera podczas przechodzenia przez wiele warstw.
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:
- 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”.
- 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:
- Tekst zostaje podzielony na tokeny, a każdy staje się embeddingiem z informacją o pozycji.
- 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.
- Warstwy feed-forward przetwarzają każdy zaktualizowany wektor; połączenia rezydualne i normalizacja utrzymują stabilność; dziesiątki bloków dopracowują go dalej.
- 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ęcie | Prostymi słowami |
|---|---|
| Token | Mały kawałek tekstu, często słowo lub jego część |
| Wektor | Uporządkowana lista liczb |
| Embedding | Wektor reprezentujący znaczenie tokenu |
| Zapytanie / Klucz / Wartość | Co token pyta / co oferuje / co przekazuje |
| Wynik uwagi | Jak istotny wydaje się jeden token dla drugiego |
| Softmax | Zamienia wyniki w udziały sumujące się do 1 |
| Waga uwagi | Udział skupienia, jaki jeden token daje drugiemu |
| Kontekst | Znaczenie tokenu zaktualizowane przez jego sąsiadów |
| Self-attention | Każdy token zwraca uwagę na tokeny, które widzi |
| Blok transformera | Uwaga + feed-forward + połączenia rezydualne + normalizacja |
| Parametry | Wyuczone liczby wewnątrz modelu |
| Okno kontekstu | Ile 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.