3 pontos por GN⁺ 2025-10-21 | 1 comentários | Compartilhar no WhatsApp
  • Modelos de linguagem mascarada como BERT e RoBERTa também podem ser interpretados como o conceito de modelo de difusão de texto
  • Diferente de auto-regressivos (por exemplo, GPT), foi demonstrado que é possível aplicar geração por blocos e o modo de restauração progressiva
  • Confirmamos experimentalmente que, ao treinar ajustando a taxa de mascaramento etapa por etapa, o RoBERTa também consegue gerar texto natural
  • Mesmo sem mudar a estrutura existente, é possível obter capacidade de geração ao ajustar apenas o objetivo de treinamento
  • Comparado ao GPT-2, um modelo de difusão baseado em RoBERTa também produz resultados de geração de texto com consistência em um certo nível

Visão geral

O Gemini Diffusion divulgado pelo Google DeepMind é um modelo de linguagem baseado em difusão que, diferente da família GPT, gera texto em blocos de uma vez. Essa abordagem é uma forma de gerar texto que refina ruído aleatório gradualmente. Ao analisar o paper relacionado (Large Language Diffusion Models), constatou-se que a difusão de linguagem discreta é uma generalização da modelagem de linguagem mascarada (MLM). Ou seja, foi investigado experimentalmente se essa ideia permitiria geração de texto também em modelos da família BERT.

Nota: posteriormente, o paper do DiffusionBERT valida essa ideia de forma mais rigorosa.

História resumida dos Transformers

O Transformer, proposto inicialmente em 2017, tinha estrutura encoder-decoder. Em 2018, surgiram famílias especializadas com o separo entre encoder (BERT: bidirecional, com foco em reconstrução mascarada) e decoder (GPT: autoregressivo, com foco em predição sequencial).

  • Apenas encoder (família BERT)
    • Recebe o contexto completo da sentença e mascara certas partes com <MASK>, restaurando-as com o restante como contexto
    • Ponto forte em representação de frase, classificação etc.
  • Apenas decoder (família GPT)
    • Prediz o próximo token a partir da sequência dada
    • Se destacou em geração, resumo, tradução etc.

O BERT foi usado diretamente para tarefas de classificação, mas depois a família GPT ganhou mais espaço com a melhora em capacidades de geração.

Modelo de difusão de linguagem discreta

Modelos de difusão popularizaram-se originalmente em geração de imagens.
No caso de imagens:

  • Processo direto: adiciona-se ruído gaussiano progressivamente a uma imagem limpa até chegar a um estado de ruído puro
  • Processo reverso: repetição de desruido progressivo com um modelo de deep learning para restaurar o dado original

Ao aplicar para texto, a forma mais simples é um processo de ruído baseado em mascaramento.

  • Direto (mascaramento)
    • Em t=0 há texto original; à medida que a etapa aumenta, parte dos tokens é substituída aleatoriamente por <MASK>
    • Na etapa final, tudo é preenchido por <MASK>
  • Reverso (desruído)
    • O transformer encoder aprende a restaurar os tokens originais a partir de uma configuração de mascaramento dada
    • Com baixa taxa de mascaramento, a restauração é mais fácil; com taxa alta, fica mais difícil
    • Repetindo do percentual de mascaramento mais alto para o mais baixo, é possível gerar uma sequência inteira

Nesse framework de difusão, o modelo é treinado somando a perda de desruído para diferentes níveis de mascaramento em cada etapa. O objetivo de restauração mascarada do BERT é, na prática, parte de uma difusão de texto. Combinando agenda de taxa de mascaramento e desruído iterativo, é possível expandir o objetivo do BERT para um procedimento gerativo em linguagem natural.

Experimento RoBERTa Diffusion

O RoBERTa, apresentado em 2019, se caracteriza por uma expansão de hiperparâmetros e dados em relação ao BERT, além de um objetivo de treino mais simples (MLM Only).
No experimento, foram usados os pesos-base do RoBERTa, tokenizer e Trainer das bibliotecas transformers e datasets da HuggingFace.
Com base no conjunto de dados WikiText, o ajuste fino foi feito com o seguinte processo:

  • Em cada batch, amostra-se uma de 10 etapas da agenda de difusão (mask_probs: 1.0~0.1) para mascarar
  • Usa-se um diffusion_collator customizado que, após escolher a probabilidade de mascaramento, aplica <MASK> estocasticamente em cada token
  • Para manter o contexto do prompt, os primeiros 16 tokens são sempre preservados

