Last updated on August 7, 2024
Prompts do tipo "Menor para o Maior" (MpM) (Least to Most prompting ou LtM, em inglês) são uma extensão dos prompts to tipo Cadeia de Pensamento - CdP. Contudo esse tipo de prompt quebra o problema principal em diversos problemas menores. Essa técnica é inspirada em estratégias aplicadas no ensino infantil.
Como na técnica de CdP prompting, o problema a ser resolvido é decomposto em um conjunto de subproblemas que se constroem uns sobre os outros. Em um segundo momento, esses subproblemas são resolvidos um por um. Contrariamente à cadeia de pensamento, a solução dos subproblemas anteriores é inserida na prompt tentando resolver o próximo problema.
Diagrama representando o prompt Menor para o Maior (MpM)
Vamos fazer uma pergunta um pouco complicada:
A resposta está incorreta (o cliente está dentro da janela em que é possível retornar o produto). Sendo assim, vamos dividir o problema em questões menores. Vamos tentar resolver o primeiro subproblema:
Ao resolver apenas o primeiro subproblema, fomos capazes de resolver o problema inteiro. Se o GPT-3 não retornasse uma resposta imediatamente, poderíamos ter resolvido o próximo subproblema e assim por diante até que ele retornasse uma resposta. Observe que usamos Vamos pensar passo a passo
. A adição dessa frase nem sempre é necessária, mas ajuda neste exemplo.
O MpM foi originalmente introduzido usando promptings de poucas amostras, em vez de uma instrução explícita para dividir um problema em várias etapas (como visto acima). Além disso, às vezes pode ser implementado com um único prompt em vez de prompts encadeados. Vamos examinar o problema de concatenar a última letra de palavras individuais (por exemplo, dadas as palavras bolo, etimologia
como entrada, a saída deve ser oa
).
O prompt padrão com alguns exemplos few-shot tem uma performance muito ruim, mesmo com um modelo mais avançado como o text-davinci-003.
A técnica da cadeia de pensamento funciona significativamente melhor do que a técnica padrão de prompt. Isso ocorre porque ela permite que o modelo considere extrair a última letra de cada palavra por conta própria, reduzindo a complexidade da operação de agrupar as letras coletadas anteriormente. No entanto, essa técnica começa a se tornar menos eficiente em tamanhos maiores.
Com a técnica de "Menor para Maior", aprimoramos o conceito de "Cadeia de Pensamento" alterando cada etapa para reformular o resultado previamente concatenado. Isso simplifica cada etapa, pois a máquina deve pconcatenar apenas uma única letra nova. Isso leva a um bom desempenho, principalmente quando trabalhamos com 12 ou mais palavras.
Essa abordagem pode parecer muito semelhante à Cadeia de Pensamento, mas é conceitualmente muito diferente. Aqui, em cada etapa, introduzimos a concatenação anterior. No caso de "pensar, máquina, aprendendo", em vez de concatenar as letras "r", "a", "o" individualmente, concatenaremos "r" e "a", depois "ra" e "o". Como resultado dessa reintrodução do trabalho anterior, o modelo agora pode generalizar para cadeias muito mais longas, pois carrega o resultado incrementalmente e precisa fazer apenas uma pequena quantidade de trabalho em cada etapa.
No último problema de concatenação de letras com 12 palavras, Cadeia de Pensamento tem uma precisão de 34%, enquanto Menor para o Maior tem uma precisão de 74% (o artigo utiliza o modelo text-davinci-002).
O benchmark SCAN exige que o modelo converta linguagem natural em sequências de ações. Por exemplo, a frase "corra para a esquerda e caminhe duas vezes" seria traduzida para "VIRE_ESQUERDA + CORRA + CAMINHE * 2". Modelos de linguagem têm desempenho especialmente ruim quando confrontados com sequências mais longas do que as do conjunto de treinamento.
Usando um prompt padrão, o text-davinci-003 tem um desempenho bom, mas ainda falha em resolver a pergunta.
Aqui, trabalhamos com dois prompts diferentes. O primeiro prompt é usado para reduzir o problema de entrada em uma sequência de etapas mais simples. O segundo prompt é usado para mapear essa sequência simplificada de etapas em ações reais.
Ambos os prompts são bastante longos e usam notação Python comprimida para a ação a fim de economizar tokens.
O primeiro passo quebra a descrição da linguagem natural em uma linguagem mais explícita, porém ainda humana. Isso ajudará o passo de mapeamento a entender as coisas em sequência.
Por exemplo, "pular para a esquerda duas vezes"
é reduzido para "pular para a esquerda"
-> virar à esquerda + pular
e "pular para a esquerda"
-> (virar à esquerda + pular) * 4
. Da mesma forma, o passo de redução é o que é usado para explicar o conceito de repetição (duas vezes, três vezes, etc.).
No segundo passo, usamos a saída da redução e novamente usamos um prompt bem longo (14 casos) para traduzir a descrição reduzida em linguagem natural em uma sequência de ações.
Aqui, injetamos a saída do primeiro passo:
"pular em volta à esquerda duas vezes" pode ser resolvido por: "pular à esquerda", "pular em volta à esquerda", "pular em volta à esquerda duas vezes". "andar na direção oposta à esquerda três vezes" pode ser resolvido por: "andar na direção oposta à esquerda", "andar na direção oposta à esquerda três vezes". Então, "pular em volta à esquerda duas vezes depois de andar na direção oposta à esquerda três vezes" pode ser resolvido por: "pular à esquerda", "pular em volta à esquerda", "pular em volta à esquerda duas vezes", "andar na direção oposta à esquerda", "andar na direção oposta à esquerda três vezes".
MpM leva a várias melhorias:
A solicitação padrão com text-davinci-002 (o modelo usado no artigo) resulta em 6% de problemas SCAN resolvidos com sucesso, enquanto a solicitação Menor para o Maior resulta em uma impressionante taxa de sucesso de 76%. Os resultados são ainda mais significativos com code-davinci-002, onde a solicitação Menor para o Maior alcança uma taxa de sucesso de 99,7%.
Zhou, D., Schärli, N., Hou, L., Wei, J., Scales, N., Wang, X., Schuurmans, D., Cui, C., Bousquet, O., Le, Q., & Chi, E. (2022). Least-to-Most Prompting Enables Complex Reasoning in Large Language Models. ↩
Wei, J., Wang, X., Schuurmans, D., Bosma, M., Ichter, B., Xia, F., Chi, E., Le, Q., & Zhou, D. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. ↩
Lake, B. M., & Baroni, M. (2018). Generalization without Systematicity: On the Compositional Skills of Sequence-to-Sequence Recurrent Networks. https://doi.org/10.48550/arXiv.1711.00350 ↩ ↩2