Pular para o conteúdo
mnzes

O que é self-consistency em prompts?

PorDiógenes MenezesAprendendo IA em público

12 min de leitura

Self-consistency é fazer a mesma pergunta várias vezes com amostragem ligada, colher a resposta final de cada retorno e ficar com a que mais apareceu. O caminho que cada cadeia percorreu é jogado fora; só o resultado é contado. No paper de 2022 que propôs a técnica, isso somou 17,9 pontos de exatidão no GSM8K sobre o chain-of-thought comum.

Não é uma técnica de prompt. É uma estratégia de decodificação: você troca a escolha gulosa do token mais provável por uma amostra de vários caminhos, e depois decide entre eles. O prompt continua sendo o mesmo chain-of-thought que você já tinha.

Para funcionar, a geração precisa variar entre chamadas, o que significa temperatura acima de zero. Com temperatura zero as cinco cadeias saem idênticas e a votação não tem o que decidir. Se o que você quer é escolher a melhor de N em vez de contar a mais frequente, isso é outra coisa, comparada em self-consistency ou best-of-N.

o mesmo prompttemperatura > 05 amostras183 cadeias201 cadeia151 cadeiaresposta: 18voto de maioriaas 5 cadeias, agrupadas pela resposta final
Figura 1O que é agrupado é a resposta final, não o caminho. Duas cadeias diferentes que chegam a 18 contam como o mesmo voto, e é isso que torna a contagem possível.

O algoritmo inteiro cabe em quatro linhas

Chame o prompt N vezes com temperatura acima de zero. Extraia a resposta final de cada retorno. Conte. Devolva a mais frequente.

Não há biblioteca, não há modelo auxiliar, não há treino. O que existe de complicado está no passo dois: extrair a resposta de forma confiável de N textos diferentes. Se os seus exemplares terminam sempre com a mesma linha, esse passo é uma linha de código. Se não terminam, esse passo é o projeto inteiro.

Vale notar o que o método não faz. Ele não olha o raciocínio, não julga qualidade, não pede ao modelo que escolha. Uma cadeia confusa que chega a 18 vale exatamente o mesmo que uma cadeia impecável que chega a 18. A única informação usada é a resposta final.

Por que contar respostas corrige alguma coisa

A intuição dos autores está no nome: um problema de raciocínio complexo costuma admitir vários caminhos válidos até a mesma resposta certa1. Caminhos válidos convergem; caminhos errados divergem.

Isso funciona porque erro de percurso é aleatório. Uma cadeia que trocou um sinal no terceiro passo produz um número errado, e a próxima cadeia, amostrada de forma independente, dificilmente troca o mesmo sinal no mesmo passo. Cinco erros diferentes se espalham por cinco valores; três acertos coincidem em um. A contagem separa os dois grupos sem precisar saber qual é qual.

Repare na assimetria, porque ela é o coração da coisa. Existe um número certo e existem muitos números errados. Toda cadeia correta cai no mesmo balde, qualquer que seja o caminho; cada cadeia errada tende a cair num balde próprio. Mesmo com uma taxa de acerto por cadeia abaixo de metade, a resposta certa pode ser a mais frequente, porque ela é a única que acumula. É o mesmo motivo pelo qual uma questão de múltipla escolha com cinco alternativas é mais fácil de acertar por consenso do que uma pergunta aberta.

Uma consequência direta: cadeias muito parecidas entre si não ajudam. Se a temperatura estiver baixa demais, as cinco amostras percorrem quase o mesmo caminho, erram junto e a votação vira uma cópia cara da decodificação gulosa. A diversidade não é efeito colateral do método, é o insumo dele.

E é por isso que a técnica não resolve erro de conhecimento. Se o modelo acredita que a alíquota é 12% quando é 15%, as cinco cadeias vão acreditar nisso. O voto devolve o mesmo erro com cinco confirmações, o que é pior que devolver uma vez, porque agora ele vem com aparência de consenso.

O que foi medido, e em que condições

