Quão Surpreso o Modelo Deve Ficar?
De Logits para Probabilidades
Após 12 blocos transformer, ANDREA-120M produz um vetor de vocab_size números por posição de token: os logits. Para ANDREA-120M, vocab_size = 8449, então cada posição gera 8449 logits. Logits são pontuações não normalizadas; alguns positivos, alguns negativos, sem restrição para somar 1.
O Softmax converte logits em uma distribuição de probabilidade:
p_i = exp(logit_i) / sum_j exp(logit_j)
Após o softmax, todos os 8449 números estão entre 0 e 1, somando 1. O modelo atribui probabilidade a cada token possível seguinte.
Perda de Entropia Cruzada
O treinamento requer uma função de perda: um número que mede o quão errada foi a predição do modelo para uma dada resposta correta. A entropia cruzada funciona para modelagem de linguagem:
loss_t = -log(p_correct_token_t)
Pegue a probabilidade prevista pelo modelo para o próximo token real (o que está nos dados de treinamento). Pegue o log negativo dessa probabilidade. Essa é a perda para uma posição.
Por que Log Negativo
Três propriedades fazem de -log(p) uma função de perda natural:
- -log(1) = 0: Quando o modelo prevê o token correto com 100% de confiança, a perda é zero.
- -log(0) = ∞: Quando o modelo atribui probabilidade zero ao token correto, a perda é infinita. (Na prática, o softmax nunca produz exatamente 0; a perda permanece finita, mas grande.)
- Monotônica: À medida que a probabilidade prevista para o token correto aumenta, a perda diminui suavemente.
Maior confiança na resposta correta = menor perda. O objetivo de treinamento é direto: maximizar a probabilidade prevista para o próximo token real.
Perda por Sequência
ANDREA treina em sequências de comprimento 1024 (a janela de contexto). Cada sequência produz 1024 previsões de próximo token. A perda da sequência é a média em todas as posições:
```
sequence_loss = mean(-log(p_correct_t)) for t in 0..1023
```
Então as perdas da sequência são calculadas como média através do lote (ANDREA-120M usa batch_size = 8). Um número escalar por passo de treinamento. Esse número é o que a curva de perda plota.
Calculando a Perda Para Uma Posição
Perplexidade = exp(perda)
Uma Escala Mais Amigável
Valores de perda como 2.0 ou 3.43 não transmitem imediatamente o que o modelo pode fazer. A perplexidade traduz a perda para uma escala mais intuitiva:
perplexidade = exp(perda)
A Perplexidade responde a uma pergunta clara: entre quantos tokens igualmente prováveis o modelo escolhe efetivamente? Uma perplexidade de 7 significa que o modelo se comporta como se estivesse escolhendo entre 7 tokens plausíveis seguintes em cada posição. Uma perplexidade de 1 significa previsão perfeita.
Pares Comuns de Loss-Perplexidade
| Loss | Perplexidade | Como parece |
|---|---|---|
| 0.0 | 1.0 | Previsão perfeita |
| 1.0 | 2.7 | Escolhendo entre ~3 tokens plausíveis |
| 2.0 | 7.4 | Território final SMMA do ANDREA-12M |
| 3.0 | 20.1 | Texto razoável, mas incerto |
| 3.43 | 30.9 | Mínimo do ANDREA-120M v1 (antes do polimento) |
| 5.0 | 148 | Treinamento inicial, aprendendo distribuição de vocabulário |
| 9.04 | 8449 | Linha de base de chance aleatória para o vocabulário do ANDREA-120M |
A Perplexidade coloca os valores de perda em contexto: uma perda de 2.0 significa que o modelo escolhe efetivamente entre ~7 tokens, não entre 8449.
A Linha de Base de Chance Aleatória
Um modelo que não sabe nada e adivinha uniformemente atribui probabilidade 1/V a cada token, onde V = vocab_size:
p_uniform = 1 / V
loss = -log(1/V) = log(V)
Para ANDREA-120M com V = 8449:
loss_uniform = ln(8449) ≈ 9,04
Para ANDREA-12M com V = 2305:
loss_uniform = ln(2305) ≈ 7.74
Qualquer perda acima dessa linha de base significa que o modelo tem desempenho pior que o aleatório. Qualquer perda abaixo dela significa que o modelo aprendeu algo: ele concentra a massa de probabilidade em um subconjunto menor de tokens do que o uniforme faria.
Lendo um Valor de Perda
Suavização de Ruído em Nível de Passo
Perda Bruta É Barulhenta
A perda por passo varia. O bandit do ANDREA escolhe uma fonte diferente a cada 7-42 passos; algumas fontes (definições de dicionário) produzem perdas fáceis; outras (parágrafos de gutenberg) produzem perdas mais difíceis. Plotar a perda bruta do passo contra o número do passo produz um espalhamento caótico.
Média Móvel Modificada Suavizada (SMMA) atenua o ruído & revela a tendência. O proxy de treinamento da ANDREA calcula a SMMA como:
SMMA[0] = loss[0]
SMMA[t] = (SMMA[t-1] * (N-1) + loss[t]) / N
Com N = 100 (janela de suavização padrão da ANDREA), cada novo valor de SMMA mistura 99% do SMMA anterior com 1% da nova perda do passo. Picos súbitos são absorvidos; mudanças sustentadas aparecem gradualmente.
Por Que Não Apenas Média Simples?
Uma média móvel simples sobre os últimos 100 passos requer armazenar 100 valores de perda. SMMA armazena um valor (a média em execução) & uma constante (o tamanho da janela). Barato em memória, computacionalmente trivial, & suave o suficiente para ler uma curva.
Diferentes pesos de suavização respondem a diferentes perguntas:
- N = 10: rastreia mudanças de curto prazo; útil durante transições de fase
- N = 100: padrão da ANDREA; rastreia progresso de médio prazo
- N = 1000: apenas tendência de longo prazo; útil no final do treinamento
O que a ANDREA Acompanha
A cada 100 passos, o proxy de treinamento escreve loss.json com o SMMA atual, perda bruta, número do passo e análises por fonte. O painel em training.ai.unturf.com/dashboard consulta este arquivo a cada 10 segundos. Visualizadores externos veem o progresso ao vivo; o painel é somente leitura.
Curva Real da ANDREA-12M
A Receita que Alcançou SMMA 2.0
| Passos | Perda Média | Notas |
|---|---|---|
| 0--2.5K | 4.50 | Início aleatório, aprendizado inicial |
| 2.5K--5K | 3.88 | Declínio rápido na fase de estrutura |
| 5K--10K | 3.30 | Aproximando-se do limite de coerência |
| 10K--20K | 2.80 | Bandit encontrando mistura ótima |
| 20K--25K | 2.40 | Platô --- escassez de dados |
| 25K--30K | 2.50 | Dados Hermes introduzidos + reinício de LR |
| 30K--35K | 2.35 | Hermes integrado, novos mínimos |
| 35K--40K | 2.10 | Foco em 4 braços, descida íngreme |
| 40K--43.6K | 2.00 | Território de conhecimento, SMMA abaixo de 2.0 |
Três fases se destacam:
1. Descida íngreme inicial (0-10K). A perda cai de 4.50 para 3.30 enquanto o modelo aprende a distribuição de vocabulário & estrutura básica de turnos. A linha de base de chance aleatória ln(2305) ≈ 7.74 fica bem acima dessa curva; o modelo concentra a massa de probabilidade rapidamente uma vez que os embeddings se estabilizam.
2. Platô (20K-25K). A perda estagna em 2.40. O bandido havia esgotado o espaço disponível com sua mistura atual de fontes. Dados Hermes sendo adicionados no passo 25K, mais um reinício quente de LR, quebraram o platô.
3. Descida final (35K-43.6K). Currículo reduzido de 16 fontes para 4 (hermes3-general + dictionary + gutenberg + chat). Declínio de perda mais acentuado que o bandit de braço completo. SMMA final: 2.0.
ANDREA-120M v1: Uma Curva de Advertência
Mesmo cálculo de vocabulário: ln(8449) ≈ 9.04. ANDREA-120M v1 alcançou SMMA 3.43 no passo 110K (seu mínimo), depois divergiu:
| Passos | Perda EMA | Tendência |
|---|---|---|
| 26K--40K | 4.29 | Convergindo |
| 70K--85K | 3.60 | Melhor região |
| 85K--110K | 3.43 | Mínimo |
| 110K--125K | 3.54 | Divergindo |
| 140K--155K | 4.05 | Divergindo |
| 155K--165K | 4.54 | Colapsado |
Valores de perda numericamente razoáveis ao longo de todo o treinamento (3.43 fica bem abaixo da linha de base aleatória de 9.04). Mas as amostras sofreram colapso por repetição: Budy Budy Budy Budy. A perda contou uma história enganosa; auditorias de amostras não.
O early stopping com coherence-gated da v2 (atividade 78) adicionou um sinal paralelo: diversidade de bigramas, diversidade de trigramas, presença de palavras em inglês, diversidade de caracteres. Quando todas as quatro pontuações ficam abaixo de 30 por 5 amostras consecutivas, o treinamento para automaticamente. Esse sinal teria capturado a v1 no passo 132K, economizando 3,8 dias de computação.
O Que Cada Fase Revela
A Lição 120M v1
Dois Sinais Independentes
ANDREA-120M v1 alcançou SMMA 3.43 no passo 110K. Numericamente: 273× melhor que o acaso aleatório (perplexidade 31 vs tamanho do vocabulário 8449). Parece ótimo na curva.
Amostra no passo 110K::
''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
Perda e coerência são sinais independentes. Baixa perda significa que o modelo concentra a massa de probabilidade de forma eficaz. Coerência significa que o modelo produz texto que humanos podem ler. A primeira não implica a segunda.
Por Que a Lacuna Existe
Um modelo pode reduzir a perda por:
1. Aprender padrões reais de linguagem (bom): concordância sujeito-verbo, frases comuns, associações factuais.
2. Memorizar artefatos estruturais (ruim): padrões de repetição de alta frequência, peculiaridades específicas do dataset, atratores degenerados.
Ambos reduzem a perda. O primeiro produz amostras que humanos gostam. O segundo produz Budy Budy Budy Budy. O objetivo de treinamento sozinho não pode distingui-los.
ANDREA-120M v3 Polish: Onde Perda & Coerência se Encontraram
Após o polimento v3 (passo 112K em diante), ANDREA-120M produz:
Passo 112.584, perda 0.30, ppl 1::
> [extinction prompt]
< a aranha-preta montano está viva, o periquito-da-carolina está extinto.
Ambos os fatos corretos. Periquito-da-carolina declarado extinto em 1939; macaco-aranha-preto extant. Baixa perda (0.30) E recall factual coerente.
Etapa 112.500, perda 1.94, ppl 7::
> Como encontro pacotes desatualizados em um projeto Python?
< Use `pip list --outdated` para ver a lista de pacotes pip...
Perda maior (1.94 → ppl 7), mas a ferramenta correta emerge dos dados de treinamento. Fluência na formulação ainda em desenvolvimento na marca de 56% do treinamento.
A Disciplina dos Dois Sinais
Pipelines de treinamento modernos monitoram AMBOS:
- Curva de perda. Diz se o modelo está aprendendo algo quantitativo.
- Auditoria de amostras. Diz se o que o modelo aprendeu é útil.
v2 adicionou parada antecipada com portão de coerência (atividade 78). O polimento v3 foi uma perturbação de currículo acionada por auditorias de amostras, não por valores de perda. A perda sozinha é necessária, mas nunca suficiente.