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

un

ospite
1 / ?
torna alle lezioni

Quanto Dovrebbe Sorprendersi il Modello?

Loss Pipeline: Logits To Cross-Entropy


Da Logits a Probabilità

Dopo 12 blocchi transformer, ANDREA-120M produce un vettore di vocab_size numeri per posizione di token: i logits. Per ANDREA-120M, vocab_size = 8449, quindi ogni posizione genera 8449 logits. I logits sono punteggi non normalizzati; alcuni positivi, alcuni negativi, senza vincolo di sommare a 1.


Softmax converte i logit in una distribuzione di probabilità:


p_i = exp(logit_i) / sum_j exp(logit_j)

Dopo softmax, tutti i 8449 numeri si trovano tra 0 e 1, sommando a 1. Il modello assegna una probabilità a ogni possibile token successivo.


Cross-Entropy Loss

L'addestramento richiede una funzione di perdita: un numero che misura quanto sbagliata sia stata la previsione del modello per una data risposta corretta. La cross-entropy funziona per il language modeling:


loss_t = -log(p_correct_token_t)

Prendi la probabilità prevista dal modello per il token successivo effettivo (quello nei dati di addestramento). Prendi il log negativo di quella probabilità. Questa è la perdita per una posizione.


Perché Log Negativo

Tre proprietà rendono -log(p) una funzione di perdita naturale:


- -log(1) = 0: Quando il modello prevede il token corretto con il 100% di confidenza, la perdita è zero.

- -log(0) = ∞: Quando il modello assegna probabilità zero al token corretto, la perdita è infinita. (In pratica, softmax non genera mai esattamente 0; la perdita rimane finita ma grande.)

- Monotonica: Man mano che la probabilità prevista per il token corretto aumenta, la perdita diminuisce in modo fluido.


Maggiore confidenza sulla risposta corretta = perdita minore. L'obiettivo di addestramento è semplice: massimizzare la probabilità prevista per il token successivo effettivo.


Perdita Per-Sequenza

ANDREA si addestra su sequenze di lunghezza 1024 (la finestra di contesto). Ogni sequenza produce 1024 previsioni del token successivo. La perdita della sequenza è la media su tutte le posizioni:


sequence_loss = mean(-log(p_correct_t)) for t in 0..1023

Le perdite sequenziali vengono poi mediate sul batch (ANDREA-120M usa batch_size = 8). Un singolo numero scalare per step di training. Quel numero è ciò che viene plottato nella curva di loss.

Calcolo della Loss per una Posizione

A una posizione di training, ANDREA-120M produce probabilità softmax di 0.4 per il token successivo effettivo (gli altri token ricevono il restante 0.6). Calcola la cross-entropy loss per questa singola posizione. Mostra la formula e l'aritmetica. Poi afferma in una frase se questa rappresenta una previsione sicura o incerta.

Perplessità = exp(loss)

Una Scala Più Amichevole

Valori di loss come 2.0 o 3.43 non trasmettono immediatamente cosa può fare il modello. La perplessità traduce il loss su una scala più intuitiva:


perplessità = exp(loss)

Perplexity risponde a una domanda chiara: tra quanti token altrettanto probabili sceglie effettivamente il modello? Una perplexity di 7 significa che il modello si comporta come se stesse scegliendo tra 7 token successivi plausibili in ogni posizione. Una perplexity di 1 significa previsione perfetta.


Coppie comuni Loss-Perplexity


LossPerplexityCome si sente
0.01.0Previsione perfetta
1.02.7Scelta tra ~3 token plausibili
2.07.4Territorio finale SMMA di ANDREA-12M
3.020.1Testo ragionevole ma incerto
3.4330.9Minimo di ANDREA-120M v1 (prima della rifinitura)
5.0148Addestramento iniziale, apprendimento distribuzione vocabolario
9.048449Baseline casuale per il vocabolario di ANDREA-120M

La perplessità contestualizza i valori di loss: una loss di 2.0 significa che il modello sceglie efficacemente tra ~7 token, non tra 8449.


Il Baseline del Caso Casuale

Un modello che non sa nulla e indovina uniformemente assegna probabilità 1/V a ogni token, dove V = vocab_size:


p_uniform = 1 / V
loss      = -log(1/V) = log(V)

Per ANDREA-120M con V = 8449:


loss_uniform = ln(8449) ≈ 9.04

Per ANDREA-12M con V = 2305:


loss_uniform = ln(2305) ≈ 7.74

