A principios de este año, Matt Welsh anunció que la programación estaba llegando a su fin. Escribió en ACM Communications:
Creo que la idea tradicional de "escribir programas" está muriendo, de hecho, para todas las aplicaciones que no sean muy especializadas, tal como las conocemos, la mayor parte de la programación de software será reemplazada por sistemas de IA entrenados. En algunos casos en los que solo se necesitan programas "simples" (después de todo, no todo requiere modelos de cientos de miles de millones de parámetros que se ejecutan en clústeres de GPU), los programas en sí serán generados directamente por IA, en lugar de codificados a mano.
Unas semanas más tarde, en un discurso, Wales amplió sus observaciones sobre la muerte. No es solo el arte de la programación lo que se va a la tumba, sino la informática en su conjunto. Toda la informática está "condenada". (La imagen de abajo es una captura de pantalla del discurso). )
Los que transmiten estos tristes mensajes no parecen estar abrumados por el dolor. Aunque Welsh se ha convertido en profesor y practicante de ciencias de la computación (en Harvard, Google, Apple y otros lugares), parece ansioso por pasar al siguiente paso. "De todos modos, ¡escribir código apesta!" Declaró.
No soy tan optimista sobre el futuro de la post-programación. En primer lugar, soy escéptico. No creo que hayamos cruzado el umbral para que las máquinas aprendan a resolver problemas computacionales interesantes por sí mismas. No creo que estemos cerca de eso todavía, o que nos estemos moviendo en la dirección correcta. Además, si resulta que mi punto de vista es erróneo, mi impulso no es consentir sino resistir. Por un lado, no doy la bienvenida a nuestro nuevo señor supremo de la IA. Incluso si demuestran ser mejores programadores que yo, seguiré usando mi editor de código y compilador, gracias. "¿La programación apesta?" Para mí, ha sido durante mucho tiempo una fuente de alegría e inspiración. También me parece una herramienta valiosa para entender el mundo. Nunca estoy seguro de si lo entiendo hasta que soy capaz de reducir una idea a código. Para beneficiarme de esta experiencia de aprendizaje, tuve que escribir el programa en lugar de limitarme a decir algunas palabras mágicas e invocar a un genio de la lámpara de IA de Aladdin.
Modelo de lenguaje grande
La idea de que las máquinas programables puedan escribir sus propios programas está profundamente arraigada en la historia de la computación. Charles Babbage insinuó esta posibilidad ya en 1836 cuando discutió su plan para una máquina analítica. Cuando se introdujo Fortran en 1957, su nombre oficial era "Sistema de codificación automática FORTRAN". Su objetivo declarado es que las computadoras "codifiquen problemas por sí mismas y produzcan programas que sean tan buenos (pero sin errores) como los codificadores humanos".
Fortran no elimina los trucos (o errores) de programación, pero hace que el proceso sea menos tedioso. Los lenguajes posteriores y otras herramientas trajeron nuevas mejoras. Y el sueño de una programación totalmente automatizada nunca se ha visto frustrado. Las máquinas parecen ser más adecuadas para la programación que la mayoría. Las computadoras son metódicas, sujetas a reglas, fastidiosas y literales: todos estos rasgos (correctos o incorrectos) se asocian con programadores expertos.
Irónicamente, los sistemas de IA ahora listos para asumir tareas de programación extrañamente no son como las computadoras. Sus personalidades se parecen más a Deanna Troi que al comandante Data. La consistencia lógica, el razonamiento causal y la cuidadosa atención a los detalles no son sus puntos fuertes. Tienen momentos increíblemente brillantes en los que parecen estar reflexionando sobre pensamientos profundos, pero también tienen el potencial de un fracaso asombroso: errores de razón flagrantes y descarados. Me recuerdan a una vieja broma: la gente comete errores, y se necesita una computadora para estropear las cosas.
El último sistema de IA se llama Big Language Model (LLM). Al igual que la mayoría de los otros inventos recientes de IA, se basan en redes neuronales artificiales, una estructura de múltiples capas inspirada en la estructura del cerebro. Los nodos de una red son similares a las neuronas biológicas, y las conexiones entre los nodos actúan como sinapsis, que son los puntos de conexión donde se transmiten las señales de una neurona a otra. La red de entrenamiento puede ajustar la fuerza o el peso de la conexión. En un modelo de lenguaje, el entrenamiento se realiza forzando una gran cantidad de texto en la red. Una vez finalizado el proceso, las ponderaciones de combinación codifican estadísticas detalladas sobre las características lingüísticas del texto de entrenamiento. En el modelo más grande, el número de pesos es de 100 mil millones o más.
En este caso, el término modelo puede inducir a error. El término no se refiere a modelos a escala o modelos en miniatura, como modelos de aviones. En cambio, se refiere a modelos predictivos, como los modelos matemáticos que se encuentran comúnmente en la ciencia. Al igual que los modelos atmosféricos predicen el clima de mañana, los modelos lingüísticos predicen la siguiente palabra en una oración.
El modelo de lenguaje a gran escala más famoso es ChatGPT, que se lanzó al público el otoño pasado y atrajo una gran atención. Abreviatura GPT Gee Pee Tee: Mi lengua está constantemente tropezando con estas tres sílabas que riman. Otros productos de IA tienen nombres lindos, como Bart, Claude, Llama; Ojalá pudiera cambiar el nombre de GPT con el mismo espíritu. Yo lo llamaría Geppetto, y se hace eco del patrón de las consonantes. GPT son las siglas de Generative Pre-Trained Transformer (Transformador Pre-Entrenado Generativo); La versión de chat del sistema está equipada con una HMI conversacional. ChatGPT fue desarrollado por OpenAI, que se fundó en 2015 para liberar a la IA del control de un puñado de empresas tecnológicas adineradas. OpenAI ha cumplido con éxito esta misión hasta el punto de que se ha convertido en una rica empresa tecnológica.
ChatGPT es a la vez admirable e impactante por su redacción, su capacidad para hablar bien, su fluidez en inglés y otros idiomas. El chatbot puede imitar a autores famosos, contar chistes, escribir cartas de amor, traducir poesía, escribir spam, "ayudar" a los estudiantes con la tarea e inventar información errónea para la desinformación política. Para bien o para mal, estas habilidades lingüísticas representan avances tecnológicos asombrosos. Las computadoras que alguna vez lucharon por construir una oración comprensible de repente se convirtieron en maestras de las palabras. Lo que dice GPT puede ser cierto o no, pero casi siempre está bien redactado.
Poco después del lanzamiento de ChatGPT, me sorprendió descubrir que su dominio del lenguaje se extendía a los lenguajes de programación. El conjunto de entrenamiento del modelo parece incluir no solo varios lenguajes naturales, sino también una gran cantidad de código fuente de programas de repositorios públicos como GitHub. Basándose en este recurso, GPT es capaz de escribir nuevos programas basados en comandos. Esto me pareció sorprendente porque las computadoras son muy exigentes e implacables con sus entradas. Aunque las computadoras a veces tienen pequeños errores, como faltas de ortografía, los lectores humanos tienen dificultades para entender una oración. Pero si la computadora recibe una entrada incluso con una coma o un paréntesis no coincidente, vomitará confuso. Parece poco probable que los modelos de lenguaje con propiedades potencialmente estadísticas o probabilísticas mantengan la precisión requerida más allá de unas pocas líneas.
Volví a equivocarme en este asunto. Una innovación clave en los grandes modelos de lenguaje, el mecanismo de atención, resuelve este problema. Cuando empecé a experimentar con ChatGPT, rápidamente descubrí que, efectivamente, podía generar programas sin errores gramaticales por descuido.
Pero siguieron otros problemas.
Subiendo la escalera de la palabra
Cuando te sientas a charlar con una máquina, inmediatamente te enfrentas a una pregunta incómoda: "¿De qué deberíamos hablar?" Estoy buscando un tema que mida de manera justa las capacidades de programación de ChatGPT. Quiero un problema que pueda resolverse por medios computacionales, pero esto no requiere mucha aritmética, lo que se considera una de las debilidades de los grandes modelos de lenguaje. Elegí el juego de anagramas inventado por Lewis Carroll hace 150 años y analizado en profundidad por Donald E. Knuth en los años 90 del siglo XX.
En la transcripción a continuación, todos los intercambios de mi lado están marcados como BR; La roseta es el logotipo de OpenAI que especifica la respuesta de ChatGPT.
Cuando vi estas frases desarrollarse en la pantalla, el chatbot escribiéndolas palabra por palabra, un poco erráticas, como si se detuviera a ordenar mis pensamientos, me quedé impresionado de inmediato por la capacidad de inglés del sistema. GPT enumera todas las características básicas de la escalera de palabras en una prosa simple y poderosa: es un juego o rompecabezas en el que pasas de una palabra a otra cambiando una letra a la vez, cada peldaño de la escalera debe ser una palabra en inglés y el objetivo es encontrar la secuencia más corta posible desde la palabra inicial hasta la palabra objetivo. Yo mismo no puedo explicarlo mejor. El más útil es el ejemplo de trabajo de COLD-> WARM.
No son solo las oraciones individuales las que dan la impresión de habilidad lingüística. Las oraciones se organizan en párrafos, que se encadenan para formar un discurso coherente. ¡Genial!
También es notable la capacidad del robot para manejar entradas difusas y descuidadas. Mi consulta inicial se formuló como una pregunta de sí o no, pero ChatGPT la interpretó correctamente como una solicitud: "Dime qué sabes sobre la palabra escalera". Mi segunda instrucción ignora cualquier señal tipográfica que indique que PLOMO y ORO deben entenderse como palabras, no como metal. Se suponía que el chatbot me proporcionaría recetas de alquimia, pero proporcionó las citas que faltaban.
Sin embargo, dejando a un lado toda esta complejidad lingüística y retórica, lo que realmente quería probar era la capacidad del programa para resolver el problema de la escalera de palabras. Ambos ejemplos de la transcripción anterior se pueden encontrar en la web, por lo que es probable que aparezcan en los datos de entrenamiento de ChatGPT. En otras palabras, los modelos de lenguaje grandes pueden simplemente recordar las soluciones en lugar de crearlas. Así que presenté una tarea aún más difícil:
A primera vista, ChatGPT parece haber triunfado de nuevo, resolviendo un rompecabezas que estoy seguro de que nunca antes había encontrado. Pero míralo más de cerca. MARSH -> MARIS REQUIERE UNA SUSTITUCIÓN DE DOS LETRAS, AL IGUAL QUE PARIL -> ABRIL. También se puede cuestionar la condición de MARIS y PARIL como "palabras válidas". Me he quejado:
¡Uau! El robot ofrece confesiones y disculpas resbaladizas, pero la escalera "correcta" es más loca que nunca. Parece que estamos jugando al Scrabble con Humpty Dumpty en la canción infantil de Mother Goose y también declarando "¡Yo digo que APRCHI es una palabra, él es una palabra!" A continuación, dispersa todas las fichas.
No se trata de un fracaso aislado y único. Todos mis intentos de resolver la escalera de palabras con ChatGPT se desviaron, aunque no siempre de la misma manera. En un caso, pedí una escalera de REACH a GRASP. A los expertos en IA se les ocurre esta solución:
Ahora balbuceamos como niños pequeños que acaban de aprender a contar: "¡Uno, dos, tres, cuatro, cuatro, tres, cuatro, cuatro, siete, azul, diez!" "
Todos los resultados que he mostrado hasta ahora están documentados con la versión 3.5 de ChatGPT. También probé la nueva y mejorada versión 4.0, que salió en marzo. El robot actualizado exuda la misma confianza amable, pero me temo que tiene las mismas tendencias, cayendo en la incoherencia casual:
La escalera comienza bien con cuatro escalones, siguiendo todas las reglas. Pero luego la IA se distrae. PASAR DE PLAGE A PAGES REQUIERE UNA SUSTITUCIÓN DE CUATRO LETRAS. LUEGO ESTÁ PASES, QUE NO ES UNA PALABRA (QUE YO SEPA) Y NO ES NECESARIA AQUÍ DE TODOS MODOS, YA QUE LAS SECUENCIAS PUEDEN IR DIRECTAMENTE DE LAS PÁGINAS A LOS PARES. Más estupidez siguió. Aun así, agradezco la nota informativa sobre PLAGE.
Recientemente también tuve la oportunidad de probar Llama 2, un LLM publicado por Meta (gente de Facebook). Aunque este modelo se desarrolló independientemente de GPT, parece tener algunas de las mismas peculiaridades psicológicas, como establecer reglas y luego ignorarlas. Cuando pedí una escalera que conectara REACH y GRASP, Llama 2 sugirió esto:
Matt Welsh menciona dos modos de operación para sistemas informáticos construidos sobre grandes modelos de lenguaje. Hasta ahora, hemos estado trabajando en lo que yo llamo modo profético, en el que haces una pregunta y la computadora devuelve una respuesta. Proporcionas un par de palabras y el sistema encuentra una escalera que las conecta y realiza los cálculos necesarios para llegar allí. Entregas una caja de zapatos llena de registros financieros y la computadora llena tu formulario 1040. Compilas datos climáticos históricos y la computadora predice la temperatura global promedio en 2050.
La alternativa a los oráculos de IA es el AI Code Monkey. En el segundo modo, la máquina no responde directamente a sus preguntas ni realiza sus cálculos; En su lugar, crea un programa que puede ejecutarse en un ordenador convencional. En lugar de una escalera de palabras del bot, devuelve un programa que genera una escalera de palabras, escrita en el lenguaje de programación de su elección. En lugar de completar una declaración de impuestos completa, obtiene un software de preparación de impuestos; Los modelos climáticos sustituyen a las predicciones de temperatura.
Vamos a probarlo con ChatGPT 3.5:
Puede usar la función wordLadder para resolver acertijos de escaleras. A continuación, se muestra un ejemplo de uso:
Su salida es:
Tenga en cuenta que se trata de una demostración básica y, para escalas más grandes o escenarios más complejos, es posible que se requieran optimizaciones o algoritmos adicionales, como la búsqueda de amplitud primero.
Una vez más, un vistazo rápido a la salida muestra que el rendimiento fue exitoso. ChatGPT parece tener tanta fluidez en Java como en inglés. Conoce la sintaxis de las sentencias if, while y for, así como todas las reglas de puntuación y paréntesis quisquillosas. Los programas generados por máquinas parecen combinar todos estos componentes para realizar una tarea específica. También hay que prestar atención a la gran cantidad de comentarios explicativos, que sin duda son para nuestro beneficio, no para él. Del mismo modo, los nombres de variables descriptivos (currentWord, newWord, ladder).
ChatGPT también incluye de forma proactiva instrucciones para ejecutar el programa en un ejemplo específico (de marzo a abril), e imprime el resultado que coincide con la respuesta dada en nuestro intercambio anterior. ¿Ese resultado se genera al ejecutar realmente el programa? ChatGPT no lo dice explícitamente, pero sí afirma que si ejecuta el programa según las instrucciones, obtendrá los resultados mostrados (con toda la gloria ridícula).
Podemos probar esta declaración cargando el programa en un navegador web u otro entorno de ejecución de Java. La conclusión: ¡atrapado! El programa se ejecutó, pero no produjo el resultado especificado. EL RESULTADO REAL DEL PROGRAMA ES: MARZO -> AARCH -> ABRIL -> ABRIL -> ABRIL. Esta secuencia no es tan extraña porque sigue la regla de cambiar solo una letra a la vez, y todas las "palabras" tienen exactamente cinco letras. Por otro lado, no se puede encontrar ninguna "palabra" intermedia en los diccionarios de inglés.
EXISTE UN ALGORITMO SIMPLE QUE GENERA SECUENCIAS MARCH -> AARCH -> APRCH -> APRIH -> ABRIL. Simplemente repasa la palabra inicial paso a paso de izquierda a derecha, cambiando la letra en cada posición para que coincida con la letra correspondiente en la palabra objetivo. Siguiendo esta regla, cualquier par de palabras de cinco letras se puede organizar en pasos en no más de cinco pasos. MARZO -> ABRIL da solo cuatro pasos porque no es necesario cambiar la R en el medio. No puedo imaginar una manera más fácil de hacer una escalera de palabras, asumiendo, por supuesto, que estás dispuesto a hacer que cualquier mezcla de letras cuente como una sola palabra.
El programa creado por ChatGPT puede usar esta rutina rápida y sucia, pero hace algo mucho más tedioso: construye todas las escaleras posibles, la primera de las cuales es la palabra inicial, y continúa expandiendo esas escaleras hasta que se topa con una que contiene la palabra objetivo. Este es un algoritmo de fuerza bruta derrochador. Cada letra de la palabra inicial se puede cambiar de 25 maneras. Así, una palabra de 5 letras tiene 125 posibles sucesores. Cuando llegas a la escalera de cinco peldaños, hay 190 millones de posibilidades. (LOS EJEMPLOS QUE HE PROPORCIONADO AQUÍ, COMO MARZO-> ABRIL Y REACH-> GRAMP, TIENEN UNA LETRA INVARIANTE, POR LO QUE LA SOLUCIÓN SOLO REQUIERE CUATRO PASOS). Tratar de calcular la solución completa de cinco pasos agotó mi paciencia. )
Mono de código de 4ª generación
Intentemos el mismo ejercicio de codificación con ChatGPT 4. Dada la misma pista, el nuevo bot responde de la siguiente manera:
El programa tiene la misma estructura general (un bucle while con dos bucles for anidados en su interior) y emplea la misma estrategia algorítmica (generando todas las cadenas que son diferentes de una palabra dada en un solo lugar). Pero la versión GPT-4 tiene una gran novedad: el reconocimiento de una lista de palabras es esencial. Con este cambio, finalmente tenemos la esperanza de generar una escalera de palabras reales.
Aunque GPT-4 reconoce la necesidad de una lista, sólo proporciona un marcador de posición, la secuencia de 10 palabras que configura para el ejemplo de REACH-> GRASP dado anteriormente. Los esbozos de esta lista de palabras son de poca utilidad, ni siquiera para regenerar la falsa escalera "REACH-to-GRASP". Si intenta hacer esto, el programa informará que no existe ninguna escalera. No hay nada de malo en este resultado, porque unas 10 palabras dadas no forman un camino efectivo para cambiar solo una letra por paso.
Incluso si las palabras de la lista se eligen cuidadosamente, el vocabulario de 10 es muy insignificante. Generar listas de palabras más grandes parece una tarea fácil para los modelos lingüísticos. Al fin y al cabo, el LLM se entrena en un enorme corpus de textos, donde es probable que casi todas las palabras en inglés aparezcan al menos una vez, mientras que las palabras comunes aparecen millones de veces. ¿No puede el robot tomar una muestra representativa de estas palabras? La respuesta es claramente no. Aunque se puede decir que GPT ha "leído" todo este texto, no almacena estas palabras en ninguna forma fácilmente accesible. (Lo mismo ocurre con los lectores humanos). ¿Puedes hacer una lista de las 10 palabras de cinco letras más comunes en tu vocabulario mirando hacia atrás en toda una vida de experiencias de lectura?
Cuando le pedí a ChatGPT 4 que generara una lista de palabras, se opuso disculpándose: "Lamento la confusión, pero como IA desarrollada por OpenAI, no puedo acceder directamente a la base de datos de palabras ni obtener la capacidad de obtener datos de fuentes externas..." Así que probé algunos trucos y le pedí al robot que escribiera una historia de 1000 palabras y luego ordenara las palabras de la historia por frecuencia. El truco funcionó, pero la muestra era demasiado pequeña para ser de mucha utilidad. Mientras me quede con él, es posible que pueda obtener una lista aceptable de GPT, pero estoy tomando un atajo. Al fin y al cabo, no soy una IA desarrollada por OpenAI y tengo acceso a recursos externos. Me apropié de una lista de 5.757 palabras inglesas de cinco letras compilada por Knuth para su experimento de la escalera de palabras. Con esta lista, los programas escritos en GPT-4 encontrarán el siguiente diagrama de escalera de nueve pasos:
ALCANCE -> MELOCOTÓN -> PAZ -> LUGAR -> PLANO -> PLANOS -> GLANILLAS -> VIDRIO -> HIERBA -> AGARRAR
Este resultado coincide exactamente con el resultado del propio programa de escalera de Knuth, que publicó hace 30 años en Stanford Graphbase.
En este punto, debo admitir que con un poco de ayuda externa, ChatGPT finalmente cumplió con mi solicitud. Escribe un programa que puede construir una escalera de palabras válida. Pero sigo teniendo mis reservas. Aunque GPT-4 y Knuth escriben programas que producen el mismo resultado, los programas en sí no son equivalentes, ni siquiera similares.
Knuth abordó este problema en la dirección opuesta, comenzando no con una colección de todas las posibles cadenas de cinco letras (que suman menos de 12 millones), sino con su lista mucho más pequeña de 5.757 palabras comunes en inglés. A continuación, construye un grafo (o red) en el que cada palabra es un nodo, y los dos nodos están conectados por aristas si y sólo si las palabras correspondientes difieren en una letra. En la ilustración siguiente se muestra un fragmento de un diagrama de este tipo.
En el diagrama, una escalera de palabras es una serie de aristas desde el nodo inicial hasta el nodo de destino. La mejor escalera es el camino más corto, atravesando el menor número de lados. Por ejemplo, el mejor camino de la correa a la arcada es la correa -> lixiviación -> alcance -> arcadas, pero también hay caminos más largos como la correa -> lixiviación -> playa -> melocotón -> alcance -> arcadas. Para encontrar el camino más corto, Knuth utilizó un algoritmo ideado por Edsger W. Dijkstra en los años 50 del siglo XX.
El programa de escalera de palabras de Knuth requiere una inversión inicial para convertir una simple lista de palabras en un gráfico. Por otro lado, evita generar de forma inútil miles o millones de cadenas de cinco letras que no pueden ser elementos de esta última. Para resolver el problema de REACH-> GRASP, el programa GPT-4 produjo 219.180 cadenas de este tipo; Solo 2.792 de ellas (poco más del 1%) son palabras reales.
Si los estudiantes presentan los diversos procedimientos de la escalera de palabras que describí, entonces daré una calificación reprobatoria a la versión sin una lista de palabras. El programa GPT-4 con la lista pasará, pero en aras de la eficiencia y la elegancia, solo le daré al programa Knuth las calificaciones más altas.
¿Por qué los chatbots prefieren algoritmos inferiores? Simplemente puede buscar en Google "programa de escalera de palabras" para obtener pistas. Casi todos los resultados mejor clasificados provinieron de sitios como Leetcode, GeeksForGeeks y RosettaCode. Estos sitios están claramente destinados a atender a los solicitantes de empleo y a los competidores en concursos de programación, con soluciones que requieren generar las 125 variantes de una sola letra de cada palabra, al igual que los programas GPT. Debido a que hay tantos sitios de este tipo, parece que hay cientos, son más importantes que otras fuentes, como el libro de Knuth (si el texto aparece en el conjunto de entrenamiento). ¿Significa esto que debemos culpar a Leetcode por la elección incorrecta del algoritmo, no a GPT? En cambio, me gustaría señalar las inevitables debilidades del protocolo, las más comunes de las cuales son la respuesta correcta por defecto.
Cada vez que pienso que se están escribiendo grandes modelos de lenguaje para todo nuestro software, me atormenta otra preocupación relacionada. ¿De dónde vienen los nuevos algoritmos? El modelo de lenguaje universitario puede ser creativo a la hora de remezclar elementos de proyectos existentes, pero no veo ninguna forma de que pueda inventar algo completamente nuevo y mejor.
** ¡Basta de la palabra escalera! **
Admito que he ido demasiado lejos, torturando a ChatGPT con demasiadas variantes de un problema particular (e irrelevante). Tal vez los modelos de lenguaje universitario funcionen mejor en otras tareas computacionales. He probado varios, con resultados mixtos. Solo quiero hablar de uno de ellos, y encuentro que los esfuerzos de ChatGPT son bastante conmovedores.
Con ChatGPT 3.5, pido el valor del número 100 de Fibonacci. Tenga en cuenta que mi pregunta se hizo en modo Oráculo; Estoy pidiendo este número, no un programa que lo calcule. Aún así, ChatGPT escribe voluntariamente un programa de Fibonacci y luego renderiza la salida de ese programa.
El algoritmo implementado por este programa es matemáticamente correcto; Proviene directamente de la definición de la sucesión de Fibonacci, que es un miembro de una secuencia que comienza en {0, 1}, con cada elemento subsiguiente igual a la suma de los dos primeros elementos. La respuesta dada también es correcta: 354224848179261915075 es, de hecho, el número 100 de Fibonacci. Entonces, ¿cuál es el problema? Es la oración del medio: "Cuando ejecute este código, generará el número 100 de Fibonacci". Esto no es cierto. Si ejecuta el código, obtendrá el valor incorrecto 354224848179262000000. Las versiones recientes de Java proporcionan el tipo de datos BigInt para resolver este problema, pero BigInt debe especificarse explícitamente, lo que los programas de ChatGPT no hacen. La razón de esta anomalía es que Java utiliza aritmética de coma flotante, incluso para valores enteros. De acuerdo con el estándar de punto flotante IEEE, el número entero máximo que se puede representar sin pérdida de precisión es 253−1; El número 100 de Fibonacci es aproximadamente 268. Esto es lo que yo llamo pensamiento conmovedor: ChatGPT da la respuesta correcta, pero el método que dice usar para calcular esa respuesta no la proporciona. El bot debe haber encontrado el valor correcto por algún otro medio, pero no se reveló la forma exacta.
Dar la misma tarea a ChatGPT 4.0 nos llevará a un viaje aún más extraño. En la siguiente interacción, activé Code Interpreter, un complemento de ChatGPT que permite al sistema probar y ejecutar parte del código que escribe. Aparentemente, el robot se aprovechó de esta característica, primero ideando un programa que falló por razones desconocidas:
Aquí ChatGPT está escrito en Python, el principal lenguaje de programación compatible con Code Interpreter. El primer intento de escribir un programa se basó en la exponenciación de matrices de Fibonacci:
Este es un método bien conocido y efectivo, y el programa lo implementa correctamente. Sin embargo, por razones misteriosas, el intérprete de código no puede ejecutar el programa. (El código funciona bien en un entorno estándar de Python y devuelve la respuesta correcta). )
En este punto, el robot girará en una dirección completamente nueva y despegará, lo que sugiere que el valor de Fibonacci requerido se calcule mediante una identidad matemática llamada fórmula de Binet. Había escrito expresiones matemáticas, pero luego cambió de opinión. Prevé correctamente el problema de la precisión numérica: dado un valor exacto de la raíz cuadrada de 5, la fórmula producirá un resultado exacto, pero esto no es factible.
Así que ahora ChatGPT ha adoptado una estrategia diferente, utilizando el mismo algoritmo iterativo que la versión 3.5. Esta vez obtuvimos la respuesta correcta porque Python (a diferencia de Java) no tiene ningún problema para tratar con números enteros grandes.
Me impresionó esta actuación, no solo por la respuesta correcta, sino también por la valiente persistencia del sistema. A pesar de los problemas de ChatGPT, perseveró, desconcertado por dificultades inesperadas, pero se negó a rendirse. "Bueno, ese método matricial debería funcionar. Pero, de todos modos, probemos la fórmula Binet... Oh, espera, se me olvidaba... De todos modos, no hay necesidad de ser tan sofisticado con esto. Hagámoslo de una manera obvia y lenta. Siento que es un enfoque muy humano para la resolución de problemas. Es extraño ver este comportamiento en las máquinas.
Registre las puntuaciones de éxito y fracaso
Mi pequeño experimento me hizo dudar de la afirmación de que los oráculos de IA y los monos de código de IA están a punto de desplazar a los programadores humanos. He visto algunos éxitos, pero más bien fracasos. Este sombrío registro fue compilado en tareas computacionales relativamente simples cuyas soluciones son bien conocidas y ampliamente publicadas.
Otros han hecho una evaluación más amplia y profunda de la generación de código LLM. En la bibliografía al final de este artículo, enumero cinco de estos estudios. Quisiera resumir brevemente algunos de los resultados que reportaron.
Hace dos años, Mark Chen y más de 50 colegas de OpenAI se esforzaron mucho en medir la precisión de Codex, una bifurcación de ChatGPT 3 dedicada a escribir código. (Desde entonces, Codex se ha convertido en el motor que impulsa GitHub Copilot, el "asistente del programador"). ) creó un conjunto de 164 tareas que se pueden realizar escribiendo programas en Python. Estas tareas son en su mayoría ejercicios de libros de texto, concursos de programación y tipos en la literatura (asombrosa) sobre cómo hacerlo bien en la codificación de entrevistas de trabajo. La mayoría de las tareas se pueden completar con solo unas pocas líneas de código. Ejemplo: Calcule el número de vocales en una palabra dada, determine si un número entero es primo o compuesto.
El equipo del profesor Chen también reflexionó sobre los criterios para definir el éxito y el fracaso. Debido a que el proceso LLM no es determinista (la selección de palabras se basa en la probabilidad), el modelo puede generar un programa defectuoso en el primer intento, pero eventualmente producirá la respuesta correcta si se permite que el intento continúe. Un parámetro llamado temperatura controla el grado de incertidumbre. A temperatura cero, el modelo siempre elige la palabra más probable en cada paso; A medida que aumenta la temperatura, se introduce la aleatoriedad, lo que permite la elección de palabras inverosímiles. Chen y cols. Considere la posibilidad de este cambio adoptando tres puntos de referencia de éxito:
pass@1: LLM genera el programa correcto en el primer intento
pass@10: Al menos uno de los 10 programas generados es correcto
pass@100: Al menos uno de los 100 programas generados es correcto
Pass@1 pruebas se realizan a temperatura cero, por lo que el modelo siempre da la mejor suposición. pass@10 y pass@100 ensayos se realizan a temperaturas más altas, lo que permite al sistema explorar una gama más amplia de posibles soluciones.
Los autores evaluaron múltiples versiones del Codex en las 164 tareas. Para la versión más grande y poderosa del Codex, la tasa de pass@1 es de aproximadamente el 29%, la tasa de pass@10 es del 47% y la pass@100 alcanza el 72%. ¿Deberíamos impresionarnos o sorprendernos cuando veamos estos números? ¿Vale la pena celebrar que el Codex tiene razón en el primer intento casi un tercio de las veces (cuando la temperatura se establece en cero)? ¿O si estaba dispuesto a examinar 100 planes propuestos para encontrar el correcto, la tasa de éxito subió a casi tres cuartas partes? Mi opinión personal es la siguiente: si se observa la generación actual de LLM como un esfuerzo pionero en un programa de investigación a largo plazo, los resultados son alentadores. Pero si crees que la tecnología puede reemplazar inmediatamente el software codificado a mano, hay pocas esperanzas. Todavía estamos lejos del nivel de fiabilidad necesario.
Otros estudios han arrojado resultados muy similares. Fredrico Cassano y cols. Evaluar el rendimiento de múltiples LLM generando código en una variedad de lenguajes de programación; Informan de una amplia gama de tasas de pass@1, pero solo dos superan el 50%. Alessio Buscemi probó ChatGPT 3.5 en 40 tareas de codificación, requiriendo programas escritos en 10 idiomas y repitiendo cada consulta 10 veces. De los 4.000 ensayos, 1.833 produjeron código que podía compilarse y ejecutarse. Liu Zhijie y cols. Su evaluación de ChatGPT se basa en preguntas publicadas en el sitio web de Leetcode. Juzgue los resultados enviando el código generado a un proceso automatizado de puntuación de Leetcode. La tasa media de aceptación de todas las preguntas osciló entre el 31% para los programas escritos en C y el 50% para los programas en Python. Liu et al. Otra observación interesante: ChatGPT obtuvo una puntuación mucho peor en las preguntas publicadas después de septiembre de 2021 (la fecha límite para el conjunto de entrenamiento de GPT). Especulan que el robot puede ser más capaz de resolver problemas anteriores porque ya ha visto una solución durante el entrenamiento.
Un artículo reciente publicado por Li Zhong y Zilong Wang va más allá de la cuestión básica de la corrección del programa y considera la robustez y la fiabilidad. ¿El programa generado responde correctamente a una entrada mal formada o a errores externos, como cuando se intenta abrir un archivo que no existe? A pesar de que el mensaje de LLM incluía un ejemplo que mostraba cómo manejar correctamente tales problemas, Zhong y Wang encontraron que el código generado no lo hacía entre el 30 y el 50 por ciento de las veces.
Además de estos resultados frustrantes, yo mismo tengo más dudas. Casi todas las pruebas se realizan a través de fragmentos de código cortos. Un LLM que tiene dificultades para escribir un programa de 10 líneas puede tener mayores dificultades para escribir un programa de 100 o 1,000 líneas. Además, una simple calificación de aprobado/reprobado es una medida muy aproximada de la calidad del código. Considere la prueba de primalidad en el conjunto de pruebas de referencia de grupo de Chen. Este es uno de los programas escritos en Codex:
Este código se clasifica como correcto: debería ser correcto porque nunca clasifica erróneamente los números primos como números compuestos y viceversa. Sin embargo, cuando n es grande, es posible que no tenga la paciencia o la vida para esperar un veredicto. El algoritmo intenta dividir n por cada número entero entre 2 y n−1.
Practicidad no convencional de LLM
Todavía es pronto para los modelos de lenguaje grandes. ChatGPT se lanzó hace menos de un año; La tecnología subyacente solo tiene unos seis años. Si bien estoy bastante seguro de que estoy afirmando que LLM no está listo para conquistar el mundo de la codificación, no puedo predecir con tanta confianza que nunca lo harán. Estos modelos definitivamente mejorarán y los usaremos mejor. Ya existe una industria emergente que ofrece orientación de "ingeniería justo a tiempo" como una forma de aprovechar al máximo cada consulta.
Otra forma de mejorar el rendimiento de LLM puede ser formar un híbrido con otro sistema informático equipado con herramientas de lógica y razonamiento en lugar de herramientas de análisis de lenguaje puro. En vísperas de su reciente muerte, Doug Lenat propuso combinar LLM con Cyc, una enorme base de datos de sentido común que pasó cuatro décadas trabajando para construir. Stephen Wolfram está trabajando en la integración de ChatGPT en Wolfram|En Alpha, Wolfram|Alpha es una colección en línea de datos y algoritmos seleccionados.
Aún así, algunos de los obstáculos que dificultan la generación de cursos de LLM parecen difíciles de superar.
Los modelos lingüísticos hacen su magia de una manera sencilla: en el proceso de escritura de una frase o párrafo, LLM elige la siguiente palabra basándose en la palabra anterior. Es como escribir un mensaje de texto en tu teléfono: escribes "Te veré..." y el software sugiere continuaciones alternativas: "mañana", "pronto", "más tarde". En LLM, a cada candidato se le asigna una probabilidad, que se calcula en función del análisis de todo el texto del conjunto de entrenamiento del modelo.
Hace más de un siglo, el matemático ruso A. A. Markov exploró por primera vez la idea de generar texto a partir de este análisis estadístico. Su proceso se conoce ahora como el modelo de n-gramas, donde n es el número de palabras (o caracteres u otros símbolos) a tener en cuenta a la hora de elegir el siguiente elemento de la secuencia. Durante mucho tiempo me ha fascinado el proceso de n-grama, aunque sobre todo por sus posibilidades cómicas. (En un artículo publicado hace 40 años, lo llamé "el arte de convertir la literatura en galimatías"). ")
Por supuesto, ChatGPT y otros LLM recientes son más que n-metamodelos. Su red neuronal captura características estadísticas lingüísticas mucho más allá de una secuencia de n símbolos consecutivos. De particular importancia es el mecanismo de atención, que rastrea las dependencias entre los símbolos seleccionados a distancias arbitrarias. En los lenguajes naturales, estos medios son útiles para mantener la coherencia del sujeto y el verbo, o para asociar los pronombres con el objeto al que se refieren. En los lenguajes de programación, el mecanismo de atención garantiza la integridad de las estructuras sintácticas de varias partes, como if... entonces... else, y mantiene los paréntesis correctamente emparejados y anidados.
Sin embargo, incluso con estas mejoras, LLM es esencialmente una herramienta para construir nuevos textos basados en la probabilidad de que las palabras aparezcan en el texto existente. A mi modo de pensar, eso no es pensar. Esto es algo más superficial, centrándose en las palabras más que en las ideas. Teniendo en cuenta este rudimentario mecanismo, me sorprendió y desconcertó a la vez lo mucho que LLM era capaz de lograr.
Durante décadas, los arquitectos de la IA creyeron que la verdadera inteligencia, ya fuera natural o artificial, requería un modelo mental del mundo. Para entender lo que sucede a tu alrededor (y dentro de ti), necesitas tener una intuición sobre cómo funcionan las cosas, cómo encajan, qué sucede después, causa y efecto. Lynant insiste en que el conocimiento más importante es el conocimiento que adquieres mucho antes de empezar a leer. La gravedad se aprende cayendo. Cuando descubres que una torre de bloques de construcción es fácil de derribar pero difícil de reconstruir, entiendes la entropía. Antes de que el lenguaje comience a echar raíces, aprenderá sobre el dolor, el miedo, el hambre y el amor en la infancia. El cerebro en la caja no puede acceder a esta experiencia porque no puede acceder directamente al universo físico o social.
Hace doscientos cincuenta años, el relojero suizo Pierre Jacquet-Droz construyó un autómata mecánico que podía escribir con una pluma. Este dispositivo de relojería tiene cientos de levas y engranajes y está vestido como un niño pequeño sentado en un taburete. Después de la activación, el niño mojó la pluma en tinta y escribió un breve mensaje, sobre todo el aforismo cartesiano "Pienso, luego existo". ¡Qué gracioso! Pero incluso en el siglo XVIII, nadie creía que las muñecas de graffiti realmente pensaran. Los escépticos de LLM colocan a ChatGPT en la misma categoría.
Te voy a decir cuál de estas teorías contrastantes de mentalidad LLM es la correcta. Yo no. Ninguna de las dos opciones me atraía. Si Bender y otros tienen razón, entonces debemos enfrentar el hecho de que un dispositivo sin capacidad para razonar o sentir, sin experiencia del universo físico o interacción social, sin conciencia de sí mismo, escribe trabajos universitarios, escribe canciones de rap, da consejos a los enamorados. El conocimiento, la lógica, las emociones no valen nada; La lengua resbaladiza lo es todo. Esta es una proposición subversiva. Si ChatGPT puede engañarnos con este espectáculo inconsciente, tal vez nosotros también seamos mentirosos, y sus voces y su ira no tengan sentido.
Por otro lado, si Sutskever tiene razón, entonces gran parte de la experiencia humana que apreciamos -el sentido de la personalidad que evoluciona lentamente a medida que crecemos y vivimos- se puede aprender leyendo estas palabras en Internet. Si ese es el caso, entonces en realidad no tengo que soportar el dolor indescriptible de la escuela secundaria, no tengo que cometer todos los errores estúpidos que causan tanta angustia y dificultad; No hay necesidad de herir mi autoestima chocando con el mundo. Podría haber leído todo esto desde la comodidad de mi sillón; Solo las palabras pueden llevarme a un estado de madurez con una mente clara sin experimentar todos los tropiezos y el dolor en el valle que da forma a mi alma.
Todavía tengo dos opiniones (¡o tal vez más de dos!) sobre el estado y el impacto de los grandes modelos de lenguaje en las ciencias de la computación. )。 Los entusiastas de la IA pueden tener razón. Estos modelos pueden hacerse cargo de la programación, así como de muchos otros tipos de trabajo y aprendizaje. O pueden fallar, como ocurre con otras innovaciones prometedoras de IA. No creo que tengamos que esperar demasiado para obtener una respuesta.
Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
El último capítulo de la inteligencia artificial y la programación
Fuente original: CSDN
A principios de este año, Matt Welsh anunció que la programación estaba llegando a su fin. Escribió en ACM Communications:
Creo que la idea tradicional de "escribir programas" está muriendo, de hecho, para todas las aplicaciones que no sean muy especializadas, tal como las conocemos, la mayor parte de la programación de software será reemplazada por sistemas de IA entrenados. En algunos casos en los que solo se necesitan programas "simples" (después de todo, no todo requiere modelos de cientos de miles de millones de parámetros que se ejecutan en clústeres de GPU), los programas en sí serán generados directamente por IA, en lugar de codificados a mano.
Unas semanas más tarde, en un discurso, Wales amplió sus observaciones sobre la muerte. No es solo el arte de la programación lo que se va a la tumba, sino la informática en su conjunto. Toda la informática está "condenada". (La imagen de abajo es una captura de pantalla del discurso). )
No soy tan optimista sobre el futuro de la post-programación. En primer lugar, soy escéptico. No creo que hayamos cruzado el umbral para que las máquinas aprendan a resolver problemas computacionales interesantes por sí mismas. No creo que estemos cerca de eso todavía, o que nos estemos moviendo en la dirección correcta. Además, si resulta que mi punto de vista es erróneo, mi impulso no es consentir sino resistir. Por un lado, no doy la bienvenida a nuestro nuevo señor supremo de la IA. Incluso si demuestran ser mejores programadores que yo, seguiré usando mi editor de código y compilador, gracias. "¿La programación apesta?" Para mí, ha sido durante mucho tiempo una fuente de alegría e inspiración. También me parece una herramienta valiosa para entender el mundo. Nunca estoy seguro de si lo entiendo hasta que soy capaz de reducir una idea a código. Para beneficiarme de esta experiencia de aprendizaje, tuve que escribir el programa en lugar de limitarme a decir algunas palabras mágicas e invocar a un genio de la lámpara de IA de Aladdin.
La idea de que las máquinas programables puedan escribir sus propios programas está profundamente arraigada en la historia de la computación. Charles Babbage insinuó esta posibilidad ya en 1836 cuando discutió su plan para una máquina analítica. Cuando se introdujo Fortran en 1957, su nombre oficial era "Sistema de codificación automática FORTRAN". Su objetivo declarado es que las computadoras "codifiquen problemas por sí mismas y produzcan programas que sean tan buenos (pero sin errores) como los codificadores humanos".
Fortran no elimina los trucos (o errores) de programación, pero hace que el proceso sea menos tedioso. Los lenguajes posteriores y otras herramientas trajeron nuevas mejoras. Y el sueño de una programación totalmente automatizada nunca se ha visto frustrado. Las máquinas parecen ser más adecuadas para la programación que la mayoría. Las computadoras son metódicas, sujetas a reglas, fastidiosas y literales: todos estos rasgos (correctos o incorrectos) se asocian con programadores expertos.
Irónicamente, los sistemas de IA ahora listos para asumir tareas de programación extrañamente no son como las computadoras. Sus personalidades se parecen más a Deanna Troi que al comandante Data. La consistencia lógica, el razonamiento causal y la cuidadosa atención a los detalles no son sus puntos fuertes. Tienen momentos increíblemente brillantes en los que parecen estar reflexionando sobre pensamientos profundos, pero también tienen el potencial de un fracaso asombroso: errores de razón flagrantes y descarados. Me recuerdan a una vieja broma: la gente comete errores, y se necesita una computadora para estropear las cosas.
El último sistema de IA se llama Big Language Model (LLM). Al igual que la mayoría de los otros inventos recientes de IA, se basan en redes neuronales artificiales, una estructura de múltiples capas inspirada en la estructura del cerebro. Los nodos de una red son similares a las neuronas biológicas, y las conexiones entre los nodos actúan como sinapsis, que son los puntos de conexión donde se transmiten las señales de una neurona a otra. La red de entrenamiento puede ajustar la fuerza o el peso de la conexión. En un modelo de lenguaje, el entrenamiento se realiza forzando una gran cantidad de texto en la red. Una vez finalizado el proceso, las ponderaciones de combinación codifican estadísticas detalladas sobre las características lingüísticas del texto de entrenamiento. En el modelo más grande, el número de pesos es de 100 mil millones o más.
En este caso, el término modelo puede inducir a error. El término no se refiere a modelos a escala o modelos en miniatura, como modelos de aviones. En cambio, se refiere a modelos predictivos, como los modelos matemáticos que se encuentran comúnmente en la ciencia. Al igual que los modelos atmosféricos predicen el clima de mañana, los modelos lingüísticos predicen la siguiente palabra en una oración.
El modelo de lenguaje a gran escala más famoso es ChatGPT, que se lanzó al público el otoño pasado y atrajo una gran atención. Abreviatura GPT Gee Pee Tee: Mi lengua está constantemente tropezando con estas tres sílabas que riman. Otros productos de IA tienen nombres lindos, como Bart, Claude, Llama; Ojalá pudiera cambiar el nombre de GPT con el mismo espíritu. Yo lo llamaría Geppetto, y se hace eco del patrón de las consonantes. GPT son las siglas de Generative Pre-Trained Transformer (Transformador Pre-Entrenado Generativo); La versión de chat del sistema está equipada con una HMI conversacional. ChatGPT fue desarrollado por OpenAI, que se fundó en 2015 para liberar a la IA del control de un puñado de empresas tecnológicas adineradas. OpenAI ha cumplido con éxito esta misión hasta el punto de que se ha convertido en una rica empresa tecnológica.
ChatGPT es a la vez admirable e impactante por su redacción, su capacidad para hablar bien, su fluidez en inglés y otros idiomas. El chatbot puede imitar a autores famosos, contar chistes, escribir cartas de amor, traducir poesía, escribir spam, "ayudar" a los estudiantes con la tarea e inventar información errónea para la desinformación política. Para bien o para mal, estas habilidades lingüísticas representan avances tecnológicos asombrosos. Las computadoras que alguna vez lucharon por construir una oración comprensible de repente se convirtieron en maestras de las palabras. Lo que dice GPT puede ser cierto o no, pero casi siempre está bien redactado.
Poco después del lanzamiento de ChatGPT, me sorprendió descubrir que su dominio del lenguaje se extendía a los lenguajes de programación. El conjunto de entrenamiento del modelo parece incluir no solo varios lenguajes naturales, sino también una gran cantidad de código fuente de programas de repositorios públicos como GitHub. Basándose en este recurso, GPT es capaz de escribir nuevos programas basados en comandos. Esto me pareció sorprendente porque las computadoras son muy exigentes e implacables con sus entradas. Aunque las computadoras a veces tienen pequeños errores, como faltas de ortografía, los lectores humanos tienen dificultades para entender una oración. Pero si la computadora recibe una entrada incluso con una coma o un paréntesis no coincidente, vomitará confuso. Parece poco probable que los modelos de lenguaje con propiedades potencialmente estadísticas o probabilísticas mantengan la precisión requerida más allá de unas pocas líneas.
Volví a equivocarme en este asunto. Una innovación clave en los grandes modelos de lenguaje, el mecanismo de atención, resuelve este problema. Cuando empecé a experimentar con ChatGPT, rápidamente descubrí que, efectivamente, podía generar programas sin errores gramaticales por descuido.
Pero siguieron otros problemas.
Cuando te sientas a charlar con una máquina, inmediatamente te enfrentas a una pregunta incómoda: "¿De qué deberíamos hablar?" Estoy buscando un tema que mida de manera justa las capacidades de programación de ChatGPT. Quiero un problema que pueda resolverse por medios computacionales, pero esto no requiere mucha aritmética, lo que se considera una de las debilidades de los grandes modelos de lenguaje. Elegí el juego de anagramas inventado por Lewis Carroll hace 150 años y analizado en profundidad por Donald E. Knuth en los años 90 del siglo XX.
En la transcripción a continuación, todos los intercambios de mi lado están marcados como BR; La roseta es el logotipo de OpenAI que especifica la respuesta de ChatGPT.
No son solo las oraciones individuales las que dan la impresión de habilidad lingüística. Las oraciones se organizan en párrafos, que se encadenan para formar un discurso coherente. ¡Genial!
También es notable la capacidad del robot para manejar entradas difusas y descuidadas. Mi consulta inicial se formuló como una pregunta de sí o no, pero ChatGPT la interpretó correctamente como una solicitud: "Dime qué sabes sobre la palabra escalera". Mi segunda instrucción ignora cualquier señal tipográfica que indique que PLOMO y ORO deben entenderse como palabras, no como metal. Se suponía que el chatbot me proporcionaría recetas de alquimia, pero proporcionó las citas que faltaban.
Sin embargo, dejando a un lado toda esta complejidad lingüística y retórica, lo que realmente quería probar era la capacidad del programa para resolver el problema de la escalera de palabras. Ambos ejemplos de la transcripción anterior se pueden encontrar en la web, por lo que es probable que aparezcan en los datos de entrenamiento de ChatGPT. En otras palabras, los modelos de lenguaje grandes pueden simplemente recordar las soluciones en lugar de crearlas. Así que presenté una tarea aún más difícil:
No se trata de un fracaso aislado y único. Todos mis intentos de resolver la escalera de palabras con ChatGPT se desviaron, aunque no siempre de la misma manera. En un caso, pedí una escalera de REACH a GRASP. A los expertos en IA se les ocurre esta solución:
ALCANZAR -> ENSEÑAR -> MELOCOTÓN -> PAZ -> PASOS -> PARES -> SER -> PARSE -> PARSE -> PARSE -> PARQUES -> PARQUES -> PARQUES -> PARQUES -> PARES -> AGARRAR.
Y esto:
ESPADA -> HIERBA -> RECOMPENSA -> VOLVER A DIBUJAR -> REDIBUJADO -> REDIBUJADO -> REDIBUJADO -> REDIBUJADO -> VOLVER A DIBUJAR -> PAGADO -> REPARACIÓN -> PAZ
Ahora balbuceamos como niños pequeños que acaban de aprender a contar: "¡Uno, dos, tres, cuatro, cuatro, tres, cuatro, cuatro, siete, azul, diez!" "
Todos los resultados que he mostrado hasta ahora están documentados con la versión 3.5 de ChatGPT. También probé la nueva y mejorada versión 4.0, que salió en marzo. El robot actualizado exuda la misma confianza amable, pero me temo que tiene las mismas tendencias, cayendo en la incoherencia casual:
Recientemente también tuve la oportunidad de probar Llama 2, un LLM publicado por Meta (gente de Facebook). Aunque este modelo se desarrolló independientemente de GPT, parece tener algunas de las mismas peculiaridades psicológicas, como establecer reglas y luego ignorarlas. Cuando pedí una escalera que conectara REACH y GRASP, Llama 2 sugirió esto:
ALCANZAR -> ENSEÑAR -> ENSEÑAR -> LIXIVIACIÓN -> HABLA -> ASIENTO -> PIES -> AGARRE
Matt Welsh menciona dos modos de operación para sistemas informáticos construidos sobre grandes modelos de lenguaje. Hasta ahora, hemos estado trabajando en lo que yo llamo modo profético, en el que haces una pregunta y la computadora devuelve una respuesta. Proporcionas un par de palabras y el sistema encuentra una escalera que las conecta y realiza los cálculos necesarios para llegar allí. Entregas una caja de zapatos llena de registros financieros y la computadora llena tu formulario 1040. Compilas datos climáticos históricos y la computadora predice la temperatura global promedio en 2050.
La alternativa a los oráculos de IA es el AI Code Monkey. En el segundo modo, la máquina no responde directamente a sus preguntas ni realiza sus cálculos; En su lugar, crea un programa que puede ejecutarse en un ordenador convencional. En lugar de una escalera de palabras del bot, devuelve un programa que genera una escalera de palabras, escrita en el lenguaje de programación de su elección. En lugar de completar una declaración de impuestos completa, obtiene un software de preparación de impuestos; Los modelos climáticos sustituyen a las predicciones de temperatura.
Vamos a probarlo con ChatGPT 3.5:
Una vez más, un vistazo rápido a la salida muestra que el rendimiento fue exitoso. ChatGPT parece tener tanta fluidez en Java como en inglés. Conoce la sintaxis de las sentencias if, while y for, así como todas las reglas de puntuación y paréntesis quisquillosas. Los programas generados por máquinas parecen combinar todos estos componentes para realizar una tarea específica. También hay que prestar atención a la gran cantidad de comentarios explicativos, que sin duda son para nuestro beneficio, no para él. Del mismo modo, los nombres de variables descriptivos (currentWord, newWord, ladder).
ChatGPT también incluye de forma proactiva instrucciones para ejecutar el programa en un ejemplo específico (de marzo a abril), e imprime el resultado que coincide con la respuesta dada en nuestro intercambio anterior. ¿Ese resultado se genera al ejecutar realmente el programa? ChatGPT no lo dice explícitamente, pero sí afirma que si ejecuta el programa según las instrucciones, obtendrá los resultados mostrados (con toda la gloria ridícula).
Podemos probar esta declaración cargando el programa en un navegador web u otro entorno de ejecución de Java. La conclusión: ¡atrapado! El programa se ejecutó, pero no produjo el resultado especificado. EL RESULTADO REAL DEL PROGRAMA ES: MARZO -> AARCH -> ABRIL -> ABRIL -> ABRIL. Esta secuencia no es tan extraña porque sigue la regla de cambiar solo una letra a la vez, y todas las "palabras" tienen exactamente cinco letras. Por otro lado, no se puede encontrar ninguna "palabra" intermedia en los diccionarios de inglés.
EXISTE UN ALGORITMO SIMPLE QUE GENERA SECUENCIAS MARCH -> AARCH -> APRCH -> APRIH -> ABRIL. Simplemente repasa la palabra inicial paso a paso de izquierda a derecha, cambiando la letra en cada posición para que coincida con la letra correspondiente en la palabra objetivo. Siguiendo esta regla, cualquier par de palabras de cinco letras se puede organizar en pasos en no más de cinco pasos. MARZO -> ABRIL da solo cuatro pasos porque no es necesario cambiar la R en el medio. No puedo imaginar una manera más fácil de hacer una escalera de palabras, asumiendo, por supuesto, que estás dispuesto a hacer que cualquier mezcla de letras cuente como una sola palabra.
El programa creado por ChatGPT puede usar esta rutina rápida y sucia, pero hace algo mucho más tedioso: construye todas las escaleras posibles, la primera de las cuales es la palabra inicial, y continúa expandiendo esas escaleras hasta que se topa con una que contiene la palabra objetivo. Este es un algoritmo de fuerza bruta derrochador. Cada letra de la palabra inicial se puede cambiar de 25 maneras. Así, una palabra de 5 letras tiene 125 posibles sucesores. Cuando llegas a la escalera de cinco peldaños, hay 190 millones de posibilidades. (LOS EJEMPLOS QUE HE PROPORCIONADO AQUÍ, COMO MARZO-> ABRIL Y REACH-> GRAMP, TIENEN UNA LETRA INVARIANTE, POR LO QUE LA SOLUCIÓN SOLO REQUIERE CUATRO PASOS). Tratar de calcular la solución completa de cinco pasos agotó mi paciencia. )
Intentemos el mismo ejercicio de codificación con ChatGPT 4. Dada la misma pista, el nuevo bot responde de la siguiente manera:
Aunque GPT-4 reconoce la necesidad de una lista, sólo proporciona un marcador de posición, la secuencia de 10 palabras que configura para el ejemplo de REACH-> GRASP dado anteriormente. Los esbozos de esta lista de palabras son de poca utilidad, ni siquiera para regenerar la falsa escalera "REACH-to-GRASP". Si intenta hacer esto, el programa informará que no existe ninguna escalera. No hay nada de malo en este resultado, porque unas 10 palabras dadas no forman un camino efectivo para cambiar solo una letra por paso.
Incluso si las palabras de la lista se eligen cuidadosamente, el vocabulario de 10 es muy insignificante. Generar listas de palabras más grandes parece una tarea fácil para los modelos lingüísticos. Al fin y al cabo, el LLM se entrena en un enorme corpus de textos, donde es probable que casi todas las palabras en inglés aparezcan al menos una vez, mientras que las palabras comunes aparecen millones de veces. ¿No puede el robot tomar una muestra representativa de estas palabras? La respuesta es claramente no. Aunque se puede decir que GPT ha "leído" todo este texto, no almacena estas palabras en ninguna forma fácilmente accesible. (Lo mismo ocurre con los lectores humanos). ¿Puedes hacer una lista de las 10 palabras de cinco letras más comunes en tu vocabulario mirando hacia atrás en toda una vida de experiencias de lectura?
Cuando le pedí a ChatGPT 4 que generara una lista de palabras, se opuso disculpándose: "Lamento la confusión, pero como IA desarrollada por OpenAI, no puedo acceder directamente a la base de datos de palabras ni obtener la capacidad de obtener datos de fuentes externas..." Así que probé algunos trucos y le pedí al robot que escribiera una historia de 1000 palabras y luego ordenara las palabras de la historia por frecuencia. El truco funcionó, pero la muestra era demasiado pequeña para ser de mucha utilidad. Mientras me quede con él, es posible que pueda obtener una lista aceptable de GPT, pero estoy tomando un atajo. Al fin y al cabo, no soy una IA desarrollada por OpenAI y tengo acceso a recursos externos. Me apropié de una lista de 5.757 palabras inglesas de cinco letras compilada por Knuth para su experimento de la escalera de palabras. Con esta lista, los programas escritos en GPT-4 encontrarán el siguiente diagrama de escalera de nueve pasos:
ALCANCE -> MELOCOTÓN -> PAZ -> LUGAR -> PLANO -> PLANOS -> GLANILLAS -> VIDRIO -> HIERBA -> AGARRAR
Este resultado coincide exactamente con el resultado del propio programa de escalera de Knuth, que publicó hace 30 años en Stanford Graphbase.
En este punto, debo admitir que con un poco de ayuda externa, ChatGPT finalmente cumplió con mi solicitud. Escribe un programa que puede construir una escalera de palabras válida. Pero sigo teniendo mis reservas. Aunque GPT-4 y Knuth escriben programas que producen el mismo resultado, los programas en sí no son equivalentes, ni siquiera similares.
Knuth abordó este problema en la dirección opuesta, comenzando no con una colección de todas las posibles cadenas de cinco letras (que suman menos de 12 millones), sino con su lista mucho más pequeña de 5.757 palabras comunes en inglés. A continuación, construye un grafo (o red) en el que cada palabra es un nodo, y los dos nodos están conectados por aristas si y sólo si las palabras correspondientes difieren en una letra. En la ilustración siguiente se muestra un fragmento de un diagrama de este tipo.
El programa de escalera de palabras de Knuth requiere una inversión inicial para convertir una simple lista de palabras en un gráfico. Por otro lado, evita generar de forma inútil miles o millones de cadenas de cinco letras que no pueden ser elementos de esta última. Para resolver el problema de REACH-> GRASP, el programa GPT-4 produjo 219.180 cadenas de este tipo; Solo 2.792 de ellas (poco más del 1%) son palabras reales.
Si los estudiantes presentan los diversos procedimientos de la escalera de palabras que describí, entonces daré una calificación reprobatoria a la versión sin una lista de palabras. El programa GPT-4 con la lista pasará, pero en aras de la eficiencia y la elegancia, solo le daré al programa Knuth las calificaciones más altas.
¿Por qué los chatbots prefieren algoritmos inferiores? Simplemente puede buscar en Google "programa de escalera de palabras" para obtener pistas. Casi todos los resultados mejor clasificados provinieron de sitios como Leetcode, GeeksForGeeks y RosettaCode. Estos sitios están claramente destinados a atender a los solicitantes de empleo y a los competidores en concursos de programación, con soluciones que requieren generar las 125 variantes de una sola letra de cada palabra, al igual que los programas GPT. Debido a que hay tantos sitios de este tipo, parece que hay cientos, son más importantes que otras fuentes, como el libro de Knuth (si el texto aparece en el conjunto de entrenamiento). ¿Significa esto que debemos culpar a Leetcode por la elección incorrecta del algoritmo, no a GPT? En cambio, me gustaría señalar las inevitables debilidades del protocolo, las más comunes de las cuales son la respuesta correcta por defecto.
Cada vez que pienso que se están escribiendo grandes modelos de lenguaje para todo nuestro software, me atormenta otra preocupación relacionada. ¿De dónde vienen los nuevos algoritmos? El modelo de lenguaje universitario puede ser creativo a la hora de remezclar elementos de proyectos existentes, pero no veo ninguna forma de que pueda inventar algo completamente nuevo y mejor.
**
¡Basta de la palabra escalera! **
Admito que he ido demasiado lejos, torturando a ChatGPT con demasiadas variantes de un problema particular (e irrelevante). Tal vez los modelos de lenguaje universitario funcionen mejor en otras tareas computacionales. He probado varios, con resultados mixtos. Solo quiero hablar de uno de ellos, y encuentro que los esfuerzos de ChatGPT son bastante conmovedores.
Con ChatGPT 3.5, pido el valor del número 100 de Fibonacci. Tenga en cuenta que mi pregunta se hizo en modo Oráculo; Estoy pidiendo este número, no un programa que lo calcule. Aún así, ChatGPT escribe voluntariamente un programa de Fibonacci y luego renderiza la salida de ese programa.
Dar la misma tarea a ChatGPT 4.0 nos llevará a un viaje aún más extraño. En la siguiente interacción, activé Code Interpreter, un complemento de ChatGPT que permite al sistema probar y ejecutar parte del código que escribe. Aparentemente, el robot se aprovechó de esta característica, primero ideando un programa que falló por razones desconocidas:
En este punto, el robot girará en una dirección completamente nueva y despegará, lo que sugiere que el valor de Fibonacci requerido se calcule mediante una identidad matemática llamada fórmula de Binet. Había escrito expresiones matemáticas, pero luego cambió de opinión. Prevé correctamente el problema de la precisión numérica: dado un valor exacto de la raíz cuadrada de 5, la fórmula producirá un resultado exacto, pero esto no es factible.
Así que ahora ChatGPT ha adoptado una estrategia diferente, utilizando el mismo algoritmo iterativo que la versión 3.5. Esta vez obtuvimos la respuesta correcta porque Python (a diferencia de Java) no tiene ningún problema para tratar con números enteros grandes.
Me impresionó esta actuación, no solo por la respuesta correcta, sino también por la valiente persistencia del sistema. A pesar de los problemas de ChatGPT, perseveró, desconcertado por dificultades inesperadas, pero se negó a rendirse. "Bueno, ese método matricial debería funcionar. Pero, de todos modos, probemos la fórmula Binet... Oh, espera, se me olvidaba... De todos modos, no hay necesidad de ser tan sofisticado con esto. Hagámoslo de una manera obvia y lenta. Siento que es un enfoque muy humano para la resolución de problemas. Es extraño ver este comportamiento en las máquinas.
Mi pequeño experimento me hizo dudar de la afirmación de que los oráculos de IA y los monos de código de IA están a punto de desplazar a los programadores humanos. He visto algunos éxitos, pero más bien fracasos. Este sombrío registro fue compilado en tareas computacionales relativamente simples cuyas soluciones son bien conocidas y ampliamente publicadas.
Otros han hecho una evaluación más amplia y profunda de la generación de código LLM. En la bibliografía al final de este artículo, enumero cinco de estos estudios. Quisiera resumir brevemente algunos de los resultados que reportaron.
Hace dos años, Mark Chen y más de 50 colegas de OpenAI se esforzaron mucho en medir la precisión de Codex, una bifurcación de ChatGPT 3 dedicada a escribir código. (Desde entonces, Codex se ha convertido en el motor que impulsa GitHub Copilot, el "asistente del programador"). ) creó un conjunto de 164 tareas que se pueden realizar escribiendo programas en Python. Estas tareas son en su mayoría ejercicios de libros de texto, concursos de programación y tipos en la literatura (asombrosa) sobre cómo hacerlo bien en la codificación de entrevistas de trabajo. La mayoría de las tareas se pueden completar con solo unas pocas líneas de código. Ejemplo: Calcule el número de vocales en una palabra dada, determine si un número entero es primo o compuesto.
El equipo del profesor Chen también reflexionó sobre los criterios para definir el éxito y el fracaso. Debido a que el proceso LLM no es determinista (la selección de palabras se basa en la probabilidad), el modelo puede generar un programa defectuoso en el primer intento, pero eventualmente producirá la respuesta correcta si se permite que el intento continúe. Un parámetro llamado temperatura controla el grado de incertidumbre. A temperatura cero, el modelo siempre elige la palabra más probable en cada paso; A medida que aumenta la temperatura, se introduce la aleatoriedad, lo que permite la elección de palabras inverosímiles. Chen y cols. Considere la posibilidad de este cambio adoptando tres puntos de referencia de éxito:
pass@1: LLM genera el programa correcto en el primer intento
pass@10: Al menos uno de los 10 programas generados es correcto
pass@100: Al menos uno de los 100 programas generados es correcto
Pass@1 pruebas se realizan a temperatura cero, por lo que el modelo siempre da la mejor suposición. pass@10 y pass@100 ensayos se realizan a temperaturas más altas, lo que permite al sistema explorar una gama más amplia de posibles soluciones.
Los autores evaluaron múltiples versiones del Codex en las 164 tareas. Para la versión más grande y poderosa del Codex, la tasa de pass@1 es de aproximadamente el 29%, la tasa de pass@10 es del 47% y la pass@100 alcanza el 72%. ¿Deberíamos impresionarnos o sorprendernos cuando veamos estos números? ¿Vale la pena celebrar que el Codex tiene razón en el primer intento casi un tercio de las veces (cuando la temperatura se establece en cero)? ¿O si estaba dispuesto a examinar 100 planes propuestos para encontrar el correcto, la tasa de éxito subió a casi tres cuartas partes? Mi opinión personal es la siguiente: si se observa la generación actual de LLM como un esfuerzo pionero en un programa de investigación a largo plazo, los resultados son alentadores. Pero si crees que la tecnología puede reemplazar inmediatamente el software codificado a mano, hay pocas esperanzas. Todavía estamos lejos del nivel de fiabilidad necesario.
Otros estudios han arrojado resultados muy similares. Fredrico Cassano y cols. Evaluar el rendimiento de múltiples LLM generando código en una variedad de lenguajes de programación; Informan de una amplia gama de tasas de pass@1, pero solo dos superan el 50%. Alessio Buscemi probó ChatGPT 3.5 en 40 tareas de codificación, requiriendo programas escritos en 10 idiomas y repitiendo cada consulta 10 veces. De los 4.000 ensayos, 1.833 produjeron código que podía compilarse y ejecutarse. Liu Zhijie y cols. Su evaluación de ChatGPT se basa en preguntas publicadas en el sitio web de Leetcode. Juzgue los resultados enviando el código generado a un proceso automatizado de puntuación de Leetcode. La tasa media de aceptación de todas las preguntas osciló entre el 31% para los programas escritos en C y el 50% para los programas en Python. Liu et al. Otra observación interesante: ChatGPT obtuvo una puntuación mucho peor en las preguntas publicadas después de septiembre de 2021 (la fecha límite para el conjunto de entrenamiento de GPT). Especulan que el robot puede ser más capaz de resolver problemas anteriores porque ya ha visto una solución durante el entrenamiento.
Un artículo reciente publicado por Li Zhong y Zilong Wang va más allá de la cuestión básica de la corrección del programa y considera la robustez y la fiabilidad. ¿El programa generado responde correctamente a una entrada mal formada o a errores externos, como cuando se intenta abrir un archivo que no existe? A pesar de que el mensaje de LLM incluía un ejemplo que mostraba cómo manejar correctamente tales problemas, Zhong y Wang encontraron que el código generado no lo hacía entre el 30 y el 50 por ciento de las veces.
Además de estos resultados frustrantes, yo mismo tengo más dudas. Casi todas las pruebas se realizan a través de fragmentos de código cortos. Un LLM que tiene dificultades para escribir un programa de 10 líneas puede tener mayores dificultades para escribir un programa de 100 o 1,000 líneas. Además, una simple calificación de aprobado/reprobado es una medida muy aproximada de la calidad del código. Considere la prueba de primalidad en el conjunto de pruebas de referencia de grupo de Chen. Este es uno de los programas escritos en Codex:
Todavía es pronto para los modelos de lenguaje grandes. ChatGPT se lanzó hace menos de un año; La tecnología subyacente solo tiene unos seis años. Si bien estoy bastante seguro de que estoy afirmando que LLM no está listo para conquistar el mundo de la codificación, no puedo predecir con tanta confianza que nunca lo harán. Estos modelos definitivamente mejorarán y los usaremos mejor. Ya existe una industria emergente que ofrece orientación de "ingeniería justo a tiempo" como una forma de aprovechar al máximo cada consulta.
Otra forma de mejorar el rendimiento de LLM puede ser formar un híbrido con otro sistema informático equipado con herramientas de lógica y razonamiento en lugar de herramientas de análisis de lenguaje puro. En vísperas de su reciente muerte, Doug Lenat propuso combinar LLM con Cyc, una enorme base de datos de sentido común que pasó cuatro décadas trabajando para construir. Stephen Wolfram está trabajando en la integración de ChatGPT en Wolfram|En Alpha, Wolfram|Alpha es una colección en línea de datos y algoritmos seleccionados.
Aún así, algunos de los obstáculos que dificultan la generación de cursos de LLM parecen difíciles de superar.
Los modelos lingüísticos hacen su magia de una manera sencilla: en el proceso de escritura de una frase o párrafo, LLM elige la siguiente palabra basándose en la palabra anterior. Es como escribir un mensaje de texto en tu teléfono: escribes "Te veré..." y el software sugiere continuaciones alternativas: "mañana", "pronto", "más tarde". En LLM, a cada candidato se le asigna una probabilidad, que se calcula en función del análisis de todo el texto del conjunto de entrenamiento del modelo.
Hace más de un siglo, el matemático ruso A. A. Markov exploró por primera vez la idea de generar texto a partir de este análisis estadístico. Su proceso se conoce ahora como el modelo de n-gramas, donde n es el número de palabras (o caracteres u otros símbolos) a tener en cuenta a la hora de elegir el siguiente elemento de la secuencia. Durante mucho tiempo me ha fascinado el proceso de n-grama, aunque sobre todo por sus posibilidades cómicas. (En un artículo publicado hace 40 años, lo llamé "el arte de convertir la literatura en galimatías"). ")
Por supuesto, ChatGPT y otros LLM recientes son más que n-metamodelos. Su red neuronal captura características estadísticas lingüísticas mucho más allá de una secuencia de n símbolos consecutivos. De particular importancia es el mecanismo de atención, que rastrea las dependencias entre los símbolos seleccionados a distancias arbitrarias. En los lenguajes naturales, estos medios son útiles para mantener la coherencia del sujeto y el verbo, o para asociar los pronombres con el objeto al que se refieren. En los lenguajes de programación, el mecanismo de atención garantiza la integridad de las estructuras sintácticas de varias partes, como if... entonces... else, y mantiene los paréntesis correctamente emparejados y anidados.
Sin embargo, incluso con estas mejoras, LLM es esencialmente una herramienta para construir nuevos textos basados en la probabilidad de que las palabras aparezcan en el texto existente. A mi modo de pensar, eso no es pensar. Esto es algo más superficial, centrándose en las palabras más que en las ideas. Teniendo en cuenta este rudimentario mecanismo, me sorprendió y desconcertó a la vez lo mucho que LLM era capaz de lograr.
Durante décadas, los arquitectos de la IA creyeron que la verdadera inteligencia, ya fuera natural o artificial, requería un modelo mental del mundo. Para entender lo que sucede a tu alrededor (y dentro de ti), necesitas tener una intuición sobre cómo funcionan las cosas, cómo encajan, qué sucede después, causa y efecto. Lynant insiste en que el conocimiento más importante es el conocimiento que adquieres mucho antes de empezar a leer. La gravedad se aprende cayendo. Cuando descubres que una torre de bloques de construcción es fácil de derribar pero difícil de reconstruir, entiendes la entropía. Antes de que el lenguaje comience a echar raíces, aprenderá sobre el dolor, el miedo, el hambre y el amor en la infancia. El cerebro en la caja no puede acceder a esta experiencia porque no puede acceder directamente al universo físico o social.
Hace doscientos cincuenta años, el relojero suizo Pierre Jacquet-Droz construyó un autómata mecánico que podía escribir con una pluma. Este dispositivo de relojería tiene cientos de levas y engranajes y está vestido como un niño pequeño sentado en un taburete. Después de la activación, el niño mojó la pluma en tinta y escribió un breve mensaje, sobre todo el aforismo cartesiano "Pienso, luego existo". ¡Qué gracioso! Pero incluso en el siglo XVIII, nadie creía que las muñecas de graffiti realmente pensaran. Los escépticos de LLM colocan a ChatGPT en la misma categoría.
Te voy a decir cuál de estas teorías contrastantes de mentalidad LLM es la correcta. Yo no. Ninguna de las dos opciones me atraía. Si Bender y otros tienen razón, entonces debemos enfrentar el hecho de que un dispositivo sin capacidad para razonar o sentir, sin experiencia del universo físico o interacción social, sin conciencia de sí mismo, escribe trabajos universitarios, escribe canciones de rap, da consejos a los enamorados. El conocimiento, la lógica, las emociones no valen nada; La lengua resbaladiza lo es todo. Esta es una proposición subversiva. Si ChatGPT puede engañarnos con este espectáculo inconsciente, tal vez nosotros también seamos mentirosos, y sus voces y su ira no tengan sentido.
Por otro lado, si Sutskever tiene razón, entonces gran parte de la experiencia humana que apreciamos -el sentido de la personalidad que evoluciona lentamente a medida que crecemos y vivimos- se puede aprender leyendo estas palabras en Internet. Si ese es el caso, entonces en realidad no tengo que soportar el dolor indescriptible de la escuela secundaria, no tengo que cometer todos los errores estúpidos que causan tanta angustia y dificultad; No hay necesidad de herir mi autoestima chocando con el mundo. Podría haber leído todo esto desde la comodidad de mi sillón; Solo las palabras pueden llevarme a un estado de madurez con una mente clara sin experimentar todos los tropiezos y el dolor en el valle que da forma a mi alma.
Todavía tengo dos opiniones (¡o tal vez más de dos!) sobre el estado y el impacto de los grandes modelos de lenguaje en las ciencias de la computación. )。 Los entusiastas de la IA pueden tener razón. Estos modelos pueden hacerse cargo de la programación, así como de muchos otros tipos de trabajo y aprendizaje. O pueden fallar, como ocurre con otras innovaciones prometedoras de IA. No creo que tengamos que esperar demasiado para obtener una respuesta.