Reading the Math in AI Papers · Parte 4 de 4

Ler a ELBO, a perda de difusão, pass@k e leis de escala

Tradução automática

Este artigo foi traduzido automaticamente a partir da versão original em inglês.

Esta parte explica o que dois modelos generativos aprendem e o que quatro medidas comuns nos dizem. Destina-se a engenheiros que querem compreender a ELBO e a perda de difusão ou comparar artigos que apresentam pass@k, perplexidade, complexidade computacional e leis de escala. Os diagramas mostram os cálculos; as equações identificam exatamente o que é otimizado ou contado.

As secções sobre modelos generativos desenvolvem-se em sequência. As secções sobre métricas podem ser lidas de forma independente. A Parte 1 fornece uma referência de notação, se precisar. Todos os logaritmos aqui são naturais.

Modelos generativos: a ELBO e a difusão

Um modelo de linguagem pode atribuir uma probabilidade a uma resposta fornecida, token a token. Outros modelos generativos introduzem variáveis ocultas: valores intermédios que ajudam a gerar dados, mas que não existem no dataset de treino. Calcular a probabilidade de uma imagem pode então exigir uma média sobre demasiados valores ocultos possíveis. Os dois métodos seguintes treinam sem calcular essa média exatamente.

ELBO: um limite inferior que pode calcular

Um autoencoder variacional (VAE) gera uma imagem a partir de um vetor latente zz: uma lista de números. Um exemplo simples de duas dimensões é z=(−0.4,1.2)z=(-0.4,1.2). Estes números são entradas de uma rede neuronal, não instruções de uma linguagem de programação. O vetor é latente porque o dataset de treino contém imagens, mas não fornece os valores zz correspondentes.

Para gerar uma imagem no VAE padrão aqui descrito, extraia cada elemento de zz de forma independente de uma distribuição normal com média 0 e desvio-padrão 1. Extrair valores segundo uma distribuição chama-se amostragem. Esta distribuição fixa sobre vetores é a distribuição a priori, escrita p(z)p(z).

O descodificador é uma rede neuronal treinada. Os seus pesos aprendidos transformam zz nos parâmetros de uma distribuição sobre valores de píxeis. Por exemplo, um descodificador para imagens de 28 por 28 cujos píxeis são 0 ou 1 pode produzir 784 probabilidades, uma por píxel. Cada probabilidade indica a possibilidade de o respetivo píxel ser 1. Amostrar esses valores de píxeis produz uma imagem. Os elementos do vetor determinam as probabilidades dos píxeis através da rede treinada; não são píxeis. Kingma e Welling, §3 e Apêndice C, descrevem esta configuração padrão.

Durante o treino, uma imagem xx vem do dataset. Um codificador, outra rede neuronal, recebe esta imagem como entrada. Na configuração gaussiana usada aqui, prevê uma média e um desvio-padrão para cada elemento de zz. Em conjunto, definem qϕ(z∣x)q_\phi(z\mid x), uma distribuição sobre vetores latentes para esta imagem. Amostramos zz dessa distribuição em vez da distribuição a priori. O descodificador atribui depois a probabilidade pθ(x∣z)p_\theta(x\mid z) à imagem original usando o vetor amostrado.

O treino recompensa o descodificador por atribuir um logaritmo de probabilidade alto à imagem observada. Também subtrai a divergência KL: uma medida não negativa da diferença entre a distribuição de vetores do codificador e a distribuição a priori fixa. O diagrama mostra os dois termos e a origem diferente dos vetores durante a geração.

O treino do VAE começa com uma imagem observada, usa um codificador para amostrar um vetor latente numérico e pede ao descodificador que avalie essa mesma imagem. Uma segunda comparação mantém a distribuição de vetores do codificador próxima da distribuição a priori fixa. A geração amostra um vetor diretamente da distribuição a priori e usa o descodificador treinado para obter uma distribuição de píxeis, da qual amostra uma nova imagem.O treino do VAE começa com uma imagem observada, usa um codificador para amostrar um vetor latente numérico e pede ao descodificador que avalie essa mesma imagem. Uma segunda comparação mantém a distribuição de vetores do codificador próxima da distribuição a priori fixa. A geração amostra um vetor diretamente da distribuição a priori e usa o descodificador treinado para obter uma distribuição de píxeis, da qual amostra uma nova imagem.

