Programación competitiva con AlphaCode – Google DeepMind

Investigación

Publicado
Autores

El equipo de 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 al texto para reflejar esto.

Resolver problemas novedosos y establecer un nuevo hito en la programación competitiva

Crear soluciones a problemas imprevistos es una segunda naturaleza de la inteligencia humana, un resultado del pensamiento crítico informado por la experiencia. La comunidad de aprendizaje automático ha logrado enormes avances 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 recuperar y copiar 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 entre el 54 % de los mejores 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 Science.nuestro 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 mediante competencias alojadas en Fuerzas de código, una plataforma popular que organiza competiciones periódicas que atraen a decenas de miles de participantes de todo el mundo que vienen a poner a prueba sus habilidades de codificación. Seleccionamos para evaluación 10 concursos recientes, cada uno de ellos más reciente que nuestros datos de entrenamiento. AlphaCode se ubicó aproximadamente al nivel del competidor mediano, lo que marca la primera vez que un sistema de generación de código de IA alcanza un nivel competitivo de desempeño 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 competitiva. en GitHub, incluidas pruebas exhaustivas para garantizar que los programas que pasan estas pruebas sean correctos, una característica fundamental 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.

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 adquirir experiencia y mostrar sus habilidades de forma divertida y colaborativa. Durante las competiciones, los participantes reciben una serie de largas descripciones de problemas y unas pocas horas para escribir programas para resolverlos.

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

Puedo decir con seguridad que los resultados de AlphaCode superaron mis expectativas. Yo era escéptico porque incluso en problemas competitivos simples a menudo es necesario no sólo 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. ¡No puedo esperar a ver lo que nos espera!

Mike Mirzayanov, fundador de Codeforces

Las habilidades de resolución de problemas necesarias para sobresalir en estas competiciones están más allá de las capacidades de los sistemas de IA existentes. Sin embargo, al combinar avances en modelos de transformadores a gran escala (que recientemente han demostrado capacidades prometedoras para generar código) con muestreo y filtrado a gran escala, hemos logrado avances significativos en la cantidad de problemas que podemos resolver. Entrenamos previamente 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 reclasificamos esas soluciones en un pequeño conjunto de 10 programas candidatos que presentamos para evaluación externa. Este sistema automatizado reemplaza el proceso de prueba y error de depuración, compilación, aprobación de pruebas y, finalmente, envío de los competidores.

Con el permiso de Codeforces, evaluamos AlphaCode simulando la participación en 10 concursos recientes. El impresionante trabajo de la competitiva comunidad de programación ha creado un dominio donde no es posible resolver problemas mediante 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 está lejos de ganar competencias, este resultado representa un salto sustancial en las capacidades de resolución de problemas de la 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, 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 utiliza 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

Para que la inteligencia artificial ayude a la humanidad, nuestros sistemas deben poder desarrollar capacidades de resolución de problemas. AlphaCode se ubicó entre el 54 % de los mejores 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 gran margen de mejora y sugiere ideas aún más interesantes 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 futuras investigaciones resulten en herramientas para mejorar la programación y acercarnos a una IA que resuelva problemas.

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