Fundamentos

Funções de loss e cross-entropy

Cross-entropy pontua a probabilidade que o modelo atribuiu ao que de fato aconteceu — e no Qwen3.8-27B isso é uma escolha entre 248.320 opções por token, onde a diferença entre um modelo bom e um ruim é um par de nats.

Atualizada em

01 · Conceito

Conceito

Um modelo acabou de ler o prefixo “A capital da França é” e precisa produzir um número que diga o quanto ele se saiu bem. Que número? “Certo ou errado” é quase inútil: não distingue um modelo que colocou a continuação correta em segundo lugar de um que a colocou em ducentésimo milésimo, e um sinalizador binário não tem gradiente para descer. A regra de pontuação precisa recompensar massa de probabilidade colocada no que de fato aconteceu, e precisa punir erros confiantes mais duramente do que erros incertos. Essa regra é a cross-entropy, e esta lição a torna concreta na escala em que o resto do curso trabalha.

Uma função de loss transforma a saída do modelo e o alvo num único escalar que a otimização consegue reduzir. Para classificação, a rede emite um logit ziz_i por classe — um score irrestrito, não uma probabilidade. O softmax converte os logits numa distribuição:

pi=ezijezj.p_i=\frac{e^{z_i}}{\sum_j e^{z_j}}.

Somar a mesma constante a todos os logits não muda nada, então só os scores relativos importam. Se a classe observada é yy, a cross-entropy one-hot é simplesmente

L=logpy.L=-\log p_y.

Probabilidade perto de um dá loss perto de zero; probabilidade perto de zero dá uma loss enorme. A assimetria é a parte útil.

Agora escale isso. No Qwen3.8-27B as classes são entradas do vocabulário, e há 248.320 delas (Qwen3.8-27B Model Card, 2026). Toda posição de token é uma classificação entre 248.320 opções, e a camada linear final que produz esses logits é uma matriz que mapeia o hidden state de 5120 dimensões para 248.320 saídas — cerca de 1,271 bilhão de parâmetros, mantidos separadamente da tabela de embeddings porque este modelo não ata os dois.

Descubra o que os números significam, passo a passo. Primeiro estabeleça a baseline: um modelo que não aprendeu nada espalha probabilidade uniformemente, dando a cada entrada 1/248,3201/248{,}320, então sua loss é log(1/248,320)=ln(248,320)12.42-\log(1/248{,}320)=\ln(248{,}320)\approx12.42 nats por token. Essa é a baseline uniforme, o custo da ignorância pura; não é um teto, porque atribuir ainda menos probabilidade ao token observado produz uma loss arbitrariamente maior. Agora suponha que o treinamento leve a loss média a 2,0 nats. Exponencie para obter a perplexidade: e2.07.4e^{2.0}\approx7.4. Leia isso como um fator de branching efetivo — em média o modelo se comporta como se estivesse escolhendo uniformemente entre uns sete ou oito candidatos em vez de um quarto de milhão. Os 12,42 nats de incerteza bruta foram cortados para 2,0.

Continue, porque a geometria dos nats não é linear. Chegar a 1,9 nats soa como diferença de arredondamento; em perplexidade isso é e1.96.7e^{1.9}\approx6.7, uma redução de quase dez por cento em candidatos efetivos. Cada nat removido divide o fator de branching por e2.72e\approx2.72. É por isso que curvas de loss que parecem planas no fim do treinamento ainda representam progresso real, e igualmente por que um décimo de nat vale discussão.

Aqui está o erro clássico, e ele sobrevive até em comparações publicadas. Dois modelos reportam cross-entropy média de 2,0 e 2,3 nats. É tentador concluir que o primeiro é melhor. Pode nem ser comparável: se o segundo modelo usa um tokenizador mais grosseiro, seus tokens carregam mais texto cada, então ele faz menos previsões, e mais difíceis, sobre o mesmo documento. Loss por token não é loss por unidade de texto. A correção é normalizar por algo independente do tokenizador — bits por byte ou bits por caractere, como a lição 1.7 preparou — antes de comparar entre vocabulários. Dentro de um mesmo tokenizador, loss por token é exatamente a moeda certa; entre tokenizadores, é um erro de categoria.

Estabilidade numérica é o outro ponto onde implementações erram. Exponenciar logits grandes causa overflow, e probabilidades minúsculas do softmax sofrem underflow para zero antes que um logaritmo possa ser tirado. Bibliotecas então fundem log-softmax com negative log-likelihood usando a identidade log-sum-exp, geralmente subtraindo antes o logit máximo. Dois modos de falha decorrem de ignorar isso: passar probabilidades já softmaxadas para uma primitiva que espera logits, o que silenciosamente aplica softmax duas vezes e achata a distribuição, e tirar o log de um zero materializado, o que gera um infinito que se propaga pelo batch inteiro.

