Problema: modelos de linguagem entram em loop
Modelos de linguagem autorregressivos geram texto um token por vez, com base nas palavras já escritas. Esse processo quase inevitavelmente leva a repetições degenerativas: o modelo começa a reproduzir infinitamente a mesma frase ou cadeia de frases. Isso acontece com frequência especialmente em textos curtos, raciocínios matemáticos ou cadeias lógicas, onde o modelo "fica preso" em um loop local.
Os métodos padrão de combate — penalidade de frequência (frequency penalty) e penalidade de repetição (repetition penalty) — funcionam apenas parcialmente. Eles corrigem a distribuição de probabilidades na etapa de decodificação, mas não levam em conta a estrutura dos padrões repetitivos. Como resultado, mesmo em sistemas modernos, a taxa de queda em repetição em loop chega a vários por cento — isso é difícil de notar em respostas curtas, mas é crítico para raciocínios longos.

Não basta punir a frequência: é preciso teoria da informação
A frequency penalty reduz a probabilidade de tokens que já apareceram no texto, e a repetition penalty adicionalmente diminui o peso de sequências já emitidas. Mas ambas as abordagens usam heurísticas que não têm relação com a forma como o modelo entende a estrutura do texto. Elas podem suprimir repetições úteis (por exemplo, a repetição de uma conclusão importante) e, ao mesmo tempo, deixar passar padrões longos em loop compostos por palavras diferentes.
Uma visão mais fundamentada é oferecida pela teoria da compressão de dados. Se uma sequência é bem comprimida por um algoritmo como o LZ77, isso significa que ela contém pouca informação nova — e, do ponto de vista da previsão, é "previsível" e perigosa para a geração. É lógico punir o modelo por escolher tais padrões, em vez de simplesmente punir a repetição de palavras individuais.
O que é LZ77 e como é construída a penalidade baseada nele
LZ77 é um dos algoritmos clássicos de compressão sem perdas. Ele substitui fragmentos repetidos por referências a ocorrências anteriores: em vez de escrever a string inteira, o algoritmo armazena o deslocamento e o comprimento. Como resultado, cada porção de texto recebe um "comprimento de código" — o número mínimo de bits necessário para representá-la. Quanto mais previsível é o fragmento, mais curto é o seu código.
Os autores do LZ penalty propuseram usar esse comprimento como uma medida de redundância diretamente durante a decodificação. A cada passo, o modelo calcula as probabilidades de todas as continuações possíveis, e cada uma delas é adicionalmente avaliada do ponto de vista de quanto ela aumenta a compressibilidade de toda a sequência gerada. Continuações que levam a estruturas repetitivas longas recebem uma penalidade aumentada.
Curiosamente, essa abordagem decorre naturalmente da dualidade entre previsão e compressão: um bom compressor é simultaneamente um bom previsor, e vice-versa. A decodificação com LZ penalty pode ser interpretada como uma amostragem de uma distribuição residual, da qual já foi removida a informação que o compressor prevê com sucesso. Em outras palavras, o modelo é forçado a produzir não as continuações mais "fáceis" para ele, mas aquelas que contêm informação realmente nova.

Implementação prática: a penalidade é adicionada antes da escolha do token
No nível do código, o LZ penalty é facilmente integrado ao processo de decodificação gulosa. Após cada passo, a hipótese atual de continuação é comprimida por um codificador semelhante ao LZ77, e a diferença no comprimento do código é levada em conta no logaritmo da probabilidade. É importante que a penalidade não exija treinamento ou ajuste fino do modelo — ela funciona na etapa de inferência.
Isso torna o método universal: pode ser aplicado a qualquer modelo autorregressivo, sem alterar a arquitetura e sem tocar nos pesos.
Resultados: ausência de repetições degenerativas com temperatura zero
O principal resultado declarado pelos autores é que o LZ penalty permite que modelos abertos modernos raciocinem com decodificação gulosa (temperatura zero) sem perda de capacidades. Normalmente, com temperatura zero, o modelo sempre escolhe o token mais provável, o que torna o loop especialmente provável. É por isso que, na prática, frequentemente se usa amostragem aleatória com temperatura acima de zero e penalidades — mas isso introduz aleatoriedade desnecessária na geração e pode reduzir a qualidade.
Com o LZ penalty, a necessidade de tais artifícios desaparece. A decodificação gulosa deixa de ser uma fonte de repetições degenerativas, e o modelo permanece focado na resolução da tarefa. Ao mesmo tempo, as capacidades do modelo para inferência lógica, matemática e codificação não se deterioram — a penalidade atua apenas contra a redundância, sem afetar a parte semântica da geração.
Para comparação: nos experimentos, os mesmos modelos com frequency penalty e repetition penalty, em vários casos, demonstraram até 4% de quedas em repetições em loop. Isso pode parecer um número pequeno, mas para respostas longas ou cadeias de raciocínio, cada uma dessas quedas desvaloriza completamente o resultado.

Por que o LZ penalty funciona melhor que heurísticas
A diferença fundamental em relação à penalidade de frequência ou repetição está na capacidade de reagir à estrutura, e não a tokens individuais. Heurísticas, em geral, punem todas as repetições igualmente, independentemente do comprimento do padrão. O LZ penalty é sensível ao comprimento da sequência repetida: quanto mais longa e exata a repetição, maior a penalidade. Repetições curtas, que não formam um padrão, são punidas fracamente ou não são punidas.
Isso é importante para a linguagem natural. O modelo pode legitimamente repetir a palavra "portanto" em diferentes partes do raciocínio, e isso não deve ser bloqueado. Mas se o modelo começa a gerar a mesma cadeia de argumentos repetidamente, o LZ penalty perceberá a redução no comprimento do código e interromperá o processo.
Como resultado, o LZ penalty elimina o dilema entre qualidade e segurança do texto: não é preciso escolher entre "razoável, mas em loop" e "diverso, mas incoerente".
Conclusões práticas
Para desenvolvedores e pesquisadores, o LZ penalty é uma ferramenta pronta que não exige alterações no modelo. Basta adicioná-lo ao pipeline de inferência para obter uma geração estável sem repetições degenerativas. Isso é especialmente relevante para modelos de raciocínio open-source, usados em cenários com respostas longas e alta exigência de determinismo.
Permanece em aberto a questão da eficiência: a compressão a cada passo exige cálculos adicionais. Os autores não discutem a complexidade no trabalho apresentado, mas é de se esperar que, no futuro, surjam versões otimizadas que funcionem em GPU e sejam integradas a bibliotecas populares de decodificação.
Limitações e observações
No artigo, são observadas pequenas correções pós-publicação relacionadas a imprecisões nos cálculos — isso demonstra a atenção dos autores aos detalhes e não afeta a essência da abordagem proposta. Como qualquer método, o LZ penalty não é uma bala de prata: ele resolve o problema específico das repetições, mas não aborda, por exemplo, a veracidade factual ou a coerência lógica da geração.
Ainda assim, a própria ideia de usar o comprimento do código de compressão como uma medida da informatividade da continuação parece elegante e promissora. Ela conecta a teoria da informação à prática da geração de textos e oferece o que heurísticas simples não conseguem: a compreensão de quando a repetição é ruído e quando é um sinal de degradação do modelo.



