Odległość Semantyczna jako Odległość Euklidesowa
Wysokowymiarowa Przestrzeń Wektorowa
Każdy token w słowniku ANDREA-120M zawierającym 8449 tokenów mapuje się na jeden punkt w R^768. Macierz embeddingów tokenów ma kształt 8449 x 768: 8449 wierszy, po jednym na każdy token ze słownika; 768 kolumn, po jednej na każdy wymiar embeddingu.
Trzy właściwości czynią to przestrzenią wektorową
1. Dodawanie. v_a + v_b należy do R^768. Suma dwóch embeddingów jest poprawnym wektorem.
2. Mnożenie przez skalar. alpha * v należy do R^768 dla dowolnego rzeczywistego alpha. Rozciąganie lub ściskanie w tym samym kierunku.
3. Liniowość. alpha v_a + beta v_b należy do R^768. Kombinacje liniowe pozostają wewnątrz przestrzeni.
Te właściwości dają nam narzędzia geometryczne: odległość, kąt, rzut, bazę, ortogonalność.
Odległość jako podobieństwo semantyczne
Podobieństwo cosinusowe dwóch embeddingów mierzy kąt między nimi: cos(theta) = (v_a . v_b) / (||v_a|| * ||v_b||). Zakres: -1 (przeciwne) do +1 (równoległe).
Wzorzec empiryczny po treningu: tokeny o podobnych kontekstach tworzą embeddingi o wysokim podobieństwie cosinusowym. ANDREA-120M umieszcza parakeet i monkey blisko siebie (oba biologiczne, oba gatunki, obie kategorie istniejące lub wymarłe). Umieszcza Fourier i transform blisko siebie (kontekst przetwarzania sygnałów). Umieszcza parakeet i Fourier daleko od siebie (ortogonalność międzydziedzinowa).
Dlaczego R^768, a nie R^384
ANDREA-12M używał d_model = 384. ANDREA-120M podwoił do 768. Podwojenie ma znaczenie: przestrzeń 384-wymiarowa ma mniej dostępnych „kątów”, a dezambiguacja międzydziedzinowa cierpi. Podwojenie pojemności daje modelowi przestrzeń do rozdzielenia bank (rzeka) od bank (instytucja finansowa) w różne obszary przestrzeni embeddingów, bez zapadania się jednego w drugie.
Aktualizacja embeddingów jako translacja wektorowa
Każdy krok gradientu dodaje delta_v do v_token. Geometrycznie: małe translacje w R^768 przesuwają pozycję każdego tokenu w kierunku obszarów, które zmniejszają stratę. Po 200K kroków każdy token przemieszcza się z losowej inicjalizacji do wyuczonej lokalizacji.
Obliczanie odległości
Trzy wytrenowane embeddingi (uproszczone do R^3 dla obliczeń):
- v(parakeet) = (1.0, 0.5, 0.0)
- v(monkey) = (1.2, 0.3, 0.1)
- v(Fourier) = (0.0, 0.0, 1.5)
Projekcja na podprzestrzeń zapytania
Co oblicza uwaga
Dla tokenu na pozycji t, uwaga oblicza:
softmax(Q K^T / sqrt(d_k)) V
Gdzie Q to zapytanie (pytanie tego tokena), K to klucze (identyfikatory każdego poprzedniego tokena), a V to wartości (zawartość każdego poprzedniego tokena). Wyjście to mieszanka V ważona przez to, jak bardzo zapytanie pasuje do każdego klucza.
Interpretacja geometryczna
Traktuj K jako listę wektorów w R^d_k. Każdy wiersz to klucz jednego poprzedniego tokena. Q to pojedynczy wektor w R^d_k: pytanie tego tokena.
Q K^T rzutuje każdy klucz na Q. Iloczyn skalarny q . k_i mierzy, jak bardzo k_i leży wzdłuż kierunku q. Długa projekcja = klucz silnie istotny dla zapytania. Krótka projekcja = klucz słabo istotny.
softmax normalizuje projekcje na wagi sumujące się do 1. Ważona suma V to pojedynczy wektor: mieszanka poprzedniej zawartości, ważona według istotności dla bieżącego zapytania.
Multi-Head Attention jako projekcja na wiele podprzestrzeni
ANDREA-120M używa 12 głowic uwagi. d_model = 768; d_k = 768 / 12 = 64. Każda głowica rzutuje do innej 64-wymiarowej podprzestrzeni R^768. Dwanaście głowic daje dwanaście niezależnych widoków tej samej sekwencji: jedna głowica może śledzić rolę gramatyczną, inna podobieństwo semantyczne, jeszcze inna odniesienia dalekozasięgowe.
Geometrycznie: każda głowica definiuje 64-wymiarową zorientowaną podprzestrzeń („okno”), przez które ogląda przeszłość.
[BLOCK_TYPE SECTION/STEP]
Maska przyczynowa
[BLOCK_TYPE SECTION/STEP]Modele typu decoder-only dodają maskę przyczynową: każdy wpis Q K^T powyżej przekątnej jest ustawiany na -nieskończoność przed softmax. Geometrycznie: rzutowanie na dowolny przyszły token otrzymuje wagę zero. Token t może widzieć tylko tokeny od 0 do t. [BLOCK_TYPE SECTION/STEP]
[BLOCK_TYPE SECTION/STEP]
Dlaczego to ma znaczenie: trening i inferencja stają się symetryczne. Ten sam przebieg w przód, te same zamaskowane rzutowania, bez specjalnej logiki generowania. [BLOCK_TYPE SECTION/STEP]
[BLOCK_TYPE SECTION/STEP]
Skalowanie sqrt(d_k)
[BLOCK_TYPE SECTION/STEP]Bez skalowania iloczyny skalarne rosną wraz z d_k. Duże iloczyny skalarne wypychają softmax w obszary one-hot (jedna waga bliska 1, reszta bliska 0). Dzielenie przez sqrt(d_k) utrzymuje rzutowania w skali jednostkowej wariancji, zachowując ostrość softmax w szerokim zakresie wartości d_k.
Geometrycznie: sqrt(d_k) normalizuje długości rzutów, dzięki czemu softmax otrzymuje porównywalne wielkości niezależnie od wymiaru podprzestrzeni.
Odczytywanie rzutu
Trzy klucze i jedno zapytanie w R^4 (uproszczone dla obliczeń):
- q = (1, 0, 1, 0)
- k_1 = (1, 0, 0, 0) [token przeszły 1]
- k_2 = (0, 0, 1, 0) [token przeszły 2]
- k_3 = (0, 1, 0, 1) [past token 3]
d_k = 4, więc sqrt(d_k) = 2.
Gradient Descent jako Ścieżka na Terenie
Powierzchnia w 120M+1 Wymiarach
Każda konfiguracja wag modelu ANDREA-120M to jeden punkt w R^120,000,000. Funkcja straty L(w) przypisuje każdemu punktowi liczbę rzeczywistą: wartość straty treningowej dla tej konfiguracji. Razem wartości strat tworzą powierzchnię (120M+1)-wymiarową nad przestrzenią parametrów.
Geometria uniemożliwia bezpośrednią wizualizację. Koncepcyjnie: teren. Góry (wysoka strata), doliny (niska strata), punkty siodłowe, płaskowyże, grzbiety, baseny.
Gradient jako Lokalne Nachylenie
grad L(w) to wektor w R^120M wskazujący kierunek najszybszego WZROSTU L. Negacja: -grad L(w) wskazuje najstromiej w dół.
Jeden krok AdamW przesuwa w w kierunku przeciwnym do gradientu (z adaptacyjnym skalowaniem z m i v). Geometrycznie: mały krok po powierzchni w dół, z rozmiarem kroku kontrolowanym przez lr.
Zły basen v1
v1 wykonał pierwszy krok przy LR = peak (0.0003) na świeżo zainicjalizowanych wagach. Obraz geometryczny: w_0 znajduje się w obszarze o silnej krzywiźnie (losowa inicjalizacja ma wysoką krzywiznę w wielu kierunkach), a krok z LR = peak ląduje w niewłaściwym basenie. Kolejne kroki nie pozwalają na ucieczkę. Model utyka, generując „region region region”, ponieważ ten basen ma najniższą stratę, jaką model może znaleźć z miejsca, w którym wylądował.
Ścieżka rozgrzewki v2
v2 wykonuje 2000 małych kroków z LR rosnącym od 0 do wartości peak. Obraz geometryczny: w_0 najpierw delikatnie przemieszcza się wzdłuż gładkich kierunków (gdzie krzywizna jest niska). Do kroku 2000 w przesuwa się do bardziej dostępnego obszaru; wtedy LR = peak może poprowadzić go w kierunku lepszego basenu bez przeskakiwania.
<translated content> [BLOCK_TYPE SECTION/STEP]
Warmup to protokół inicjalizacji uwzględniający geometrię: pozwala modelowi najpierw znaleźć bezpieczne lokalne sąsiedztwo, zanim zaczniemy go mocno trenować. [BLOCK_TYPE SECTION/STEP]
<translated content> [BLOCK_TYPE SECTION/STEP]
Szerokie vs wąskie baseny
[BLOCK_TYPE SECTION/STEP]W kroku 112K model ANDREA-120M znajduje się w basenie. Pytanie: jak szeroki jest ten basen? [BLOCK_TYPE SECTION/STEP]
<translated content> [BLOCK_TYPE SECTION/STEP]
Szeroki basen = wiele sąsiednich konfiguracji wag również osiąga niską wartość funkcji straty na zbiorze treningowym. Generalizacja zwykle jest dobra (szerokość basenu przewiduje wyniki na zbiorze testowym; zobacz lekcję PAC-Bayes, Rozdział 3). [BLOCK_TYPE SECTION/STEP]
<translated content>
Wąska niecka = tylko wąski zbiór wag osiąga niską stratę. Generalizacja zwykle cierpi.
v3 polish w kroku 112 619 przesunął model po powierzchni (bez resetu) do szerszej niecki poprzez perturbację curriculum: zmiana funkcji straty (inny bandyta, inny mix treningowy), pozwolić SGD znaleźć pobliski płaski region pod nową polityką.
Klif zombie
Anomalna strata 0.13 w kroku 112 080 była KLIFFEM: ostrym, wąskim obszarem, w którym jeden konkretny wzorzec wejściowy (zapamiętany podciąg repo-docs) osiąga stratę bliską zeru. Model spadł z szerszej niecki do wąskiej doliny. Hard-exclusion repo-docs przez Polish-pivot wypełnił tę dolinę, więc SGD nie mógł jej już znaleźć.
Czytanie terenu
Mieszanka Curriculum jako Spacer po Dyskretnym Sympleksie
Czym jest Sympleks
n-wymiarowy sympleks (dokładniej standardowy (n-1)-sympleks) to zbiór n-krotek (w_1, w_2, ..., w_n), gdzie każde w_i >= 0 oraz suma(w_i) = 1.
Dla n = 2: odcinek od (1, 0) do (0, 1). Dla n = 3: trójkąt o wierzchołkach (1, 0, 0), (0, 1, 0), (0, 0, 1). Dla n = 16 (pełna lista źródeł ANDREA): 15-wymiarowy sympleks zawarty w R^16.
Wagi bandyty jako współrzędne sympleksu
Bandyta ANDREA generuje wektor wag w nad źródłami danych w każdej fazie. Każda składowa w_i jest prawdopodobieństwem próbkowania źródła i. Prawdopodobieństwa są nieujemne i sumują się do 1: każdy wektor wag leży na sympleksie.
Wierzchołki = strategie czyste (próbkowanie tylko jednego źródła). Wnętrze = strategie mieszane (próbkowanie wielu źródeł, każde z dodatnim prawdopodobieństwem). Krawędzie = mieszanki tylko dwóch źródeł.
Dolne granice źródeł jako obszar ograniczony
ANDREA nakłada minimalne wagi: hermes3-general na poziomie podłogi 0.7 (po polsku). Tworzy to podregion simpleksu: osiągalne są tylko wektory wag z w_hermes3-general >= 0.7. [BLOCK_TYPE SECTION/STEP]
[BLOCK_TYPE SECTION/STEP]
Geometrycznie: podłoga przecina simpleks hiperpłaszczyzną. Region osiągalny to część simpleksu po właściwej stronie każdej hiperpłaszczyzny podłogi. [BLOCK_TYPE SECTION/STEP]
[BLOCK_TYPE SECTION/STEP]
Limity jako drugie ograniczenie
[BLOCK_TYPE SECTION/STEP]ANDREA nakłada również maksymalne wagi: dictionary na poziomie limitu 0.25 (po polsku). Każdy limit to kolejna hiperpłaszczyzna, a region osiągalny musi znajdować się po właściwej stronie każdej hiperpłaszczyzny limitu. [BLOCK_TYPE SECTION/STEP]
[BLOCK_TYPE SECTION/STEP]
Całkowite wykluczenie źródła (limit = 0.0) to najsilniejszy możliwy limit: współrzędna zostaje przypięta do zera, co zmniejsza efektywny simpleks o jeden wymiar.
[BLOCK_TYPE SECTION/STEP]
Przejścia fazowe jako spacery po simpleksie
[BLOCK_TYPE SECTION/STEP]Każde przejście fazowe (co 7-42 kroków) generuje nowy wektor wag. Każdy nowy wektor jest punktem na simpleksie. W ciągu 200K kroków bandyta rysuje długą ścieżkę przez osiągalny obszar simpleksu. [BLOCK_TYPE SECTION/STEP]
[BLOCK_TYPE SECTION/STEP]
Losowe fazy = teleportacja do losowego punktu wewnątrz osiągalnego obszaru. [BLOCK_TYPE SECTION/STEP]
Fazy kontrolowane przez bandytę = krok w kierunku najlepszego wierzchołka UCB zgodnego z dolnymi i górnymi granicami. [BLOCK_TYPE SECTION/STEP]
Polski pivot = ponowne narysowanie osiągalnego obszaru (nowe dolne granice, nowe górne granice, wykluczenie niektórych źródeł), a spacer kontynuuje się z nowego punktu startowego. [BLOCK_TYPE SECTION/STEP]
Dlaczego wierzchołki są niebezpieczne
[BLOCK_TYPE simplex/simplex_content]Fazy czystego źródła (jedno w_i = 1, reszta = 0) znajdują się w wierzchołkach simpleksu. Różnorodność wynosi zero. Model trenuje wyłącznie na jednej dystrybucji. Częściowe załamanie v1 wynikało z tego, że bandyta obozował w pobliżu wierzchołka repo-docs; próbki odtwarzały wyłącznie rozkład tego źródła. [BLOCK_TYPE simplex/simplex_content]
[BLOCK_TYPE simplex/simplex_content]
Podłogi zapobiegają obozowaniu w wierzchołkach: podłoga na poziomie 0.7 oznacza „nigdy nie pozwól, aby waga dowolnego źródła spadła poniżej 0.7” (lub dowolna wartość podłogi dla źródeł priorytetowych). [BLOCK_TYPE simplex/simplex_question]
Przechadzka po obszarze osiągalnym [BLOCK_TYPE simplex/simplex_question]
Trzy źródła: hermes3-general (H), gutenberg (G), dictionary (D). Ograniczenia: podłoga H = 0.5, limit D = 0.25. (Ukryte: wszystkie wagi ≥ 0, suma = 1, brak innych ograniczeń.) [BLOCK_TYPE simplex/simplex_question]
Ograniczanie Wymiarów przez Pierwsze 20K Kroków
Co zrobiła Rozgrzewka Curriculum v2
v2 ustawił curriculum_warmup_sources na siedem źródeł: hermes3-general, hermes3-creative, hermes3-roleplay, chat, smoltalk, oasst, gutenberg. Przez pierwsze 20K kroków TYLKO te siedem źródeł wnosiło wkład. Po kroku 20K aktywował się pełny strumień 16 źródeł.
Interpretacja Geometryczna
Pełny 16-źródłowy simpleks znajduje się w R^16. Ograniczenie do 7 źródeł zeruje 9 z 16 współrzędnych. Spacer bandyty odbywa się w 6-wymiarowym pod-simpleksie (o jeden mniej niż liczba źródeł, ze względu na ograniczenie sumy do 1).
Geometrycznie: SUBMANIFOLD pełnego simpleksu. Niższy wymiar, gładszy, łatwiejszy do nawigacji.
Dlaczego to pomaga na wczesnym etapie treningu
Na początku treningu model nie nauczył się jeszcze spójnego języka. Różnorodne źródła go dezorientują: każde źródło ma swój styl, własny rozkład słownictwa, własne wzorce. Mieszanie 16 źródeł przy losowej inicjalizacji tworzy zbyt szeroką docelową dystrybucję, której model nie jest w stanie dopasować.
Ograniczenie do 7 źródeł konwersacyjnych/prozatorskich daje bardziej jednorodny cel. Model najpierw uczy się stabilnej reprezentacji, a dopiero potem rozszerza.
Geometryczna ścieżka przez trening
1. Kroki 0 do 20K (rozgrzewka). Spacer odbywa się na 6-wymiarowym podsympleksie. W modelu pojawiają się stabilne wzorce językowe.
2. Kroki 20K do 112K (pełny strumień). Spacer rozszerza się do 15-wymiarowego pełnego sympleksu. Pojawia się szerokość domeny.
3. Krok 112K i dalej (polerowanie). Spacer ponownie ograniczony: wykluczone repo-docs i repo-docstrings, podniesione poziomy konwersacyjne. Mniejszy wielokąt w pełnym sympleksie; konsoliduje się jakość konwersacyjna.
Dlaczego zestawy Polish ustawiają curriculum_warmup_steps = 0
Polish zaczyna się od kroku 112K. Model już posługuje się spójnym językiem. Ograniczenie do podsympleksu teraz spowodowałoby utratę szerokości bez żadnych korzyści (korzyść z rozgrzewki dotyczy modeli od zera). Ustawienie warmup_steps = 0 oznacza: pozostajemy na pełnym sympleksie, ale z nowymi limitami i progami.
Trzy geometrie, jeden przebieg treningowy
v2 warmup: niskowymiarowy pod-sympleks.
v2 firehose: pełny sympleks 15-D.
v3 polish: pełny sympleks z mniejszym wielokątem (więcej ograniczeń).
Ten sam przebieg 200K kroków, trzy różne reżimy geometryczne. Każdy został dostrojony do innej fazy dojrzałości modelu.