English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

gość
1 / ?
powrót do lekcji

Jak Zaskoczony Powinien Być Model?

Loss Pipeline: Logits To Cross-Entropy


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

W jednej pozycji treningowej ANDREA-120M produkuje prawdopodobieństwa softmax równe 0.4 dla rzeczywistego następnego tokena (pozostałe tokeny otrzymały pozostałe 0.6). Oblicz entropię krzyżową dla tej pojedynczej pozycji. Pokaż formułę i arytmetykę. Następnie stwierdź w jednym zdaniu, czy jest to przewidywanie pewne, czy niepewne.

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


LossPerplexityJak to się odczuwa
0.01.0Idealna predykcja
1.02.7Wybór spośród ~3 prawdopodobnych tokenów
2.07.4Terytorium końcowe SMMA ANDREA-12M
3.020.1Rozsądny tekst, ale niepewny
3.4330.9Minimum ANDREA-120M v1 (przed polerowaniem)
5.0148Wczesne trening, uczenie rozkładu słownictwa
9.048449Bazowa 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

ANDREA-120M v1 osiągnęła minimum EMA straty na poziomie 3.43 w kroku 110K (przed załamaniem). Oblicz: (a) perpleksję przy stracie 3.43; (b) ile razy lepsza od linii bazowej losowego szansy (ln(8449) ≈ 9.04) jest ta wartość straty, wyrażona jako stosunek perpleksji. Pokaż obliczenia.

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 strataNotatki
0--2.5K4.50Losowa inicjalizacja, wczesna faza uczenia
2.5K--5K3.88Szybki spadek przez fazę struktury
5K--10K3.30Zbliżanie się do granicy spójności
10K--20K2.80Bandit znajduje optymalną mieszankę
20K--25K2.40Płaskowyż --- niedobór danych
25K--30K2.50Wprowadzone dane Hermes + restart LR
30K--35K2.35Hermes zintegrowany, nowe minima
35K--40K2.10Skupienie na 4-ramiennym, stroma descendencja
40K--43.6K2.00Terytorium 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ść:


KrokiEMA LossTrend
26K--40K4.29Zbiegające się
70K--85K3.60Najlepszy region
85K--110K3.43Minimum
110K--125K3.54Rozbiegające się
140K--155K4.05Rozbiegające się
155K--165K4.54Zakoń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

Patrząc na krzywą straty ANDREA-12M (4.50 → 3.30 → 2.40 plateau → 2.00 final), podaj, która faza pokazuje uczenie się modelu rozkładu słownictwa, która faza wskazuje, że bandyta wyczerpał zapas mieszania źródeł, oraz która faza odzwierciedla skupienie na zawężonym programie nauczania. Jedno zdanie na fazę, odwołując się do konkretnych zakresów kroków.

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.

Diagnozowanie hipotetycznego uruchomienia treningu

Nowe uruchomienie treningu pokazuje spadek straty SMMA z 8.0 → 3.5 → 2.8 w ciągu 100K kroków. Próbki audytów w kroku 100K pokazują: różnorodność bigramów 12 (niska), różnorodność trigramów 8 (niska), obecność angielskich słów 18 (wysoka), różnorodność znaków 7 (wysoka). Co model prawdopodobnie robi? Czy trening powinien być kontynuowany, zatrzymany czy zmieniony? Uzasadnij swoją odpowiedź w 3-4 zdaniach.