Jak Zaskoczony Powinien Być Model?
Od Logitów Do Prawdopodobieństw
Po 12 blokach transformera, ANDREA-120M produkuje wektor vocab_size liczb na pozycję tokena: logitów. Dla ANDREA-120M, vocab_size = 8449, więc każda pozycja generuje 8449 logitów. Logity to nienormalizowane wyniki; niektóre dodatnie, niektóre ujemne, bez ograniczenia sumy do 1.
Softmax przekształca logity w rozkład prawdopodobieństwa:
p_i = exp(logit_i) / sum_j exp(logit_j)
Po softmax wszystkie 8449 liczb mieści się między 0 a 1 i sumuje do 1. Model przypisuje prawdopodobieństwo każdemu możliwemu następnemu tokenowi.
Funkcja straty Cross-Entropy
Trening wymaga funkcji straty: liczby, która mierzy, jak bardzo przewidywanie modelu było błędne dla danej poprawnej odpowiedzi. Cross-entropy działa dla modelowania językowego:
loss_t = -log(p_correct_token_t)
Weź przewidywaną przez model prawdopodobieństwo dla rzeczywistego następnego tokenu (tego z danych treningowych). Weź ujemny logarytm tego prawdopodobieństwa. To strata dla jednej pozycji.
Dlaczego ujemny logarytm
Trzy właściwości sprawiają, że -log(p) to naturalna funkcja straty:
- -log(1) = 0: Gdy model przewiduje poprawny token z 100% pewnością, strata wynosi zero.
- -log(0) = ∞: Gdy model przypisuje zerowe prawdopodobieństwo poprawnemu tokenowi, strata jest nieskończona. (W praktyce softmax nigdy nie daje dokładnie 0; strata pozostaje skończona, ale duża.)
- Monotoniczna: Wraz ze wzrostem przewidywanego prawdopodobieństwa dla poprawnego tokenu, strata maleje płynnie.
Wyższe prawdopodobieństwo poprawnej odpowiedzi = niższa strata. Cel treningowy jest prosty: maksymalizuj przewidywane prawdopodobieństwo dla rzeczywistego następnego tokenu.
Strata na sekwencję
ANDREA trenuje na sekwencjach o długości 1024 (okno kontekstowe). Każda sekwencja generuje 1024 przewidywania następnego tokenu. Strata sekwencji jest uśredniona na wszystkich pozycjach:
sequence_loss = mean(-log(p_correct_t)) dla t w 0..1023
Następnie straty sekwencji są uśredniane w ramach batcha (ANDREA-120M używa batch_size = 8). Jedna liczba skalarna na krok treningowy. Ta liczba to to, co pokazuje krzywa straty.
Obliczanie straty dla jednej pozycji
Perplexity = exp(loss)
Przyjaźniejsza skala
Wartości straty takie jak 2.0 lub 3.43 nie przekazują natychmiast, co model potrafi zrobić. Perplexity przekłada stratę na bardziej intuicyjną skalę:
perplexity = exp(loss)
Perplexity odpowiada na proste pytanie: spośród ilu równie prawdopodobnych tokenów model efektywnie wybiera? Perplexity równy 7 oznacza, że model zachowuje się, jakby wybierał spośród 7 prawdopodobnych następnych tokenów w każdej pozycji. Perplexity równy 1 oznacza idealną predykcję.
Typowe pary Loss-Perplexity
| Loss | Perplexity | Jak to się odczuwa |
|---|---|---|
| 0.0 | 1.0 | Idealna predykcja |
| 1.0 | 2.7 | Wybór spośród ~3 prawdopodobnych tokenów |
| 2.0 | 7.4 | Terytorium końcowe SMMA ANDREA-12M |
| 3.0 | 20.1 | Rozsądny tekst, ale niepewny |
| 3.43 | 30.9 | Minimum ANDREA-120M v1 (przed polerowaniem) |
| 5.0 | 148 | Wczesne trening, uczenie rozkładu słownictwa |
| 9.04 | 8449 | Bazowa linia losowego wyboru dla słownictwa ANDREA-120M |
Perplexity umieszcza wartości straty w kontekście: strata 2.0 oznacza, że model efektywnie wybiera spośród ~7 tokenów, a nie z 8449.
Bazowy poziom losowości
Model, który nic nie wie i zgaduje równomiernie, przypisuje prawdopodobieństwo 1/V każdemu tokenowi, gdzie V = vocab_size:
p_uniform = 1 / V
loss = -log(1/V) = log(V)
Dla ANDREA-120M z V = 8449:
loss_uniform = ln(8449) ≈ 9.04
Dla ANDREA-12M z V = 2305:
loss_uniform = ln(2305) ≈ 7.74
Wszelka strata powyżej tej linii bazowej oznacza, że model działa gorzej niż losowy. Wszelka strata poniżej niej oznacza, że model czegoś się nauczył: koncentruje masę prawdopodobieństwa na mniejszym podzbiorze tokenów niż równomierny rozkład.
Odczytywanie wartości straty
Wygładzanie Szumu na Poziomie Kroków
Surowa Strata Jest Hałaśliwa
Strata na krok skacze w górę i w dół. Bandyt ANDREI wybiera różne źródło co 7-42 kroki; niektóre źródła (definicje słownikowe) dają łatwe straty; inne (akapity z Gutenberga) dają trudniejsze straty. Narysowanie surowej straty kroku w funkcji numeru kroku daje chaotyczny rozrzut.
Wygładzona Zmodyfikowana Średnia Zmienająca się (SMMA) tłumi szum & ujawnia trend. Proxy treningowy ANDREA oblicza SMMA jako:
SMMA[0] = loss[0]
SMMA[t] = (SMMA[t-1] * (N-1) + loss[t]) / N
Przy N = 100 (domyślne okno wygładzania ANDREA), każda nowa wartość SMMA miesza 99% poprzedniego SMMA z 1% nowej straty kroku. Nagłe skoki są pochłaniane; trwałe zmiany pojawiają się stopniowo.
Dlaczego nie zwykła średnia?
Prosta średnia krocząca z ostatnich 100 kroków wymaga przechowywania 100 wartości strat. SMMA przechowuje jedną wartość (bieżącą średnią) & jedną stałą (rozmiar okna). Niski koszt pamięciowy, trywialny obliczeniowo & wystarczająco gładki, by odczytać krzywą.
Różne wagi wygładzania odpowiadają na różne pytania:
- N = 10: śledzi krótkoterminowe zmiany; przydatne podczas przejść fazowych
- N = 100: domyślne ANDREA; śledzi średnioterminowy postęp
- N = 1000: tylko długoterminowy trend; przydatne na końcu treningu
Co śledzi ANDREA
Co 100 kroków proxy treningowy zapisuje loss.json z bieżącym SMMA, surową stratą, numerem kroku i podziałem na źródła. Dashboard na training.ai.unturf.com/dashboard odczytuje ten plik co 10 sekund. Zewnętrzni widzowie widzą postęp na żywo; dashboard jest tylko do odczytu.
Rzeczywista krzywa ANDREA-12M
Przepis, który osiągnął SMMA 2.0
| Kroki | Średnia strata | Notatki |
|---|---|---|
| 0--2.5K | 4.50 | Losowa inicjalizacja, wczesna faza uczenia |
| 2.5K--5K | 3.88 | Szybki spadek przez fazę struktury |
| 5K--10K | 3.30 | Zbliżanie się do granicy spójności |
| 10K--20K | 2.80 | Bandit znajduje optymalną mieszankę |
| 20K--25K | 2.40 | Płaskowyż --- niedobór danych |
| 25K--30K | 2.50 | Wprowadzone dane Hermes + restart LR |
| 30K--35K | 2.35 | Hermes zintegrowany, nowe minima |
| 35K--40K | 2.10 | Skupienie na 4-ramiennym, stroma descendencja |
| 40K--43.6K | 2.00 | Terytorium wiedzy, SMMA poniżej 2.0 |
Wyróżniają się trzy fazy:
1. Stroma wczesna descendencja (0-10K). Strata spada z 4.50 do 3.30, gdy model uczy się rozkładu słownictwa i podstawowej struktury tur. Bazowa linia losowej szansy ln(2305) ≈ 7.74 znajduje się wysoko nad tą krzywą; model szybko koncentruje masę prawdopodobieństwa, gdy osadzenia się ustabilizują.
2. Płaskowyż (20K-25K). Strata zatrzymuje się na 2.40. Bandytowi zabrakło miejsca na obecną mieszankę źródeł. Dane Hermes dodane w kroku 25K, plus restart rozgrzewki LR, przełamały płaskowyż.
3. Ostatni spadek (35K-43,6K). Program nauczania zawężony z 16 źródeł do 4 (hermes3-general + dictionary + gutenberg + chat). Stromszy spadek straty niż w pełnym bandycie wieloramiennym. Końcowy SMMA: 2.0.
ANDREA-120M v1: Ostrzegawcza krzywa
Taka sama kalkulacja słownictwa: ln(8449) ≈ 9.04. ANDREA-120M v1 osiągnął SMMA 3.43 w kroku 110K (jego minimum), a następnie rozbieżność:
| Kroki | EMA Loss | Trend |
|---|---|---|
| 26K--40K | 4.29 | Zbiegające się |
| 70K--85K | 3.60 | Najlepszy region |
| 85K--110K | 3.43 | Minimum |
| 110K--125K | 3.54 | Rozbiegające się |
| 140K--155K | 4.05 | Rozbiegające się |
| 155K--165K | 4.54 | Zakończone kolapsem |
Numerycznie rozsądne wartości straty na протяжении całego procesu (3.43 mieści się dobrze poniżej losowej linii bazowej 9.04). Ale próbki wykazywały kolaps powtórzeń: Budy Budy Budy Budy. Strata opowiadała mylącą historię; audyty próbek nie potwierdziły.
Wczesne zatrzymanie z bramkowaniem spójności w v2 (aktywność 78) dodało równoległy sygnał: różnorodność bigramów, różnorodność trigramów, obecność angielskich słów, różnorodność znaków. Gdy wszystkie cztery wyniki pozostają poniżej 30 przez 5 kolejnych próbek, trening automatycznie się zatrzymuje. Ten sygnał złapałby v1 na kroku 132K, oszczędzając 3,8 dnia obliczeń.
Co mówi ci każda faza
Lekcja 120M v1
Dwa Niezależne Sygnały
ANDREA-120M v1 osiągnęła SMMA 3.43 w kroku 110K. Numerycznie: 273× lepiej niż losowy przypadek (perplexity 31 vs rozmiar słownika 8449). Wygląda świetnie na krzywej.
Próbka w kroku 110K::
''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
Strata & spójność to niezależne sygnały. Niska strata oznacza, że model skutecznie koncentruje masę prawdopodobieństwa. Spójność oznacza, że model produkuje tekst, który ludzie mogą odczytać. Pierwsze nie implikuje drugiego.
Dlaczego istnieje ta luka
Model może obniżyć stratę poprzez:
1. Uczenie się rzeczywistych wzorców językowych (dobre): zgoda podmiotu z orzeczeniem, powszechne frazy, faktyczne skojarzenia.
2. Zapamiętywanie artefaktów strukturalnych (złe): wzorce wysokiej częstotliwości powtarzania, specyficzne dla zbioru danych dziwactwa, zdegenerowane atraktory.
Oba zmniejszają stratę. Pierwsze produkuje próbki, które podobają się ludziom. Drugie produkuje Budy Budy Budy Budy. Samo zadanie treningowe nie jest w stanie ich odróżnić.
ANDREA-120M v3 Polish: Gdzie strata & spójność się spotkały
Po polerowaniu v3 (od kroku 112K wzwyż), ANDREA-120M produkuje:
Step 112,584, loss 0.30, ppl 1::
> [extinction prompt]
< czarna pająkowata małpa montano żyje, papużka karolińska jest wymarła.
Oba fakty poprawne. Papużka karolińska uznana za wymarłą w 1939; czarna pająkowata małpa montano extant. Niska strata (0.30) I spójne faktyczne przypomnienie.
Krok 112 500, strata 1,94, ppl 7::
> Jak znaleźć nieaktualne pakiety w projekcie Python?
< Użyj `pip list --outdated` aby zobaczyć listę nieaktualnych pakietów pip...
Wyższa strata (1,94 → ppl 7), ale właściwe narzędzie wyłania się z danych treningowych. Płynność sformułowań nadal się rozwija na 56% etapie treningu.
Dyscyplina dwóch sygnałów
Współczesne potoki treningowe monitorują OBA:
- Krzywa straty. Mówi ci, czy model uczy się czegoś ilościowego.
- Audyt próbek. Mówi ci, czy to, czego model się nauczył, jest użyteczne.
v2 dodało zatrzymanie wczesne z bramkowaniem spójności (aktywność 78). polerowanie v3 było perturbacją curriculuma wyzwalaną przez audyty próbek, a nie przez wartości straty. Sama strata jest konieczna, ale nigdy niewystarczająca.