Dois detalhes de redução merecem cuidado porque mudam o objetivo silenciosamente. A loss do batch é uma média ou soma sobre exemplos e, para modelos de linguagem, sobre posições de token; posições de padding e rótulos ignorados precisam de uma máscara para não contribuírem nem ao numerador nem ao denominador. Fazer a média por token pesa todo token igualmente, enquanto fazer a média por sequência pesa toda sequência igualmente — objetivos diferentes, e a diferença aparece sempre que os comprimentos variam. Alvos suaves mudam o problema de novo: com uma distribuição alvo qq a loss vira L=iqilogpiL=-\sum_i q_i\log p_i, que é como label smoothing e destilação de conhecimento funcionam. Essas são decisões de modelagem, não conveniências numéricas.

Uma auditoria prática usa logits que você consegue computar à mão. Verifique que elevar o logit da classe correta baixa a loss, que deslocar todos os logits por uma constante não muda nada, que posições ignoradas não contribuem, e que a média reportada usa o denominador que você pretendia. Essas quatro invariantes pegam softmax duplo, deslocamentos de rótulo por um, e bugs de padding que uma curva longa e suavemente decrescente esconderia por dias.

02 · Analogia

Analogia

Um instrutor de navegação não marca o motorista apenas como errado; a nota precisa dizer com que intensidade a rota escolhida conflitava com o destino. Cross-entropy é especialmente severa quando o motorista atribui quase nenhuma chance à estrada que se revela correta. Fazer a média das notas ao longo de várias viagens cria um objetivo de treinamento. A nota do instrutor molda a prática, mas não é a qualidade inteira da direção: conforto, segurança e justiça podem exigir medidas próprias.

03 · Explique de volta

Explique de volta

Explique logits, softmax e cross-entropy one-hot, e depois interprete uma loss média de treinamento de 2,0 nats para um modelo cujo vocabulário tem 248.320 entradas.

Mínimo: 80 caracteres e 15 palavras. Seu texto fica somente neste navegador.

Aguardando sua explicação.

Comparar com uma resposta-modelo

O modelo emite um logit irrestrito por entrada do vocabulário; o softmax converte logits relativos numa distribuição; para o token observado a loss é −log p. Um chute uniforme sobre 248.320 entradas custa ln(248.320) ≈ 12,42 nats, então esse é o piso do não fazer nada. Uma média de 2,0 nats corresponde a uma perplexidade de e² ≈ 7,4: em média o modelo estreitou uma escolha entre um quarto de milhão de opções para aproximadamente sete ou oito candidatos efetivos. A distância restante não é pequena — cada nat a mais removido é um fator de e no branching efetivo — e losses só são comparáveis entre modelos que compartilham o mesmo tokenizador.

04 · Teste seu entendimento

Teste seu entendimento

01A lição 2.3 descreveu ativações como curvas elemento a elemento aplicadas independentemente a cada coordenada. Por que o softmax não pertence a essa família?
Resposta e explicação

Seu denominador soma sobre todos os logits, então mudar uma coordenada muda todas as saídas — ele acopla o vetor inteiro — Esse acoplamento é exatamente o que faz das saídas uma distribuição que soma um, e é por isso que o softmax vive na loss em vez de entre camadas.

02Um modelo de linguagem com vocabulário de 248.320 entradas reporta uma loss média de 2,0 nats. O que isso significa concretamente?
Resposta e explicação

Perplexidade de cerca de 7,4 — o modelo estreitou uma escolha entre um quarto de milhão de opções para aproximadamente sete ou oito candidatos efetivos — Perplexidade é a exponencial da média da negative log-likelihood; um chute uniforme custaria ln(248.320) ≈ 12,42 nats em vez disso.

03Por que código de treinamento deve normalmente passar logits para uma primitiva de cross-entropy em vez de probabilidades?
Resposta e explicação

A computação combinada de log-softmax é numericamente estável, evitando overflow, underflow e log de zero — Materializar probabilidades minúsculas do softmax e depois tirar seu logaritmo perde precisão que a forma fundida preserva, e convida a aplicar softmax duas vezes.

Conclua o teach-back e acerte o quiz para finalizar a aula.

◎ · Marcador de evidência

Fontes

  1. Claude E. Shannon (1948). A Mathematical Theory of Communication.
  2. Qwen Team (2026). Qwen3.8-27B Model Card.