Máscara de dados (custom collator):

  • Para cada lote de tokens do exemplo, faz-se padding e escolhe-se aleatoriamente uma probabilidade de mascaramento
  • Aplica-se <MASK> de forma probabilística em todos os tokens, exceto os 16 iniciais
  • Retorna o conjunto de dados mascarado e os rótulos-alvo

Geração (inference):

  • Entrada com sequência de 256 tokens, nos quais os 16 primeiros são prompt e o restante está como <MASK>
  • Em cada etapa, o modelo amostra os tokens previstos e preenche, depois remasca-se novamente uma fração dos tokens
  • Repete-se reduzindo progressivamente a taxa de mascaramento; ao final, tudo é restaurado

Exemplo de saída gerada:

  • Com prompt e texto subsequente natural, é possível gerar texto com boa consistência
  • Algumas particularidades vêm do formato de pré-processamento do WikiText (por exemplo, hífen @-@)

Comparação com GPT-2

  • Embora GPT-2 seja um pouco mais rápido e apresente consistência maior, o RoBERTa Diffusion também mostra desempenho acima do esperado (há potencial para melhoria incremental)
  • Qualidade e velocidade podem melhorar com novas estratégias como AR-Diffusion, Skip-Step Diffusion e otimizações

Conclusão

  • Modelos de linguagem mascarada como o RoBERTa, ao treinar com taxa de mascaramento ajustada progressivamente, também podem se tornar motores de geração de linguagem natural
  • Só com o treinamento que vai degradando e restaurando texto por tokens <MASK> já é possível confirmar a viabilidade de convertê-los em modelos totalmente generativos
  • É possível obter capacidade de geração com a alteração apenas do objetivo de treino, sem mudar a própria estrutura
  • No fim, os modelos da família BERT também são, essencialmente, equivalentes a um único modelo de difusão de texto

