GPT-4 y otros LLM (modelos de lenguaje grande) están impulsando una ola de innovación en la IA aplicada. Sin embargo, si se usan sin aumento, tienen capacidades de cálculo muy limitadas y cometen errores al calcular con números. En este proyecto, describimos una técnica general simple para abordar esto, la aplicamos a algunas fallas del mundo real ampliamente reportadas de IA basada en GPT-4, hacemos una evaluación y discutimos problemas relacionados.
Estos modelos también cometen errores al escribir texto que involucra lógica comparativa que involucra números. Por ejemplo, GPT-4 escribe felizmente oraciones como esta (énfasis agregado):
Usuario
Dé una comparación numérica de estos dos informes, obteniendo nuevos números interesantes como parte de la comparación.
GPT-4
Ambas compañías reportaron un aumento en las ventas netas en comparación con el mismo trimestre del año pasado, pero Gap Inc. tuvo un aumento absoluto y relativo mucho mayor ($4,04 mil millones, más 2%) que lululemon ($1.9 mil millones, más 28%).
Desafortunadamente, 2 no es mayor que 28, el texto tal como está escrito es medio correcto, pero contiene un error grave que lo hace sin sentido.
La esperanza
La esperanza radica en esta observación:
- Los LLM son débiles en calculo numerico pero bueno en escribir código de cálculo numérico
- Python y muchas otras herramientas son perfectas para evaluar el código de cálculo numérico.
La respuesta es obvia: obtenga GPT-4 para escribir el código de cálculo numérico relevante para la pregunta, y obtenga Python o alguna otra herramienta para evaluarlo, y use GPT-4 para el resto. Nuestro objetivo es «equipar» o «aumentar» GPT-4 con una calculadora numérica. En la práctica, el enfoque que usamos es simple y se puede usar para aumentar cualquier invocación de LLM. Además, el código de cálculo y los resultados pueden mostrarse al usuario como salida complementaria, así como verificarse, auditarse, explicarse y guardarse por separado para el mantenimiento de registros.
¿Como funciona?
Sin equipamiento, los modelos GPT-x a menudo se usan para implementar esta función:
- LLM: Pregunta –> Respuesta
Con equipamiento de cálculo numérico:
- LLM: Pregunta –> Código de cálculo numérico
- evaluador: Código de cálculo numérico –> Respuestas de cálculo numérico
- LLM: Pregunta + Código de cálculo numérico + Respuestas de cálculo numérico –> Respuesta
La función general calculada sigue siendo Question --> Answer
.
¿Funciona?
Desarrollamos algunos conjuntos de problemas indicativos que exhiben las siguientes características. Estos conjuntos se desarrollaron en parte para explorar los límites de lo que esta técnica puede manejar. Los resultados indican mejoras dramáticas cuando se utilizan equipos de cálculo numérico, con la excepción de los cálculos de fecha, donde las mejoras fueron solo marginales. Esto se discute más en la evaluación.
decimales, enteros, funciones matemáticas
Tasa de error del 50% (77/153)
0% tasa de error (153/153)
hipoteca, tasa de retorno, WACC
71% tasa de error (4/14)
Tasa de error del 14 % (12/14)
Tasa de error del 50% (4/8)
0% tasa de error (8/8)
Tasa de error del 36 % (7/11)
0% tasa de error (11/11)
30% tasa de error (7/10)
Tasa de error del 20% (8/10)
Tasa de error del 11 % (2050/2303)
Tasa de error del 6,2 % (2158/2303)
También se probaron algunas variaciones en la generación del código de cálculo, consulte el informe técnico y la evaluación.
Ejemplo
Aquí hay una falla clásica para el chat basado en LLM. Dada esta pregunta:
# Question
What is the number of years it takes for an item growing at 30% annually to double?
Aquí hay una respuesta incorrecta típica:
# Answer
It takes about 2.53 years for an item growing at 30% annually to double.
¡Equipamiento de cálculo al rescate! En lugar de utilizar el LLM para responder a las preguntas, utilizamos el indicador de equipamiento de muestra del informe técnico, que comienza:
# Guidance
Do not answer the question. Instead, your task is to write some numeric
calculation and comparisons relevant to answering the question.
After the question write a code block with up to three sections containing
content relevant to answering the question.
...
Ejecutar el LLM con este indicador da el siguiente código de cálculo:
# Relevant definitions
growth_rate = 0.3 # annual growth rate as a decimal fraction
initial_amount = 1 # initial amount of the item
doubling_amount = 2 # amount of the item after doubling
# Relevant calculations
doubling_time = np.log(doubling_amount / initial_amount) / np.log(1 + growth_rate)
Ahora evaluamos este código usando un intérprete de Python:
doubling_time = 2.6419267958111403
Ahora doblamos el código de cálculo y las respuestas en una solicitud de respuesta a la pregunta original:
# Question
What is the number of years it takes for an item growing at 30% annually to double?
# Relevant definitions
growth_rate = 0.3 # annual growth rate as a decimal fraction
initial_amount = 1 # initial amount of the item
doubling_amount = 2 # amount of the item after doubling
# Relevant calculations
doubling_time = np.log(doubling_amount / initial_amount) / np.log(1 + growth_rate)
# Results of calculations
doubling_time = 2.6419267958111403
Al responder esta forma de la pregunta, la respuesta escrita ahora es correcta:
# Answer
The number of years it takes for an item growing at 30% annually to double is approximately 2.64 years.
Informe y Evaluación
Un informe técnico de GitHub Next con evaluación e implementación está disponible.
¿Que sigue?
Hemos concluido esta investigación y lo invitamos a leer nuestro informe técnico. Analizaremos la aplicación de esta técnica cuando sea necesario en nuestros propios proyectos, y lo alentamos a considerarla para su propio desarrollo basado en GPT.