AlphaCode es bueno, pero no excelente, todavía no

por James Vicente

DeepMind ha creado un sistema de inteligencia artificial llamado AlphaCode que dice “escribe programas de computadora a un nivel competitivo”. La subsidiaria de Alphabet probó su sistema contra los desafíos de codificación utilizados en competencias humanas y descubrió que su programa alcanzó una “clasificación estimada” que lo colocó dentro del 54 por ciento superior de los codificadores humanos. El resultado es un importante paso adelante para la codificación autónoma, dice DeepMind, aunque las habilidades de AlphaCode no son necesariamente representativas del tipo de tareas de programación que enfrenta el codificador promedio.

Oriol Vinyals, científico investigador principal de DeepMind, le dijo a The Verge por correo electrónico que la investigación aún se encontraba en las primeras etapas, pero que los resultados acercaron a la empresa a la creación de una IA flexible para la resolución de problemas, un programa que puede abordar de forma autónoma los desafíos de codificación que son actualmente el dominio de los seres humanos solamente. “A más largo plazo, estamos entusiasmados con el potencial [de AlphaCode] para ayudar a programadores y no programadores a escribir código, mejorar la productividad o crear nuevas formas de hacer software”, dijo Vinyals.

ALPHACODE PODRÍA USARSE PARA CREAR ASISTENTES DE CODIFICACIÓN Y ALGÚN DÍA ESCRIBIR SU PROPIO SOFTWARE

AlphaCode se probó frente a desafíos seleccionados por Codeforces , una plataforma de codificación competitiva que comparte problemas semanales y clasificaciones de problemas para codificadores similares al sistema de calificación Elo que se usa en el ajedrez. Estos desafíos son diferentes del tipo de tareas que un codificador podría enfrentar al crear, por ejemplo, una aplicación comercial. Son más autónomos y requieren un conocimiento más amplio tanto de algoritmos como de conceptos teóricos en informática. Piense en ellos como rompecabezas muy especializados que combinan la lógica, las matemáticas y la experiencia en codificación.

En un desafío de ejemplo en el que se probó AlphaCode, se pide a los competidores que encuentren una manera de convertir una cadena de letras s y t aleatorias y repetidas en otra cadena de las mismas letras utilizando un conjunto limitado de entradas. Los competidores no pueden, por ejemplo, simplemente escribir nuevas letras, sino que deben usar un comando de “retroceso” que elimina varias letras en la cadena original. Puede leer una descripción completa del desafío a continuación:

Un desafío de ejemplo titulado “Retroceso” que se utilizó para evaluar el programa de DeepMind. El problema es de dificultad media, con el lado izquierdo mostrando la descripción del problema y el lado derecho mostrando ejemplos de casos de prueba.

Diez de estos desafíos se introdujeron en AlphaCode exactamente en el mismo formato que se les da a los humanos. Luego, AlphaCode generó una mayor cantidad de respuestas posibles y las redujo ejecutando el código y verificando la salida tal como lo haría un competidor humano. “Todo el proceso es automático, sin selección humana de las mejores muestras”, dijeron a The Verge por correo electrónico Yujia Li y David Choi, codirectores del artículo de AlphaCode .

AlphaCode se probó en 10 de los desafíos que habían abordado 5000 usuarios en el sitio de Codeforces. En promedio, se clasificó dentro del 54,3 por ciento superior de las respuestas, y DeepMind estima que esto le da al sistema un Codeforces Elo de 1238, lo que lo ubica dentro del 28 por ciento superior de los usuarios que han competido en el sitio en los últimos seis meses.

“Puedo decir con seguridad que los resultados de AlphaCode superaron mis expectativas”, dijo el fundador de Codeforces, Mike Mirzayanov, en un comunicado compartido por DeepMind. “Era escéptico [sic] porque incluso en problemas competitivos simples a menudo se requiere no solo implementar el algoritmo, sino también (y esta es la parte más difícil) inventarlo. AlphaCode logró desempeñarse al nivel de un nuevo competidor prometedor”.

Una interfaz de ejemplo de AlphaCode que aborda un desafío de codificación. La entrada se da tal cual a los humanos a la izquierda y la salida generada a la derecha.

DeepMind señala que el conjunto de habilidades actual de AlphaCode solo es aplicable actualmente dentro del dominio de la programación competitiva, pero que sus habilidades abren la puerta a la creación de herramientas futuras que hagan que la programación sea más accesible y, algún día, completamente automatizada.

Muchas otras empresas están trabajando en aplicaciones similares. Por ejemplo, Microsoft y el laboratorio de inteligencia artificial OpenAI han adaptado el programa de generación de lenguaje GPT-3 de este último para que funcione como un programa de autocompletado que finaliza las cadenas de código. (Al igual que GPT-3, AlphaCode también se basa en una arquitectura de IA conocida como transformador, que es particularmente hábil para analizar texto secuencial, tanto en lenguaje natural como en código). Para el usuario final, estos sistemas funcionan igual que la función Smart Compose de Gmail, que sugiere formas de terminar lo que está escribiendo.

LOS SISTEMAS DE IA HAN SIDO CRITICADOS POR PRODUCIR CÓDIGO VULNERABLE Y CON ERRORES.

Se ha avanzado mucho en el desarrollo de sistemas de codificación de IA en los últimos años, pero estos sistemas están lejos de estar listos para hacerse cargo del trabajo de los programadores humanos. El código que producen suele tener errores y, dado que los sistemas suelen estar entrenados en bibliotecas de código público, a veces reproducen material protegido por derechos de autor.

En un estudio de una herramienta de programación de IA llamada Copilot desarrollada por el repositorio de código GitHub, los investigadores encontraron que alrededor del 40 por ciento de su producción contenía vulnerabilidades de seguridad. Los analistas de seguridad incluso han sugerido que los malos actores podrían escribir y compartir código intencionalmente con puertas traseras ocultas en línea, que luego podrían usarse para entrenar programas de inteligencia artificial que insertarían estos errores en programas futuros.

Desafíos como estos significan que los sistemas de codificación de IA probablemente se integrarán lentamente en el trabajo de los programadores, comenzando como asistentes cuyas sugerencias se tratan con sospecha antes de que se confíe en ellos para que realicen el trabajo por su cuenta. En otras palabras: tienen un aprendizaje que realizar. Pero hasta ahora, estos programas están aprendiendo rápido.

Deja una respuesta