A pontuação de treino tem dois termos:

L(x)=Eqϕ(z∣x)[log⁡pθ(x∣z)]−DKL(qϕ(z∣x)∥p(z)).\begin{aligned} \mathcal L(x)&=\mathbb E_{q_\phi(z\mid x)}[\log p_\theta(x\mid z)]\\ &\quad-D_{\mathrm{KL}}(q_\phi(z\mid x)\Vert p(z)). \end{aligned}

O primeiro termo calcula a média do logaritmo da probabilidade da imagem nos vetores amostrados do codificador. O segundo é a penalização KL. Os símbolos ϕ\phi e θ\theta representam os parâmetros aprendidos do codificador e do descodificador. As duas redes aprendem a aumentar esta pontuação; uma implementação que minimiza uma perda usa o seu negativo.

Este é o limite inferior da log-evidência, ou ELBO. A evidência pθ(x)p_\theta(x) é a probabilidade da imagem observada segundo o modelo, calculada pela média sobre todos os vetores latentes possíveis. Kingma e Welling, §2.2, equações (1)–(3), relacionam-na com a pontuação de treino:

log⁡pθ(x)=L(x)+DKL(qϕ(z∣x)∥pθ(z∣x))≥L(x).\begin{aligned} &\log p_\theta(x)=\mathcal L(x)\\ &\quad+D_{\mathrm{KL}}\bigl(q_\phi(z\mid x)\Vert p_\theta(z\mid x)\bigr)\\ &\geq\mathcal L(x). \end{aligned}

Aqui, pθ(z∣x)p_\theta(z\mid x) é a verdadeira distribuição a posteriori: a distribuição do modelo sobre vetores latentes dada esta imagem. O termo KL não negativo é a diferença entre a log-evidência e a ELBO; vale zero quando o codificador reproduz essa distribuição a posteriori. Esta identidade explica o limite. A penalização de treino calculável do diagrama compara antes o codificador com a distribuição a priori conhecida p(z)p(z), pelo que um passo de treino não exige a distribuição a posteriori desconhecida.

Uma ELBO mais alta, por si só, não prova que o descodificador melhorou. Um codificador melhor pode tornar o limite mais preciso sem alterar o descodificador. Além disso, o limite aplica-se à esperança exata: uma estimativa com poucos vetores amostrados pode exceder a log-evidência numa amostragem individual. A análise detalhada da ELBO deriva o limite e verifica-o com um exemplo resolvido.

DDPM: prever o ruído que foi adicionado

O DDPM usa versões ruidosas de uma imagem como variáveis ocultas. Durante o treino, obtém uma imagem limpa do dataset e amostra ruído aleatório: um número de uma normal padrão para cada coordenada da imagem. Escolhe aleatoriamente um passo tt de um esquema de ruído fixo, que define as proporções de imagem e ruído a misturar. A rede recebe esta imagem corrompida e tt; a sua tarefa é prever a amostra de ruído que acabámos de adicionar.

A geração usa a rede treinada repetidamente. Começa com ruído aleatório, prevê o ruído no nível atual e usa essa previsão para dar um pequeno passo de remoção de ruído. Os pesos mantêm-se fixos durante este processo. O treino tem, assim, um alvo conhecido que fornece o erro usado para atualizar a rede; a geração usa a rede aprendida para produzir uma imagem em muitos passos.

Durante o treino, uma imagem limpa e ruído conhecido são combinados num nível escolhido aleatoriamente. A rede prevê o ruído adicionado e compara a previsão com a amostra conhecida. Durante a geração, o processo começa com ruído e usa repetidamente a rede para obter imagens com menos ruído.Durante o treino, uma imagem limpa e ruído conhecido são combinados num nível escolhido aleatoriamente. A rede prevê o ruído adicionado e compara a previsão com a amostra conhecida. Durante a geração, o processo começa com ruído e usa repetidamente a rede para obter imagens com menos ruído.

Escrever a entrada ruidosa como xtx_t torna a perda mais fácil de ler:

xt=αˉtx0+1−αˉtϵLsimple=Et,x0,ϵ[∥ϵ−ϵθ(xt,t)∥2].\begin{aligned} x_t&=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\epsilon\\ L_{\mathrm{simple}}&=\mathbb E_{t,x_0,\epsilon}\left[\lVert\epsilon-\epsilon_\theta(x_t,t)\rVert^2\right]. \end{aligned}

