Pular para o conteúdo
    NotíciaPesquisa e ciência

    Jon Barron, do Google DeepMind, aponta dois bugs no softmax usado para treinar IA

    Artigo de Jonathan T. Barron e colegas do Google DeepMind afirma que as implementações padrão de softmax e cross-entropy têm dois erros numéricos e propõe uma reescrita simples. Os mantenedores dos frameworks ainda não confirmaram o problema.

    Folha impressa com gráfico de curva de erro de treinamento, com saltos repentinos circulados a caneta vermelha, sobre mesa de escritório sob luz lateral
    Pesquisadores do Google DeepMind apontam dois erros numéricos nas implementações padrão de softmax e cross-entropy e propõem uma reescrita simples; os mantenedores dos frameworks ainda não confirmaram o problema.

    Em 2022, um grupo de pesquisadores descreveu um comportamento estranho de redes neurais, o "slingshot" (estilingue): no meio do treinamento, o erro do modelo dá saltos repentinos. Na quinta-feira (22), três pesquisadores do Google DeepMind propuseram uma explicação bem menos poética. Segundo eles, o fenômeno desaparece quando se corrige um erro de arredondamento em duas das contas mais básicas da inteligência artificial.

    No artigo A Fix for Softmax and Cross-Entropy (abre em nova aba), Jonathan T. Barron, Dan Gnanapragasam e Michael Tschannen afirmam que as implementações padrão de softmax, log-softmax e cross-entropy têm dois bugs numéricos. Traduzindo: o softmax converte em probabilidades os "placares" que o modelo dá a cada resposta possível, chamados logits. A cross-entropy mede o erro e gera o gradiente, o sinal que diz ao modelo para que lado se ajustar. Se o sinal sai torto, o aprendizado também sai.

    Os frameworks já tratam essas contas com cuidado. Exponenciais crescem rápido, e no formato fp32 valores acima de cerca de 88 estouram. Por isso, segundo a página do projeto (abre em nova aba), JAX, PyTorch, TensorFlow e companhia subtraem o maior placar antes de calcular. O truque resolve o estouro, mas, segundo os autores, deixa dois buracos.

    Quadro branco em escritório de pesquisa com uma curva exponencial desenhada à mão que dispara para cima a partir de certo ponto do eixo e, ao lado, uma fórmula do softmax escrita a caneta que subtrai o maior valor antes da exponenciação.
    Subtrair o maior valor antes de calcular a exponencial é o truque clássico para evitar estouro numérico no softmax; o novo artigo aponta dois erros que ainda persistem nas implementações padrão.

    Primeiro bug: o sinal que some

    O Softmax Collapse aparece quando o placar da resposta certa fica muito acima dos demais. Nesse caso, o gradiente dela é arredondado para zero, enquanto os sinais minúsculos das respostas erradas continuam lá. Na matemática exata, esses ajustes se compensam e somam zero. Com o arredondamento, deixam de somar, e o modelo recebe empurrões desequilibrados.

    O ponto em que isso acontece depende da precisão numérica usada. Segundo os autores, quanto menor a precisão, mais cedo o problema chega:

    FormatoDiferença de placar a partir da qual o gradiente colapsa
    bf16cerca de 5,5
    fp32cerca de 16,6
    fp64cerca de 36,7

    Esse dado pesa porque o bf16 é um formato de baixa precisão popular justamente por acelerar o treino e economizar memória.

    O colapso já havia sido identificado por Prieto e colegas em 2025, mas sem uma correção direta. Barron e coautores ligam esses gradientes assimétricos, quando passam pelos otimizadores Adam e AdamW, aos saltos do slingshot. Também os associam a falhas de grokking, o fenômeno em que um modelo que parecia só decorar exemplos de repente passa a generalizar.

    Segundo bug: a correção que não para

    O Softmax Cancellation afeta duas técnicas. A primeira é a destilação de conhecimento, em que um modelo "aluno" aprende imitando um "professor". A segunda é a regularização KL, que penaliza um modelo por se afastar de outro. Quando as duas distribuições são calculadas separadamente e depois subtraídas, sobra um piso de ruído: mesmo com placares idênticos, o gradiente não zera. É como um professor riscando uma prova sem erro nenhum, e o aluno, obediente, se afastando do gabarito.

    A correção proposta é uma reescrita simples das três funções. Segundo o resumo do artigo, ela elimina o slingshot e acelera o grokking quando se usa weight decay, técnica que puxa os parâmetros para valores menores. Também evita o colapso de acurácia sem weight decay e impede que o aluno se desgarre do professor.

    "Todas as implementações"? Devagar

    Barron, autor principal e pesquisador do Google DeepMind, anunciou o resultado no X com uma frase ainda mais ampla, que inclui até os livros didáticos:

    Oi, pessoal, tenho um resultado novo que estou animado para compartilhar. Acontece que todas as implementações existentes de softmax e cross-entropy (ou seja, JAX, PyTorch, livros didáticos etc.) têm um bug sutil. Dois bugs, na verdade. Uma reescrita simples corrige os dois e elimina os "slingshots" no grokking.

    — Jon Barron (@jon_barron), 23 de out. de 2026, no X

    Convém separar o que foi demonstrado do que é argumento. O raciocínio dos autores é que todos os frameworks usam a mesma receita e, portanto, herdam os mesmos problemas. O material divulgado não lista versões testadas biblioteca por biblioteca, e o texto é um preprint, ainda sem revisão por pares.

    A primeira reação concreta veio de um usuário. No domingo (25), alguém identificado como cbatson abriu uma issue no repositório do PyTorch (abre em nova aba) pedindo a adoção das técnicas do artigo. Ele conta que já tinha esbarrado no colapso em bf16 e contornou o problema calculando a perda em float32. É um pedido de funcionalidade, não uma confirmação dos mantenedores, e a issue não registra nenhuma correção incorporada.

    O que dá para fazer agora

    O atalho é o desse usuário: calcular a perda em fp32. Isso empurra o ponto de colapso de 5,5 para 16,6, mas não o elimina. O caminho completo é adotar as implementações reescritas que os autores apresentam. Quem trabalha com destilação ou regularização KL tem mais motivo para olhar, porque ali o ruído age justamente quando nada deveria mudar.

    Então a fundação da IA está rachada? O que foi divulgado não chega a tanto. Os efeitos destacados pelos autores vêm de experimentos com grokking e destilação, e o resumo não traz medições em grandes modelos comerciais. O incômodo é outro: um fenômeno que ganhou nome e artigo próprio pode ter sido, ao menos em parte, um problema de arredondamento. Se o resultado se sustentar, a lição vale além do softmax, porque às vezes o comportamento misterioso de um modelo está no código, e não no aprendizado.

    Foto de Leandro Vieira

    Leandro Vieira

    CEO e founder | IA.com.br

    Ver perfil completo