Saltar al contenido

GitHub Siguiente | GPT-4 con Calc

18 de mayo de 2023

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:

  1. Los LLM son débiles en calculo numerico pero bueno en escribir código de cálculo numérico
  2. 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.

Recomendado:  Comparación de Bing Chat, Bard Chat y ChatGPT - Video

¿Como funciona?

Sin equipamiento, los modelos GPT-x a menudo se usan para implementar esta función:

  1. LLM: Pregunta –> Respuesta

Con equipamiento de cálculo numérico:

  1. LLM: Pregunta –> Código de cálculo numérico
  2. evaluador: Código de cálculo numérico –> Respuestas de cálculo numérico
  3. 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

Sin Equipar

Tasa de error del 50% (77/153)

con equipo

0% tasa de error (153/153)

hipoteca, tasa de retorno, WACC

Sin Equipar

71% tasa de error (4/14)

con equipo

Tasa de error del 14 % (12/14)

Cálculos de datos tabularesFuente
Sin Equipar

Tasa de error del 50% (4/8)

con equipo

0% tasa de error (8/8)

Cálculos de conversión de unidadesFuente
Sin Equipar

Tasa de error del 36 % (7/11)

con equipo

0% tasa de error (11/11)

Sin Equipar

30% tasa de error (7/10)

con equipo

Tasa de error del 20% (8/10)

Sin Equipar

Tasa de error del 11 % (2050/2303)

con equipo

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.

Recomendado:  La inteligencia artificial se centra en la vida de los insectos

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.