x0x_0 é uma imagem de treino limpa, tt é um passo escolhido aleatoriamente e ϵ\epsilon é uma nova amostra de ruído de uma normal padrão. A rede ϵθ\epsilon_\theta, com parâmetros aprendidos θ\theta, prevê essa amostra. O quadrado da norma soma os quadrados dos erros de previsão nas coordenadas da imagem; a esperança calcula a média sobre imagens, passos e amostras de ruído.

O esquema fixo define αs=1−βs\alpha_s=1-\beta_s e αˉt=∏s=1tαs\bar\alpha_t=\prod_{s=1}^{t}\alpha_s, onde βs\beta_s é a variância do ruído adicionado no passo ss. A barra representa este produto, não uma média. Define os dois coeficientes da mistura no diagrama: αˉt\sqrt{\bar\alpha_t} para a imagem e 1−αˉt\sqrt{1-\bar\alpha_t} para o ruído. Perto de 1 significa sobretudo imagem; perto de 0 significa sobretudo ruído.

O treino pode construir xtx_t diretamente; não precisa de executar todos os passos de ruído anteriores. O DDPM original usa 1000 níveis e amostra uniformemente os passos de treino. Veja a equação (4), a equação (14) e o Algoritmo 1 ou a análise detalhada do DDPM.

O artigo deriva um limite variacional relacionado com a ELBO e altera depois os pesos dos seus termos para obter esta perda prática. A perda simplificada não é, em si, o limite de verosimilhança original. Durante a geração, o Algoritmo 2 ajusta a escala da imagem atual, subtrai um múltiplo do ruído previsto e, exceto no último passo, adiciona ruído novo. Não se limita a subtrair a previsão uma vez para recuperar uma imagem limpa.

Métricas e afirmações sobre custos

Um objetivo de treino, uma pontuação de avaliação e uma estimativa de custo respondem a perguntas diferentes. As próximas secções mostram o que cada número apresentado conta e o que tem de se manter fixo para uma comparação ser útil.

Pass@k: a probabilidade de pelo menos uma de k amostras passar

pass@k pergunta se pelo menos um de kk programas gerados passa os testes. Permite várias tentativas; não significa que a primeira resposta do modelo esteja correta.

O artigo do Codex amostra nn programas de forma independente para cada problema e conta os cc que passam. Considera depois todos os conjuntos possíveis de kk amostras. Subtraia de um a fração de conjuntos que contêm apenas falhas:

pass@⁡k^=1−(n−ck)(nk).\widehat{\operatorname{pass@}k}=1-\frac{\binom{n-c}{k}}{\binom nk}.

A notação (nk)\binom nk conta as formas de escolher kk elementos entre nn sem reposição. Esta é a estimativa para um problema; a pontuação apresentada calcula a sua média nos vários problemas. Com cinco amostras, duas aprovadas e três reprovadas, há dez pares. Só três pares contêm duas falhas, pelo que a estimativa de pass@2 é 1−3/10=0.71-3/10=0.7.

A grelha mostra esses dez pares neste exemplo hipotético. Os cinco programas respondem ao mesmo problema e são executados com os mesmos testes. Um par tem sucesso assim que um dos seus dois programas passa.

Cinco programas amostrados têm as etiquetas A a E. A e B passam; C, D e E falham. A grelha triangular superior contém os dez pares possíveis. Sete pares incluem A ou B e têm sucesso. Só CD, CE e DE não contêm nenhum programa aprovado.Cinco programas amostrados têm as etiquetas A a E. A e B passam; C, D e E falham. A grelha triangular superior contém os dez pares possíveis. Sete pares incluem A ou B e têm sucesso. Só CD, CE e DE não contêm nenhum programa aprovado.

Use este estimador com contagens inteiras 0≤c≤n0\leq c\leq n e 1≤k≤n1\leq k\leq n. Se menos de kk amostras falham, cada conjunto contém uma amostra aprovada e a estimativa é 1. O atalho tentador 1−(1−c/n)k1-(1-c/n)^k é enviesado; dá 0,64 neste exemplo. O artigo do Codex, §2.1 e Figura 3, fornece o estimador e uma implementação numericamente estável; a análise detalhada explica por que funciona.