A linha de base de comparação é o chain-of-thought com decodificação gulosa, ou seja, os exemplares com passos do paper de 20222. Sobre ela, os ganhos reportados foram 17,9 pontos no GSM8K, 11,0 no SVAMP, 12,2 no AQuA, 6,4 no StrategyQA e 3,9 no ARC-challenge1. Os modelos eram os de 2022 — LaMDA-137B, PaLM-540B, GPT-3 e UL2 — e a amostragem usada foi temperatura 0,5 com top-k de 40 no LaMDA e temperatura 0,7 com top-k de 40 no PaLM.

Os autores também variaram a estratégia de amostragem, mexendo em temperatura, top-k e top-p, e o método continuou entregando ganho em todas as configurações testadas1. Isso importa na prática: você não precisa caçar o valor exato de temperatura para a técnica funcionar, só precisa que ele não seja zero.

Três resultados do mesmo paper dizem mais sobre o método que os números principais.

Ele conserta prompt ruim. Os autores estragaram de propósito os exemplares, trocando os números do raciocínio por valores aleatórios. No LaMDA-137B, o GSM8K caiu de 17,1% para 14,9% com decodificação gulosa. Com 40 amostras e voto, subiu para 23,4%, acima do que o prompt correto entregava sozinho1.

Ele combina com zero-shot CoT. Aplicado sobre a frase gatilho3, sem exemplares nenhum, o GSM8K no PaLM-540B foi de 43,0% para 69,2%1. Quem não quer montar exemplares tem aqui a combinação mais simples que funciona: uma frase, cinco chamadas e um contador.

Ele aguenta entrada fora da distribuição. Nas tarefas simbólicas, os autores montaram um cenário em que os exemplares mostravam casos de duas letras ou dois lances e o teste pedia quatro. É o arranjo em que o modelo não pode copiar o padrão do exemplar, e é onde a maior parte dos ganhos de prompt evapora. O voto continuou rendendo ali, com modelos grandes o bastante1. É o resultado que sustenta usar a técnica em entrada real, que raramente se parece com o exemplo.

Ele bate ensembles de prompt. Comparado com votar entre 40 permutações de ordem dos exemplares, ou entre 40 prompts diferentes, o voto entre 40 cadeias amostradas ganhou1. A diversidade que importa é a do caminho de raciocínio, não a da redação do prompt.

Um trabalho posterior refinou o critério de contagem: em vez de contar todas as cadeias igualmente, contar preferencialmente as que têm mais passos. A seleção por complexidade aplicada à decodificação rendeu melhora média de 5,3 pontos, com até 18, nos benchmarks que eles testaram4.

A condição que derruba a maioria das tentativas

O método conta respostas iguais. Isso exige que “igual” seja uma pergunta respondível, e é aqui que a maior parte das implementações trava.

Número, rótulo de classificação, alternativa de múltipla escolha, campo extraído, booleano: tudo isso conta bem. Duas cadeias que chegam a 4.968 chegam ao mesmo lugar, e a comparação é ==.

Resumo, redação, explicação, código: não contam. Duas respostas corretas nunca coincidem caractere por caractere, e o voto degenera em cinco grupos de um. Não é uma limitação de implementação, é o que o método é. Para saída livre você precisa de outro critério de agregação, e aí já não é self-consistency.

Mesmo com resposta contável há um passo de normalização que ninguém menciona. “18”, “18,0”, “R$ 18” e “18 caixas” são a mesma resposta para uma pessoa e quatro respostas diferentes para um contador. Converta para uma forma canônica antes de contar — parseie o número, normalize o rótulo, tire a moeda — ou você vai receber um empate triplo entre três grafias do mesmo resultado certo.

Há um caso intermediário que vale conhecer. Se a sua saída é livre mas contém um campo decisivo — a classificação no meio do parecer, o valor no fim da análise — você pode votar no campo e gerar o texto uma vez, condicionado ao resultado da votação. Custa N chamadas curtas e uma longa, em vez de N longas.

A concordância como sinal de confiança

Este é o subproduto mais útil e o menos usado.

Os autores mediram que a proporção de cadeias que concordam com a resposta vencedora se correlaciona com a exatidão daquela resposta1. Cinco de cinco concordando é um caso diferente de dois de cinco, e você já tem esse número em mãos sem custo adicional: ele cai do próprio contador.

Na prática, isso dá um portão de escalada. Concordância alta, responde. Concordância baixa, manda para revisão humana, ou pede verificação explícita, ou devolve “não tenho certeza”. É a coisa mais próxima de uma medida de incerteza que se consegue de graça em um sistema com LLM.

