ChatPaper.aiChatPaper

Cadena de Código: Razonamiento con un Emulador de Código Aumentado por un Modelo de Lenguaje

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

Resumen

El código proporciona una estructura sintáctica general para construir programas complejos y realizar cálculos precisos cuando se combina con un intérprete de código. Planteamos la hipótesis de que los modelos de lenguaje (LMs) pueden aprovechar la escritura de código para mejorar el razonamiento de Cadena de Pensamiento (Chain of Thought, CoT), no solo en tareas de lógica y aritmética, sino también en tareas lingüísticas (y en particular, aquellas que son una mezcla de ambas). Por ejemplo, considere solicitar a un LM que escriba código que cuente el número de veces que detecta sarcasmo en un ensayo: el LM podría tener dificultades para escribir una implementación de "detect_sarcasm(string)" que pueda ser ejecutada por el intérprete (manejar los casos extremos sería insuperable). Sin embargo, los LMs aún podrían producir una solución válida si se utilizan no solo para escribir el código, sino también para "emular" selectivamente el intérprete generando la salida esperada de "detect_sarcasm(string)" y otras líneas de código (por ejemplo, que el intérprete no pudo compilar). En este trabajo, proponemos Cadena de Código (Chain of Code, CoC), una extensión simple pero sorprendentemente efectiva que mejora el razonamiento impulsado por código en los LMs. La idea clave es alentar a los LMs a formatear sub-tareas lingüísticas en un programa como pseudocódigo flexible, de modo que el compilador pueda detectar explícitamente comportamientos indefinidos y delegarlos para simular con un LM (como un "LMulator"). Los experimentos demuestran que Cadena de Código supera a Cadena de Pensamiento y otras líneas base en una variedad de benchmarks; en BIG-Bench Hard, Cadena de Código alcanza un 84%, una mejora del 12% sobre Cadena de Pensamiento. CoC escala bien tanto con modelos grandes como pequeños, y amplía el alcance de las preguntas de razonamiento que los LMs pueden responder correctamente al "pensar en código". Página web del proyecto: 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