Compare o mesmo kk, problemas, testes, prompts e configurações de geração. Passar os testes não estabelece correção para todas as entradas. Um sistema em produção também precisa de uma forma de selecionar um candidato aprovado, como executar esses testes; gerar várias respostas, por si só, não identifica a boa.

Perplexidade: o número efetivo de escolhas por token

A perplexidade avalia as probabilidades que um modelo de linguagem atribui aos tokens seguintes reais de um texto fornecido. Em cada posição, dê ao modelo o texto anterior, obtenha as suas probabilidades para os tokens seguintes possíveis e leia a probabilidade do token que realmente se segue. Não é necessária uma resposta gerada. A pontuação converte o logaritmo negativo médio da probabilidade numa escala mais interpretável:

PPL⁡=exp⁡(−1T∑t=1Tlog⁡pθ(yt∣y<t)).\operatorname{PPL}=\exp\left(-\frac1T\sum_{t=1}^{T}\log p_\theta(y_t\mid y_{<t})\right).

TT é o número de tokens, yty_t é o token observado e y<ty_{<t} é o contexto que o precede. Se o modelo atribui a cada token observado probabilidade 1/41/4, a perplexidade é 4. Se as probabilidades diferem, a pontuação usa a sua média geométrica. As probabilidades 0,5, 0,2 e 0,1 dão perplexidade de cerca de 4,64: a mesma pontuação que atribuir a cada token probabilidade 1/4.641/4.64.

Os gráficos usam probabilidades inventadas para três posições sucessivas. Cada barra vem de uma previsão diferente do token seguinte, pelo que as barras não precisam de somar 1. O gráfico da direita substitui-as por um valor constante; os produtos coincidem, logo as perplexidades também.

Cada barra é a probabilidade do token seguinte real numa posição distinta do texto. Dois gráficos comparam probabilidades inventadas 0,5, 0,2 e 0,1 com três probabilidades iguais de cerca de 0,215. Os dois produtos são 0,01 e as duas perplexidades são cerca de 4,64. A linha tracejada comum marca a média geométrica das probabilidades.Cada barra é a probabilidade do token seguinte real numa posição distinta do texto. Dois gráficos comparam probabilidades inventadas 0,5, 0,2 e 0,1 com três probabilidades iguais de cerca de 0,215. Os dois produtos são 0,01 e as duas perplexidades são cerca de 4,64. A linha tracejada comum marca a média geométrica das probabilidades.

Um valor menor é melhor para o mesmo texto de avaliação, tokenizador e procedimento de contexto. Significa que o modelo atribuiu maior probabilidade ao texto observado, não que as respostas que gera sejam mais úteis ou corretas. Os tokenizadores dividem o texto de formas diferentes, e o tratamento da janela de contexto altera as probabilidades. O guia de perplexidade da Hugging Face explica estas condições de comparação.

Big-O: como o custo cresce com o comprimento da sequência

A autoatenção transforma o vetor atual de cada token numa consulta, numa chave e num valor usando matrizes aprendidas. Uma comparação consulta–chave avalia com que intensidade uma posição deve usar outra. Estas pontuações tornam-se pesos para combinar os valores, como na definição de atenção do Transformer, §3.2.

Para uma cabeça de atenção e LL tokens, comparar cada consulta com cada chave produz uma tabela de pontuações L×LL\times L. Duplicar o comprimento da sequência LL torna essa tabela quatro vezes maior. Se cada comparação é um produto interno de comprimento dd, a aritmética das pontuações cresce como O(L2d)O(L^2d). Big-O descreve um limite superior assintótico; omite constantes e, por si só, não prevê o tempo de execução.

As grelhas mostram atenção completa: cada posição pode usar todas as posições. Uma sequência mais longa acrescenta tanto linhas de consultas como colunas de chaves. Cada célula é uma pontuação; implementações como FlashAttention podem calcular as pontuações sem guardar toda a grelha de uma vez. A atenção causal exclui posições futuras, mas o número de pares permitidos continua a crescer quadraticamente.

Uma grelha quatro por quatro tem 16 pontuações consulta–chave. Uma grelha oito por oito, desenhada com o mesmo tamanho de célula, tem 64. Duplicar o comprimento da sequência duplica as duas dimensões e quadruplica a contagem de pontuações da atenção completa.Uma grelha quatro por quatro tem 16 pontuações consulta–chave. Uma grelha oito por oito, desenhada com o mesmo tamanho de célula, tem 64. Duplicar o comprimento da sequência duplica as duas dimensões e quadruplica a contagem de pontuações da atenção completa.