O cuidado: não é probabilidade calibrada. Três de cinco não significa 60% de chance de estar certo. Significa “menos confiável que cinco de cinco”, e o limiar que separa responder de escalar você descobre nos seus dados, não no paper. Com N igual a 5 a granularidade também é grossa: você tem seis valores possíveis de concordância, o que basta para separar consenso de dúvida e não basta para ordenar casos duvidosos entre si.

Onde falha

O erro sistemático passa e ganha votos. É a falha central, e vale repetir com outras palavras: o método assume que os erros são independentes entre amostras. Quando o erro vem do treino do modelo, ele não é.

A resposta certa fica em minoria. Em problemas difíceis, o caminho correto pode ser o menos provável. O voto de maioria escolhe o mais frequente, que às vezes é o atalho errado que o modelo prefere. Aumentar N não conserta isso; só confirma a maioria com mais confiança.

O parser vira o ponto único de falha. Extração errada de uma cadeia move um voto. Com N igual a 5, um voto pode decidir. Vale medir a taxa de erro do parser separada da exatidão do modelo, ou você vai atribuir ao modelo um problema de regex.

Modelo pequeno ganha pouco. O ganho medido era menor nos modelos menores da série testada, porque a capacidade de fazer a conta certa em algum dos caminhos precisa existir antes de o voto poder encontrá-la1. Votar entre cinco cadeias ruins devolve a resposta ruim mais popular.

A latência multiplica se você não paralelizar. As N chamadas são independentes, então dá para dispará-las juntas. Feito em série, o usuário espera cinco vezes mais.

Em modelo de raciocínio, a conta muda de patamar. O processo interno já gasta tokens antes da resposta, e multiplicar isso por cinco multiplica também a parte da fatura que você não vê. Não achei medição pública comparando voto externo com o esforço interno desses modelos, então a recomendação honesta é medir: rode a mesma tarefa com uma chamada de esforço alto e com cinco de esforço baixo, e compare exatidão contra fatura.

Quanto custa

N = 1N = 5N = 10N = 40exatidãotokens gastoslinha de base(1 cadeia)a maior partedo ganhoquase todoo ganhoganho medido+17,9 no GSM8K1x5x10x40x
Figura 2As duas linhas crescem de forma diferente: a exatidão satura em torno de cinco a dez amostras e o gasto de tokens continua subindo em linha reta.

O custo é exatamente N vezes, e não há sutileza aqui. Cinco amostras custam cinco chamadas, cinco vezes os tokens de saída e cinco vezes os tokens de entrada, a menos que o prompt caching cubra a parte fixa.

A exatidão não cresce assim. Os autores testaram 1, 5, 10, 20 e 40 amostras e descreveram o comportamento como saturação rápida; a recomendação deles é começar com 5 ou 10 para capturar a maior parte do ganho sem incorrer em custo demais1. Entre 10 e 40 ainda há ganho, e ele é pequeno para quatro vezes o preço.

Uma conta para dar forma. Uma tarefa com cadeia de 250 tokens de saída, a 10 mil perguntas por mês, gasta 2,5 milhões de tokens de saída. Com cinco amostras, 12,5 milhões. Com quarenta, 100 milhões. A decisão entre 5 e 40 é uma decisão de orçamento disfarçada de decisão técnica.

Onde compensa: item de valor alto, erro caro, volume baixo, resposta verificável. Cálculo tributário, triagem de risco, extração de cláusula contratual. Onde não compensa: caminho interativo, volume alto, item barato — que é onde a maior parte das aplicações vive.

Como usar

  1. Confirme que a resposta é comparável. Número, rótulo ou campo. Se não for, pare aqui: o método não se aplica e adaptá-lo é reescrevê-lo.
  2. Ligue a temperatura. Entre 0,5 e 0,8 é a faixa dos experimentos originais. Com temperatura zero você paga N vezes por N cópias da mesma cadeia.
  3. Comece com N igual a 5. Meça. Suba para 10 só se a curva nos seus dados ainda estiver subindo.
  4. Dispare as chamadas em paralelo. Elas são independentes. Em série, você multiplica a latência por N sem precisar.
  5. Guarde a contagem, não só o vencedor. Três de cinco e cinco de cinco são respostas diferentes para o seu sistema, mesmo quando o valor é o mesmo.
  6. Defina o que fazer com concordância baixa. Escalar, abster ou verificar. Se você não decidir isso, o sinal mais útil do método vai para o lixo junto com as cadeias perdedoras.
  7. Meça o parser separado do modelo. Uma extração errada vira um voto errado, e com N pequeno um voto decide.

