ChatPaper.aiChatPaper

Cadeia de Código: Raciocínio com um Emulador de Código Aumentado por Modelo de Linguagem

Chain of Code: Reasoning with a Language Model-Augmented Code Emulator

December 7, 2023
Autores: Chengshu Li, Jacky Liang, Andy Zeng, Xinyun Chen, Karol Hausman, Dorsa Sadigh, Sergey Levine, Li Fei-Fei, Fei Xia, Brian Ichter
cs.AI

Resumo

O código fornece uma estrutura sintática geral para construir programas complexos e realizar computações precisas quando combinado com um interpretador de código -- nós hipotetizamos que modelos de linguagem (LMs) podem aproveitar a escrita de código para aprimorar o raciocínio em Cadeia de Pensamento (Chain of Thought) não apenas para tarefas de lógica e aritmética, mas também para tarefas linguísticas (e, em particular, aquelas que são uma mistura de ambas). Por exemplo, considere solicitar a um LM que escreva um código que conte o número de vezes que ele detecta sarcasmo em um ensaio: o LM pode ter dificuldade em escrever uma implementação para "detect_sarcasm(string)" que possa ser executada pelo interpretador (lidar com os casos extremos seria insuperável). No entanto, os LMs ainda podem produzir uma solução válida se forem usados não apenas para escrever o código, mas também para "emular" seletivamente o interpretador, gerando a saída esperada de "detect_sarcasm(string)" e outras linhas de código (por exemplo, que o interpretador não conseguiu compilar). Neste trabalho, propomos a Cadeia de Código (Chain of Code, CoT), uma extensão simples, mas surpreendentemente eficaz, que melhora o raciocínio orientado por código dos LMs. A ideia principal é incentivar os LMs a formatar sub-tarefas linguísticas em um programa como pseudocódigo flexível, onde o compilador pode capturar explicitamente comportamentos indefinidos e repassá-los para simulação com um LM (como um "LMulator"). Experimentos demonstram que a Cadeia de Código supera a Cadeia de Pensamento e outras abordagens de referência em uma variedade de benchmarks; no BIG-Bench Hard, a Cadeia de Código alcança 84%, um ganho de 12% em relação à Cadeia de Pensamento. A CoT escala bem tanto com modelos grandes quanto pequenos e amplia o escopo de questões de raciocínio que os LMs podem responder corretamente ao "pensar em código". Página do projeto: https://chain-of-code.github.io/.
English
Code provides a general syntactic structure to build complex programs and perform precise computations when paired with a code interpreter -- we hypothesize that language models (LMs) can leverage code-writing to improve Chain of Thought reasoning not only for logic and arithmetic tasks, but also for linguistic ones (and in particular, those that are a mix of both). For example, consider prompting an LM to write code that counts the number of times it detects sarcasm in an essay: the LM may struggle to write an implementation for "detect_sarcasm(string)" that can be executed by the interpreter (handling the edge cases would be insurmountable). However, LMs may still produce a valid solution if they are used not only to write the code, but also to selectively "emulate" the interpreter by generating the expected output of "detect_sarcasm(string)" and other lines of code (e.g., that the interpreter could not compile). In this work, we propose Chain of Code (CoT), a simple yet surprisingly effective extension that improves LM code-driven reasoning. The key idea is to encourage LMs to format linguistic sub-tasks in a program as flexible pseudocode that the compiler can explicitly catch undefined behaviors and hand off to simulate with an LM (as an "LMulator"). Experiments demonstrate that Chain of Code outperforms Chain of Thought and other baselines across a variety of benchmarks; on BIG-Bench Hard, Chain of Code achieves 84%, a gain of 12% over Chain of Thought. CoT scales well with large and small models alike, and broadens the scope of reasoning questions that LMs can correctly answer by "thinking in code". Project webpage: https://chain-of-code.github.io/.
PDF334December 15, 2024