Diferentes alterações à atenção reduzem custos diferentes:

MétodoO que mudaO que continua a crescer com a sequência
FlashAttentionCalcula a atenção em blocos, evitando uma tabela completa de pontuações na memória principal da GPUA aritmética das pontuações continua quadrática
DSAUm avaliador mais barato seleciona até kk tokens para atenção completaO avaliador continua a comparar todos os pares elegíveis
MLAGuarda menos dados de atenção por token em cacheO tamanho da cache continua a crescer linearmente com o número de tokens

Estas poupanças não podem ser lidas como acelerações equivalentes. Verifique se um artigo mediu aritmética, memória atribuída, transferências de memória ou tamanho da cache. Verifique também se mediu o processamento do prompt ou a geração de tokens; o DeepSeek-V3.2, Figura 3, apresenta essas fases separadamente.

Leis de escala: curvas ajustadas com um intervalo válido

Uma lei de escala ajuda a repartir um orçamento de treino entre um modelo maior e mais dados. É uma curva ajustada a experiências. Por exemplo, o DeepSeek LLM, §3.2, equação (4), apresenta:

Mopt=0.1715 C0.5243,Dopt=5.8316 C0.4757.\begin{aligned} M_{\mathrm{opt}}&=0.1715\,C^{0.5243},\\ D_{\mathrm{opt}}&=5.8316\,C^{0.4757}. \end{aligned}

CC é a computação de treino em operações de vírgula flutuante. MM é a computação por token sem os embeddings, usada aqui como medida do tamanho do modelo; não é o número de parâmetros. DD é o número de tokens de treino. O índice «opt» marca a repartição ajustada para minimizar a perda de validação com esse orçamento. Os coeficientes 0,1715 e 5,8316 pertencem a este ajuste e a estas unidades.

As curvas abaixo dividem as repartições ajustadas pelos seus valores num orçamento de 101710^{17} FLOPs, pelo que cada coeficiente ajustado se cancela. Um aumento de orçamento de 100 vezes dá 1000.5243≈11.18100^{0.5243}\approx11.18 vezes a computação por token e 1000.4757≈8.94100^{0.4757}\approx8.94 vezes os tokens. Estes são os dois extremos da figura. Os fatores multiplicam-se porque o artigo define a computação total como C=MDC=MD.

Curvas calculadas a partir do ajuste DeepSeek LLM mostram um aumento de computação de 100 vezes repartido em cerca de 11,18 vezes mais computação por token e 8,94 vezes mais tokens de treino. O eixo horizontal do rácio de computação é logarítmico; o eixo vertical do fator de aumento é linear. Os orçamentos representados mantêm-se dentro do intervalo ajustado apresentado.Curvas calculadas a partir do ajuste DeepSeek LLM mostram um aumento de computação de 100 vezes repartido em cerca de 11,18 vezes mais computação por token e 8,94 vezes mais tokens de treino. O eixo horizontal do rácio de computação é logarítmico; o eixo vertical do fator de aumento é linear. Os orçamentos representados mantêm-se dentro do intervalo ajustado apresentado.

Esta conclusão pertence a estas experiências. O ajuste abrange de 101710^{17} a 3×10203\times10^{20} FLOPs. Fora desse intervalo, é uma extrapolação; mesmo dentro dele, dados ou configurações de treino diferentes podem mudar a melhor repartição. A secção 3.3 apresenta expoentes diferentes para datasets diferentes. A análise detalhada das leis de escala explica as unidades e verifica como se combinam as fórmulas ajustadas.

Ler uma equação que esta série não aborda

Para outra equação, use as seis perguntas da Parte 1: identifique os objetos, as operações, as dimensões, a amostragem, as grandezas aprendidas e a afirmação feita.

O repositório paper-math-skills fornece instruções para agentes escreverem e verificarem uma análise detalhada. As análises indicadas são exemplos desse resultado, com definições dos símbolos e verificações numéricas.

Fontes e versões

Para uma introdução mais extensa aos fundamentos, veja The Little Book of Generative AI Foundations, de Tianhua Chen, §3.2 para a ELBO.