O passo 6 é o que separa quem usa self-consistency de quem só paga cinco vezes por uma resposta um pouco melhor.

Footnotes

  1. Wang et al. (2022) propuseram substituir a decodificação gulosa por amostrar várias cadeias e votar na resposta final mais frequente; reportaram +17,9 no GSM8K, +11,0 no SVAMP, +12,2 no AQuA, +6,4 no StrategyQA e +3,9 no ARC-challenge; mostraram robustez a prompt estragado (17,1 para 14,9 com decodificação gulosa, 23,4 com voto), ganho sobre zero-shot CoT (43,0 para 69,2 no PaLM-540B), superioridade sobre ensembles de prompt, saturação rápida com o número de amostras e correlação entre concordância e exatidão. 2 3 4 5 6 7 8 9 10

  2. Wei et al. (2022) estabeleceram o chain-of-thought com exemplares, que é o prompt sobre o qual o self-consistency roda, e mostraram que o ganho depende da escala do modelo.

  3. Kojima et al. (2022) mostraram que uma única frase gatilho produz cadeia de raciocínio sem exemplares, que é a configuração usada no experimento de zero-shot CoT com voto.

  4. Fu et al. (2022) estenderam a seleção por complexidade da escolha de exemplares para a decodificação, votando preferencialmente entre as cadeias com mais passos, com melhora média de 5,3 pontos e até 18.

Perguntas frequentes

O que é self-consistency em uma frase?
É gerar várias cadeias de raciocínio para a mesma pergunta, com amostragem em vez de decodificação gulosa, e ficar com a resposta final que apareceu mais vezes. O caminho é descartado; só a resposta é contada. Foi proposto em 2022 como substituto da decodificação gulosa no chain-of-thought.
Como gerar várias respostas e votar na prática?
Chame o mesmo prompt N vezes com temperatura acima de zero, extraia a resposta final de cada retorno, conte as ocorrências e devolva a mais frequente. Não há biblioteca envolvida: são um laço, um parser e um contador. O trabalho de verdade está em extrair a resposta de forma confiável.
Quantas amostras usar?
Cinco a dez cobre a maior parte do ganho, e foi a recomendação dos próprios autores. O paper testou até 40 amostras e o desempenho continuava subindo, mas devagar. Como o custo cresce em linha reta com N, o ponto de parada é econômico, não técnico.
Self-consistency funciona para texto livre?
Não como descrito. O método conta respostas iguais, e duas redações corretas nunca coincidem palavra por palavra. Ele exige resposta comparável: número, rótulo, alternativa de múltipla escolha ou campo extraído. Para texto livre é preciso outro critério de agregação, que já é outra técnica.
Self-consistency resolve alucinação?
Não. Se o modelo erra o mesmo fato de forma consistente, as cinco cadeias erram juntas e o voto confirma o erro com aparência de consenso. O método corrige erro de percurso, que varia entre amostras, e não erro de conhecimento, que é estável.
Dá para saber quando o modelo não tem certeza?
Em parte. Os autores mediram que a proporção de cadeias que concordam com a resposta vencedora se correlaciona com a exatidão. Cinco de cinco é um sinal diferente de dois de cinco, e esse número sai de graça do próprio método. Não é probabilidade calibrada, é um indicador.

Referências

  1. Wang, X. et al.. Self-Consistency Improves Chain of Thought Reasoning in Language Models (2022)arXiv:2203.11171
  2. Wei, J. et al.. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models (2022)arXiv:2201.11903
  3. Kojima, T. et al.. Large Language Models are Zero-Shot Reasoners (2022)arXiv:2205.11916
  4. Fu, Y. et al.. Complexity-Based Prompting for Multi-Step Reasoning (2022)arXiv:2210.00720