El software maneja el mundo. Controla teléfonos inteligentes, armas nucleares y motores de automóviles. Pero hay un mundo escasez de programadores. ¿No sería bueno si alguien pudiera explicar lo que quiere que haga un programa, y una computadora pudiera traducir eso en líneas de código?
Un nuevo sistema de inteligencia artificial (IA) llamado AlphaCode está acercando a la humanidad un paso más a esa visión, según un nuevo estudio. Los investigadores dicen que el sistema, del laboratorio de investigación DeepMind, una subsidiaria de Alphabet (la empresa matriz de Google), algún día podría ayudar a los codificadores experimentados, pero probablemente no pueda reemplazarlos.
“Es muy impresionante el rendimiento que pueden lograr en algunos problemas bastante desafiantes”, dice Armando Solar-Lezama, jefe del grupo de programación asistida por computadora del Instituto de Tecnología de Massachusetts.
AlphaCode va más allá del abanderado anterior en la escritura de código de IA: Codex, un sistema lanzado en 2021 por el laboratorio de investigación sin fines de lucro OpenAI. El laboratorio ya había desarrollado GPT-3, un «modelo de lenguaje grande» que es experto en imitar e interpretar texto humano después de haber sido entrenado en miles de millones de palabras de libros digitales, artículos de Wikipedia y otras páginas de texto de Internet. Al ajustar GPT-3 en más de 100 gigabytes de código de Github, un repositorio de software en línea, OpenAI creó Codex. El software puede escribir código cuando se le solicita una descripción cotidiana de lo que se supone que debe hacer, por ejemplo, contar las vocales en una cadena de texto. Pero funciona mal cuando se le asignan problemas complicados.
Los creadores de AlphaCode se concentraron en resolver esos problemas difíciles. Al igual que los investigadores de Codex, comenzaron alimentando un modelo de lenguaje grande con muchos gigabytes de código de GitHub, solo para familiarizarlo con la sintaxis y las convenciones de codificación. Luego, lo entrenaron para traducir las descripciones de los problemas en código, utilizando miles de problemas recopilados en concursos de programación. Por ejemplo, un problema podría solicitar que un programa determine la cantidad de cadenas binarias (secuencias de ceros y unos) de longitud n que no tienen ceros consecutivos.
Cuando se le presenta un problema nuevo, AlphaCode genera soluciones de código candidatas (en Python o C++) y filtra las malas. Pero mientras que los investigadores habían usado anteriormente modelos como Codex para generar decenas o cientos de candidatos, DeepMind hizo que AlphaCode generara hasta más de 1 millón.
Para filtrarlos, AlphaCode primero guarda solo el 1% de los programas que pasan los casos de prueba que acompañan a los problemas. Para reducir aún más el campo, agrupa a los guardianes en función de la similitud de sus salidas con las entradas inventadas. Luego, envía programas de cada grupo, uno por uno, comenzando con el grupo más grande, hasta que se posa en uno exitoso o llega a 10 presentaciones (aproximadamente el máximo que los humanos envían en las competencias). Enviar desde diferentes grupos le permite probar una amplia gama de tácticas de programación. Ese es el paso más innovador en el proceso de AlphaCode, dice Kevin Ellis, científico informático de la Universidad de Cornell que trabaja en codificación de IA.
Después del entrenamiento, AlphaCode resolvió alrededor del 34% de los problemas asignados, informa DeepMind esta semana en Ciencias. (En puntos de referencia similares, Codex logró un porcentaje de éxito de un solo dígito).
Para probar aún más su destreza, DeepMind ingresó a AlphaCode en competencias de codificación en línea. En concursos con al menos 5000 participantes, el sistema superó al 45,7% de los programadores. Los investigadores también compararon sus programas con los de su base de datos de entrenamiento y descubrieron que no duplicaba grandes secciones de código o lógica. Generó algo nuevo, una creatividad que sorprendió a Ellis.
“Sigue siendo impresionante lo bien que funcionan los métodos de aprendizaje automático cuando se escalan”, dice. Los resultados son «impresionantes», agrega Wojciech Zaremba, cofundador de OpenAI y coautor de su artículo Codex.
La codificación de IA podría tener aplicaciones más allá de ganar competencias, dice Yujia Li, científico informático de DeepMind y coautor del artículo. Podría hacer el trabajo duro del software, liberando a los desarrolladores para que trabajen en un nivel más alto o más abstracto, o podría ayudar a los no codificadores a crear programas simples.
David Choi, otro autor del estudio en DeepMind, imagina ejecutar el modelo a la inversa: traducir el código en explicaciones de lo que está haciendo, lo que podría beneficiar a los programadores que intentan comprender el código de otros. “Hay muchas más cosas que puede hacer con modelos que entienden el código en general”, dice.
Por ahora, DeepMind quiere reducir los errores del sistema. Li dice que incluso si AlphaCode genera un programa funcional, a veces comete errores simples, como crear una variable y no usarla.
Hay otros problemas. AlphaCode requiere decenas de miles de millones de billones de operaciones por problema: poder de cómputo que solo tienen las compañías tecnológicas más grandes. Y los problemas que resolvió de las competencias de programación en línea fueron limitados y autónomos. Pero la programación del mundo real a menudo requiere administrar grandes paquetes de código en múltiples lugares, lo que requiere una comprensión más holística del software, dice Solar-Lezama.
El estudio también señala el riesgo a largo plazo del software que se mejora recursivamente. Algunos expertos dicen que tal superación personal podría conducir a una IA superinteligente que se apodere del mundo. Aunque ese escenario puede parecer remoto, los investigadores todavía quieren que el campo de la codificación de IA instituya barandillas, controles y equilibrios incorporados.
“Incluso si este tipo de tecnología se vuelve súper exitosa, querrás tratarla de la misma manera que tratas a un programador dentro de una organización”, dice Solar-Lezama. “Nunca desea una organización en la que un solo programador pueda derribar a toda la organización”.