Programación competitiva con AlphaCode

Nota: Este blog se publicó por primera vez el 2 de febrero de 2022. Tras la publicación del artículo en Science el 8 de diciembre de 2022, realizamos actualizaciones menores en el texto para reflejar esto.

Resolviendo problemas novedosos y marcando un nuevo hito en la programación competitiva

Crear soluciones a problemas imprevistos es una segunda naturaleza en la inteligencia humana, un resultado del pensamiento crítico informado por la experiencia. La comunidad de aprendizaje automático ha logrado un gran progreso en la generación y comprensión de datos textuales, pero los avances en la resolución de problemas siguen limitados a problemas matemáticos y de programación relativamente simples, o bien a la recuperación y copia de soluciones existentes.

Como parte de La misión de DeepMind para resolver inteligencia, creamos un sistema llamado AlphaCode que escribe programas de computadora a un nivel competitivo. AlphaCode logró una clasificación estimada dentro del 54 % superior de los participantes en competencias de programación al resolver nuevos problemas que requieren una combinación de pensamiento crítico, lógica, algoritmos, codificación y comprensión del lenguaje natural.

Publicado en la portada de Sciencenuestro artículo detalla AlphaCode, que utiliza modelos de lenguaje basados ​​en transformadores para generar código a una escala sin precedentes, y luego filtra inteligentemente a un pequeño conjunto de programas prometedores.

Validamos nuestro desempeño utilizando competencias alojadas en Fuerzas de código, una plataforma popular que organiza concursos regulares que atraen a decenas de miles de participantes de todo el mundo que vienen a probar sus habilidades de codificación. Seleccionamos para evaluación 10 concursos recientes, cada uno más nuevo que nuestros datos de entrenamiento. AlphaCode se colocó aproximadamente al nivel del competidor medio, lo que marca la primera vez que un sistema de generación de código de IA alcanza un nivel competitivo de rendimiento en competencias de programación.

Para ayudar a otros a aprovechar nuestros resultados, hemos publicado nuestro conjunto de datos de problemas y soluciones de programación competitivos. en GitHub, incluidas pruebas exhaustivas para garantizar que los programas que pasan estas pruebas sean correctos, una característica crítica de la que carecen los conjuntos de datos actuales. Esperamos que este punto de referencia conduzca a más innovaciones en la resolución de problemas y la generación de código.

Programacion competitiva con AlphaCode.svg
El problema es de Codeforces, y la solución fue generada por AlphaCode.

La programación competitiva es una actividad popular y desafiante; cientos de miles de programadores participan en concursos de codificación para ganar experiencia y mostrar sus habilidades de forma divertida y colaborativa. Durante las competencias, los participantes reciben una serie de largas descripciones de problemas y algunas horas para escribir programas para resolverlos.

Los problemas típicos incluyen encontrar formas de colocar carreteras y edificios dentro de ciertas restricciones, o crear estrategias para ganar juegos de mesa personalizados. Luego, los participantes se clasifican principalmente en función de la cantidad de problemas que resuelven. Las empresas utilizan estos concursos como herramientas de contratación y tipos similares de problemas son comunes en los procesos de contratación de ingenieros de software.

«Puedo decir con seguridad que los resultados de AlphaCode superaron mis expectativas. Era escéptico 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ó para rendir al nivel de un nuevo competidor prometedor. ¡No puedo esperar a ver lo que está por venir!»

– Mike Mirzayanov, Fundador, Codeforces

Las habilidades de resolución de problemas requeridas para sobresalir en estas competencias están más allá de las capacidades de los sistemas de IA existentes. Sin embargo, al combinar los avances en modelos de transformadores a gran escala (que recientemente han mostrado capacidades prometedoras para generar código) con muestreo y filtrado a gran escala, hemos logrado un progreso significativo en la cantidad de problemas que podemos resolver. Pre-entrenamos nuestro modelo en código GitHub público seleccionado y lo ajustamos en nuestro conjunto de datos de programación competitivo relativamente pequeño.

En el momento de la evaluación, creamos una gran cantidad de programas en C++ y Python para cada problema, órdenes de magnitud mayores que el trabajo anterior. Luego, filtramos, agrupamos y volvemos a clasificar esas soluciones en un pequeño conjunto de 10 programas candidatos que enviamos para evaluación externa. Este sistema automatizado reemplaza el proceso de prueba y error de la competencia de depuración, compilación, aprobación de pruebas y, finalmente, envío.

1671669012 49 Programacion competitiva con AlphaCode.svg

Con el permiso de Codeforces, evaluamos AlphaCode simulando la participación en 10 concursos recientes. El impresionante trabajo de la comunidad de programación competitiva ha creado un dominio en el que no es posible resolver problemas a través de atajos como duplicar soluciones vistas antes o probar todos los algoritmos potencialmente relacionados. En cambio, nuestro modelo debe crear soluciones novedosas e interesantes.

En general, AlphaCode se ubicó aproximadamente al nivel del competidor mediano. Aunque lejos de ganar competencias, este resultado representa un salto sustancial en las capacidades de resolución de problemas de IA y esperamos que nuestros resultados inspiren a la comunidad de programación competitiva.

«Resolver problemas de programación competitivos es algo realmente difícil de hacer, ya que requiere buenas habilidades de codificación y creatividad para resolver problemas en los humanos. Me impresionó mucho que AlphaCode pudiera progresar en esta área y me entusiasmó ver cómo el modelo usa su comprensión de declaraciones para producir código y guiar su exploración aleatoria para crear soluciones».

– Petr Mitrichev, ingeniero de software, Google y programador competitivo de clase mundial

1671669013 879 Programacion competitiva con AlphaCode.svg

Para que la inteligencia artificial ayude a la humanidad, nuestros sistemas deben poder desarrollar capacidades de resolución de problemas. AlphaCode se clasificó dentro del 54 % superior en competencias de programación del mundo real, un avance que demuestra el potencial de los modelos de aprendizaje profundo para tareas que requieren pensamiento crítico. Estos modelos aprovechan elegantemente el aprendizaje automático moderno para expresar soluciones a problemas como código, volviendo a la raíz del razonamiento simbólico de la IA de hace décadas. Y esto es sólo un comienzo.

Nuestra exploración de la generación de código deja un amplio espacio para la mejora y sugiere ideas aún más emocionantes que podrían ayudar a los programadores a mejorar su productividad y abrir el campo a personas que actualmente no escriben código. Continuaremos esta exploración y esperamos que más investigaciones den como resultado herramientas para mejorar la programación y acercarnos a una IA que resuelve problemas.

Vea las soluciones de AlphaCode y explore el modelo en alphacode.deepmind.com

Fuente del artículo

Deja un comentario