1 comentários

 
GN⁺ 2025-10-21
Comentário do Hacker News
  • Quando o BERT apareceu pela primeira vez, todo mundo tentou usá-lo para geração de texto, mas em geral não funcionou muito bem; uma referência sobre isso está aqui. Savinov e outros, da DeepMind, mostraram que, ao aplicar apenas duas etapas durante o treinamento e aleatorizar a probabilidade de mascaramento, isso pode funcionar de forma bem útil

    • Depois de várias tentativas na semana passada para fazer o BERT conversar, acabei aprendendo isso por meio deste post. Ainda tenho mais algumas ideias que quero testar, então continuo me divertindo com os experimentos blog relacionado

    • Eu fazia parte do grande grupo de pessoas que via o BERT como algo utilizável apenas como encoder puro, e não para geração de texto, por exemplo em medição de similaridade semântica e classificação

  • Pelo que sei, foi esse artigo de 2021 (página 5) que apontou essa conexão pela primeira vez. Em difusão de texto, tentaram a abordagem de corromper palavras trocando-as por outras semanticamente parecidas, mas fazer o modelo encontrar a palavra mascarada era mais fácil. A história dessa abordagem remonta a bem antes, até este artigo, que criou MLM generativo sem explicá-lo com a matemática de difusão

    • Isso é ainda mais antigo. Em 2014, Li Yao e outros mostraram em este artigo a equivalência entre modelos autoregressivos (previsão do próximo token) e redes estocásticas generativas (autoencoders de denoising, precursores dos modelos de difusão). Eles argumentaram que a amostragem paralela aproxima bem a amostragem sequencial, e meu trabalho de 2016, Counterpoint by Convolution, link, também aplicou esse método e explicou que ele obtinha desempenho até melhor. Infelizmente, por ser um artigo de aplicação, não recebeu muitas citações da literatura de difusão. Acho que deve haver raízes ainda mais antigas

    • Eu também lembro desse artigo como a primeira referência a tratar isso formalmente (depois de ver o BERT, parece natural que pesquisadores de NLP pensassem em difusão). Uma coleção de referências iniciais sobre difusão em texto que reuni há 3 anos está aqui

    • Como referência, o artigo relacionado também pode ser visto aqui

  • Abordagens baseadas em difusão parecem mais próximas do que acontece no cérebro dos animais. Quando eu falo, não sinto que produzo palavras uma a uma com base na palavra anterior; sinto mais que primeiro surge na cabeça uma ideia geral vaga, e o processo maior é organizá-la em linguagem

    • LLMs autoregressivos também não fazem algo tão simples quanto apenas prever a próxima palavra. Embora saia um token por vez em uma única forward pass, no espaço latente aparecem claramente planejamento de longo prazo e raciocínio. Como nós também formamos um quadro geral na cabeça e falamos em sequência, não dá para dizer que o método de difusão se parece mais conosco por causa disso

    • Pessoalmente, gostei deste post de blog que explica difusão como uma espécie de "autoregressão espectral". A difusão tende a prever primeiro características de baixa frequência e depois as de alta frequência

    • Quando edito uma mensagem no Slack umas 5 vezes, muitas vezes sinto que eu mesmo sou um modelo de difusão

    • Ao falar ou escrever, de fato emitimos palavras sequencialmente. Mas antes de começar uma frase, já pensamos primeiro no ponto geral. Isso é semelhante ao fato de que LLMs também planejam primeiro a direção geral no espaço latente antes de emitir tokens

    • Estudos de interpretabilidade também mostram que LLMs autoregressivos planejam internamente o que vão dizer com antecedência

  • Pessoalmente, acho mais natural dar suporte a edições por inserção/remoção no estilo Levenshtein do que permitir apenas mascarar e preencher. Por exemplo, se na etapa final você quiser substituir uma palavra por um sinônimo mais longo, não dá para deslocar o texto para a direita, então isso não é fácil nessa estrutura de difusão

    • Há progresso nisso. Tentativas de adicionar tokens de expand/delete estão surgindo em trabalhos como DreamOn
  • Experimentos simples assim são interessantes porque permitem entender rapidamente o princípio. O ponto frustrante em modelos difusores de texto é que os tokens precisam ser tratados como valores discretos, e não contínuos. No caso de imagens, os pixels são contínuos, então é natural adicionar ruído, mas com tokens de texto isso não acontece. Em geral, acaba-se lidando com substituição completa; existem várias abordagens que adicionam ruído no espaço de embeddings ou aprendem embeddings diretamente, mas todas são mais complicadas do que difusão em imagem

  • Tenho mais expectativa em abordagens como este artigo. Ele combina difusão latente contínua com geração de texto baseada em transformadores autoregressivos. O autoencoder e o transformador podem ser treinados conjuntamente (ou de forma independente)

  • Quando vi modelos de difusão de texto pela primeira vez, pensei: “isso não é só MLM?”. O ponto que me chamou atenção foi o MaskGIT. Isso realmente mereceria ser chamado de difusão se o modelo fosse treinado para substituir tokens errados pelos corretos, já que a força da difusão contínua é a robustez a ruído. Mas, na prática, a ideia de gerar tokens errados não parece tão fácil de implementar, então acho que ainda não foi muito tentada

    • Eu experimentei MLM no nível de bytes UTF8, tentando um modelo de tradução não alinhada. Usei curriculum learning e um esquema de corrupção aleatória progressiva. Se o objetivo é simplesmente adicionar ruído, basta substituir índices aleatórios por valores de byte aleatórios. Por exemplo, passava o seguinte padrão como entrada

      [Source UTF8 bytes] => [Corrupted Target UTF8 bytes]
      

      Reavaliava repetidamente toda a sequência-alvo, de modo que não surgissem mudanças descontínuas no domínio de treinamento à medida que o nível de dificuldade aumentava. No fim, deixei de me preocupar com terminologia ou classificação; em vez de pensar “isso é difusão?”, passei a me importar apenas com “isso funciona bem?”

  • Também tenho curiosidade sobre como isso se compararia com o electra

    • Também valeria comparar com o deberta. De qualquer forma, é muito interessante
  • Eu queria ajustar finamente um modelo de conclusão de código inline para ver se conseguiria desempenho parecido com o cursor (na prática seria difícil, mas pareceria divertido). Mas ainda não existe um modelo aberto de difusão que realmente sirva como base, então estou na expectativa

  • O aspecto atraente dos modelos de difusão de imagem era que eles geravam imagens a partir de ruído aleatório. Então fico curioso por que os modelos de difusão de texto começam com tokens vazios totalmente mascarados, em vez de tokens aleatórios

    • Depende da tarefa desejada. Para simples continuação de texto, você fornece a frase de entrada sem mascaramento e deixa o modelo preencher os tokens mascarados seguintes. Se quiser edição de código etc., pode mascarar apenas a parte a ser editada e fazer com que ela seja preenchida sequencialmente. A força dos modelos de difusão de texto está na capacidade de realizar edições práticas, como edição de código (LLMs autoregressivos precisam de um sistema separado que edite via instruções). Se você treinar o modelo com uma head de edição de código bem adequada, pode aumentar a velocidade e a eficiência de muitas tarefas de programação. Parece provável que esse tipo de recurso seja integrado naturalmente no futuro em algo como o GPT Codex

    • Nem todo mundo usa apenas a abordagem de começar com tokens vazios. Há várias tentativas: algumas começam com tokens aleatórios, outras com máscaras, outras com vetores de embedding