Qualsiasi loss al di sopra di questa baseline significa che il modello performa peggio di un caso casuale. Qualsiasi loss al di sotto significa che il modello ha imparato qualcosa: concentra la massa di probabilità su un sottoinsieme più piccolo di token rispetto a una distribuzione uniforme.

Leggere un Valore di Loss

ANDREA-120M v1 ha raggiunto il suo minimo di loss EMA di 3.43 al passo 110K (prima del collasso). Calcola: (a) la perplexity al loss 3.43; (b) quante volte meglio del baseline del caso casuale (ln(8449) ≈ 9.04) rappresenta questo valore di loss, espresso come un rapporto di perplexity. Mostra i tuoi calcoli.

Livellamento del Rumore a Livello di Step

Il Loss Grezzo È Rumoroso

Il loss per step rimbalza intorno. Il bandit di ANDREA sceglie una fonte diversa ogni 7-42 step; alcune fonti (definizioni di dizionario) producono loss facili; altre (paragrafi di Gutenberg) producono loss più difficili. Plottare il loss grezzo per step contro il numero di step produce uno scatter caotico.


Media Mobile Modificata Smussata (SMMA) attenua il rumore e rivela la tendenza. Il proxy di addestramento di ANDREA calcola la SMMA come:


SMMA[0]  = loss[0]
SMMA[t]  = (SMMA[t-1] * (N-1) + loss[t]) / N

Con N = 100 (finestra di smussamento predefinita di ANDREA), ogni nuovo valore SMMA mescola il 99% della SMMA precedente con l'1% della nuova perdita del passo. I picchi improvvisi vengono assorbiti; gli spostamenti sostenuti appaiono gradualmente.


Perché non solo la media semplice?

Una media mobile semplice sugli ultimi 100 step richiede di memorizzare 100 valori di loss. SMMA memorizza un solo valore (la media mobile) & una sola costante (la dimensione della finestra). Poco consumo di memoria, computazionalmente banale, & abbastanza liscia da leggere una curva.


Diversi pesi di smoothing rispondono a diverse domande:


- N = 10: traccia i cambiamenti a breve termine; utile durante le transizioni di fase

- N = 100: default di ANDREA; traccia i progressi a medio termine

- N = 1000: solo il trend a lungo termine; utile alla fine dell'addestramento


Cosa Traccia ANDREA

Ogni 100 step, il proxy di addestramento scrive loss.json con l'SMMA corrente, la loss grezza, il numero di step e le scomposizioni per sorgente. La dashboard su training.ai.unturf.com/dashboard interroga questo file ogni 10 secondi. Gli spettatori esterni vedono i progressi in tempo reale; la dashboard è in sola lettura.

La Curva Reale di ANDREA-12M

La Ricetta Che Ha Raggiunto SMMA 2.0


StepLoss MediaNote
0--2.5K4.50Init casuale, apprendimento iniziale
2.5K--5K3.88Calo rapido nella fase strutturale
5K--10K3.30Avvicinamento al confine di coerenza
10K--20K2.80Bandit trova mix ottimale
20K--25K2.40Plateau --- carenza di dati
25K--30K2.50Dati Hermes introdotti + riavvio LR
30K--35K2.35Hermes integrato, nuovi minimi
35K--40K2.10Focus su 4-arm, discesa ripida
40K--43.6K2.00Territorio di conoscenza, SMMA sotto 2.0

Tre fasi spiccano:


1. Discesa ripida iniziale (0-10K). La loss scende da 4.50 a 3.30 mentre il modello impara la distribuzione del vocabolario e la struttura base dei turni. Il baseline di probabilità casuale ln(2305) ≈ 7.74 si trova molto al di sopra di questa curva; il modello concentra rapidamente la massa di probabilità una volta stabilizzati gli embedding.


2. Plateau (20K-25K). La loss si blocca a 2.40. Il bandit aveva esaurito il margine di miglioramento con la sua miscela attuale di fonti. I dati Hermes vengono aggiunti al passo 25K, più un riavvio caldo dell'LR, che ha rotto il plateau.


3. Discesa finale (35K-43.6K). Curriculum ristretto da 16 fonti a 4 (hermes3-general + dictionary + gutenberg + chat). Declino della loss più ripido rispetto al full-arm bandit. SMMA finale: 2.0.


ANDREA-120M v1: Una curva cautelativa

Stesso calcolo del vocabolario: ln(8449) ≈ 9.04. ANDREA-120M v1 ha raggiunto SMMA 3.43 al passo 110K (il suo minimo), poi è divergente:


PassiEMA LossTrend
26K--40K4.29In convergenza
70K--85K3.60Migliore regione
85K--110K3.43Minimo
110K--125K3.54In divergenza
140K--155K4.05In divergenza
155K--165K4.54Collassato

Valori di loss numericamente ragionevoli per tutto l’addestramento (3.43 è ben al di sotto della baseline casuale di 9.04). Ma i campioni erano in collasso di ripetizione: Budy Budy Budy Budy. La loss ha raccontato una storia fuorviante; gli audit sui campioni no.


Il coherence-gated early stopping di v2 (attività 78) ha aggiunto un segnale parallelo: diversità bigram, diversità trigram, presenza di parole inglesi, diversità dei caratteri. Quando tutti e quattro i punteggi rimangono sotto 30 per 5 campioni consecutivi, l'addestramento si auto-interrompe. Questo segnale avrebbe catturato v1 al passo 132K, risparmiando 3,8 giorni di calcolo.

Cosa Ti Dice Ogni Fase

Osservando la curva di loss di ANDREA-12M (4.50 → 3.30 → 2.40 plateau → 2.00 finale), indica quale fase mostra il modello che impara la distribuzione del vocabolario, quale fase indica che il bandit ha esaurito il margine di miscela multi-fonte, & quale fase riflette un focus sul curriculum ristretto. Una frase per fase, riferendoti a intervalli di passi specifici.

La lezione 120M v1

Due Segnali Indipendenti

ANDREA-120M v1 ha raggiunto SMMA 3.43 al passo 110K. Numericamente: 273× meglio della casualità (perplessità 31 vs dimensione vocabolario 8449). Sembra ottimo sulla curva.


Campione al passo 110K::


''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '

Loss e coerenza sono segnali indipendenti. Un basso loss significa che il modello concentra efficacemente la massa di probabilità. Coerenza significa che il modello produce testo che gli umani possono leggere. Il primo non implica il secondo.


Perché Esiste il Divario

Un modello può ridurre il loss tramite:


1. Imparare pattern linguistici reali (buono): accordo soggetto-verbo, frasi comuni, associazioni fattuali.

2. Memorizzare artefatti strutturali (cattivo): pattern di ripetizione ad alta frequenza, peculiarità specifiche del dataset, attrattori degeneri.


Entrambi riducono la loss. Il primo produce campioni che piacciono agli umani. Il secondo produce Budy Budy Budy Budy. L'obiettivo di addestramento da solo non può distinguerli.


ANDREA-120M v3 Polish: Dove Loss & Coerenza Si Incontrano

Dopo il polish v3 (dal passo 112K in poi), ANDREA-120M produce:


Passo 112.584, loss 0.30, ppl 1::


> [extinction prompt]
< La *black spider montano* è viva, il *carolina parakeet* è estinto.

Entrambi i fatti corretti. Carolina parakeet dichiarato estinto nel 1939; black spider monkey esistente. Bassa perdita (0.30) E richiamo fattuale coerente.


Passo 112.500, loss 1.94, ppl 7::


> Come trovo i pacchetti obsoleti in un progetto Python?
< Usa pip list --outdated names per vedere l'elenco dei pacchetti pip...

Loss più alto (1.94 → ppl 7) ma emerge lo strumento giusto dai dati di addestramento. La fluidità della frase si sta ancora sviluppando al 56% del punto di addestramento.


La Disciplina dei Due Segnali

I pipeline di addestramento moderni monitorano ENTRAMBI:


- Curva di loss. Ti dice se il modello sta imparando qualcosa di quantitativo.

- Audit di campioni. Ti dice se ciò che il modello ha imparato è utile.


v2 ha aggiunto lo stopping anticipato con gate di coerenza (attività 78). La lucidatura v3 è stata una perturbazione del curriculum innescata da audit di campioni, non da valori di loss. Il loss da solo è necessario ma mai sufficiente.

Diagnosi di una Esecuzione Ipotetica

Una nuova esecuzione di addestramento mostra una perdita SMMA in calo da 8.0 → 3.5 → 2.8 in 100K step. Audit di campioni allo step 100K mostrano: diversità bigram 12 (bassa), diversità trigram 8 (bassa), presenza di parole inglesi 18 (alta), diversità caratteri 7 (alta). Cosa sta probabilmente facendo il modello? L'addestramento dovrebbe continuare, fermarsi o cambiare direzione? Giustifica la tua risposta in 3-4 frasi.