Na wejściu do systemu SI człowiek zamieszcza jakieś pytanie, polecenie, w żargonie informatycznym nazywane jest to "prompt". Skrótowo - tekst. Może być komunikacja głosowa, ale ona też jest zamieniana na tekst. Jednak tekst nie jest danymi wejściowymi do systemu SI, zatem potrzebna jest warstwa pomocnicza, która zamienia tekst na ciąg liczb, które może przetworzyć właściwy system SI.
Tokeny
Każdy tekst mający być przekazany SI czy LLM (tu synonim SI, z ang. Large Language Model) jest wstępnie zamieniany na "tokeny". Tokeny to najmniejsze jednostki języka przetwarzane przez konkretny system SI. To mogą być słowa, to mogą być części słów, to mogą być znaki przestankowe czy inne. Zawsze zachodzi proces tokenizacji - zamiany tekstu na tokeny.
Jak to wygląda? Weźmy prosty model chat GPT-2 i proste zdanie:
Czy na dworze pada teraz deszcz?
Przetworzenie na tokeny dla GPT-2 da następujący ciąg:
['Czy', ' na', ' dwor', 'ze', ' pada', ' teraz', ' deszcz', '?']
GPT-2 dysponuje i operuje na zbiorze 50 257 tokenów. Ponieważ każdy token ma swoją liczbę porządkową (indeks), to ich ciąg jest zamieniany na ciąg liczb stanowiących wejście do systemu SI GPT-2:
Token -> ID (indeks wektora)
Czy -> 13194
na -> 732
dwor -> 21900
ze -> 321
pada -> 14106
teraz -> 2674
deszcz -> 19690
? -> 30
Zatem zdanie przetwarzane jest na ciąg następujących liczb całkowitych:
[13194, 732, 21900, 321, 14106, 2674, 19690, 30]
I to te liczby, bez żadnego komentarza, po prostu jako wielkości matematyczne są "wsadem" dla systemu SI. A co by było gdyby to był inny system? Np. wczesna wersja francuskiego Mistral z 32 000 tokenów? Tam, to samo zdanie zostałoby przetworzone na:
['Czy', ' na', ' dworze', ' pada', ' teraz', ' deszcz', '?']
[13194, 426, 31278, 4875, 1412, 25324, 299]
Jeden token i jedna liczba mniej. Jedna liczba się powtarza, ale to przypadek.
Co robi system SI w kontakcie z "promptem", "pytaniem", ciągiem liczb na wejściu?
- System przetwarza wejściowy ciąg liczb na rozkład prawdopodobieństwa wyboru - jednego! - następnego tokenu.
- Następnie wybiera token o przypisanym najwyższym prawdopodobieństwie i dołącza go do ciągu wejściowego -> powstaje nowy ciąg.
- Następnie ciąg utworzony w pkt. 2 kieruje na wejście jak w pkt 1. co umożliwia wybór następnego pojedynczego tokenu.
- Pętla z pkt 3. jest powtarzana do momentu aż napotkany zostanie token końca odpowiedzi albo limit jej długości narzucony na program.
To co istotne, to to, że przy każdym przebiegu przez system, generowany jest tylko i wyłącznie JEDEN token, nic więcej. Kolejnym przetwarzaniom podlega już "pytanie" - ciąg liczb, uzupełniane o kolejne wybierane liczby=tokeny.
Gdy napotkana zostanie liczba oznaczająca token końca odpowiedzi, ten ciąg liczb, który został wygenerowany poprzez dołączanie do ciągu wejściowego, zostaje zwrócony na zewnątrz.
I tak GPT-2 jako efekt przetwarzania wcześniej podanego ciągu liczb, wygenerowałby np. ciąg: [13039, 11, 2673, 1415, 14106, 19690, 13]. Te zamienione na tokeny wyglądałyby: ['Nie', ',', ' teraz', ' nie', ' pada', ' deszcz', '.'], co pojawiłoby się jako tekst: "Nie, teraz nie pada deszcz.", co byłoby doskonale zrozumiałe dla pytającego człowieka. Jak to możliwe? Że "znając" tylko liczby w jakimś ciągu, produkując tylko liczby wskutek czystych działań matematycznych, GPT-2 generuje w odbiorze człowieka mającą sens odpowiedź? O tym później. Na teraz jeszcze nieco ambitniejszego wyjaśnienia.
Wewnątrz systemu SI znajdują się następujące "zasoby":
- Tablica wierszy-wektorów przypisanych tokenom. Każdy token ma swój wiersz-wektor. Każdy wektor ma taką samą długość i jest listą liczb, tym razem rzeczywistych, często określanych jako "wagi".
- Tablica wektorów przypisanych położeniu tokenu w ciągu wejściowym. Podobnie wartości to liczby rzeczywiste, podobnie długość jest taka sama dla tego zbioru wektorów. Wektor tokenu jest uzupełniany o wektor położenia dla celów dalszego przetwarzania.
- Sieć wag – ogromny zbiór liczb (wag) ułożonych w warstwy. To one przekształcają połączone wektory tokenów i pozycji w końcowe przewidywanie: jakie jest prawdopodobieństwo, że następny token będzie następnym właściwym elementem odpowiedzi.
Sumując - to czysta matematyka:
Przed wejściem i za wyjściem systemu SI są podsystemy zamiany tekstu na tokeny ->liczby oraz zamiany liczb na tokeny-> tekst.
Do systemu SI docierają tylko i wyłącznie liczby.
Z systemu SI emitowane są tylko i wyłącznie liczby.
Proces generowania wyjściowego ciągu liczb przez SI przebiega w pętli, w której całe przetwarzanie wybiera tylko jeden "token" jedną liczbę dołączaną w owej pętli to ciągu wejściowego.
System widzi wyłącznie liczby. Generuje wyłącznie liczby. Przeprowadza w międzyczasie działania czysto matematyczne (rachunkowe) na tych liczbach przy użyciu zgromadzonych zasobów - znów w postaci ogromnej sieci wartości liczbowych. Czysta matematyka!
A jednak - odpowiedzi MAJĄ ZNACZENIE! A wytłumaczenie dlaczego, może mieć tektoniczne oddziaływanie dla pojmowania świata i człowieka, dla tych, co próbują go pojmować.
W gruncie rzeczy są to po prostu uniwersalne "autouzupełniacze”, które są w stanie dokończyć dowolny tekst, czasami z lepszym, czasami z gorszym skutkiem, korzystając z dostępu do dużej bazy danych, wykorzystywanej do wstępnego treningu
W każdym razie mają nawijkę, z którą żaden człowiek nie może się równać.