Una nueva red neuronal podría ayudar a las computadoras a codificarse a sí mismas

AI escribiendo código de computadora

Sra. tecnología





La programación de computadoras nunca ha sido fácil. Los primeros codificadores escribieron programas a mano, garabateando símbolos en papel cuadriculado antes de convertirlos en grandes pilas de tarjetas perforadas que podían ser procesadas por la computadora. Una marca fuera de lugar y es posible que haya que rehacer todo.

Hoy en día, los codificadores utilizan una variedad de herramientas poderosas que automatizan gran parte del trabajo, desde detectar errores mientras escribe hasta probar el código antes de implementarlo. Pero en otros aspectos, poco ha cambiado. Un error tonto aún puede bloquear una pieza completa de software. Y a medida que los sistemas se vuelven más y más complejos, rastrear estos errores se vuelve cada vez más difícil. A veces, los equipos de codificadores pueden tardar días en corregir un solo error, dice Justin Gottschlich, director del grupo de investigación de programación de máquinas de Intel.

Es por eso que algunas personas piensan que deberíamos hacer que las máquinas se programen solas. La generación de código automatizada ha sido un tema de investigación candente durante varios años. Microsoft está incorporando la generación de código básico en sus herramientas de desarrollo de software ampliamente utilizadas, Facebook ha creado un sistema llamado Aroma que completa automáticamente pequeños programas, y DeepMind ha desarrollado una red neuronal que puede generar versiones más eficientes de algoritmos simples que los ideados por humanos. Incluso el modelo de lenguaje GPT-3 de OpenAI puede producir piezas simples de código , como diseños de páginas web, a partir de indicaciones en lenguaje natural.



Gottschlich y sus colegas llaman a esto programacion de maquinas . Trabajando con un equipo de Intel, MIT y el Instituto de Tecnología de Georgia en Atlanta, ha desarrollado un sistema llamado Similitud de código inferido por máquina , o MISIM, que puede extraer el significado de un fragmento de código (lo que el código le dice a la computadora que haga) de la misma manera que los sistemas de procesamiento de lenguaje natural (NLP) pueden leer un párrafo escrito en inglés.

MISIM puede entonces sugerir otras formas de escribir el código, ofreciendo correcciones y formas de hacerlo más rápido o más eficiente. La capacidad de la herramienta para comprender lo que intenta hacer un programa le permite identificar otros programas que hacen cosas similares. En teoría, este enfoque podría ser utilizado por máquinas que escribieran su propio software, basándose en un mosaico de programas preexistentes con una mínima supervisión o intervención humana.

MISIM funciona comparando fragmentos de código con millones de otros programas que ya ha visto, tomados de una gran cantidad de repositorios en línea. Primero, traduce el código a una forma que captura lo que hace pero ignora cómo está escrito, porque dos programas escritos de formas muy diferentes a veces hacen lo mismo. MISIM luego usa una red neuronal para encontrar otro código que tenga un significado similar. en un preimpresión , Gottschlich y sus colegas informan que MISIM es 40 veces más preciso que los sistemas anteriores que intentan hacer esto, incluido Aroma.



MISIM es un emocionante paso adelante, dice Veselin Raychev, CTO de la empresa suiza DeepCode, cuyas herramientas de detección de errores, entre las más avanzadas del mercado, utilizan redes neuronales entrenadas en millones de programas para sugerir mejoras a los codificadores mientras escriben. .

Pero el aprendizaje automático aún no es bueno para predecir si algo es un error o no, dice Raychev. Esto se debe a que es difícil enseñarle a una red neuronal qué es o no un error a menos que haya sido etiquetada como tal por un ser humano.

Se están realizando muchas investigaciones interesantes con redes neuronales profundas y corrección de errores, dice, pero prácticamente aún no están allí, por un margen muy grande. Por lo general, las herramientas de captura de errores de IA producen muchos falsos positivos, dice.



MISIM soluciona esto utilizando el aprendizaje automático para detectar similitudes entre programas en lugar de identificar errores directamente. Al comparar un nuevo programa con una pieza de software existente que se sabe que es correcta, puede alertar al codificador sobre diferencias importantes que podrían ser errores.

Intel planea usar la herramienta como un sistema de recomendación de código para desarrolladores internos, sugiriendo formas alternativas de escribir código que sean más rápidas o más eficientes. Pero debido a que MISIM no está vinculado a la sintaxis de un programa específico, potencialmente podría hacer mucho más. Por ejemplo, podría usarse para traducir código escrito en un lenguaje antiguo como COBOL a un lenguaje más moderno como Python. Esto es importante porque muchas instituciones, incluido el Gobierno de los Estados Unidos , aún dependen de software escrito en lenguajes que pocos codificadores saben cómo mantener o actualizar.

En última instancia, Gottschlich cree que esta idea podría aplicarse al lenguaje natural. En combinación con la PNL, la capacidad de trabajar con el significado del código por separado de su representación textual podría algún día permitir que las personas escriban software simplemente describiendo lo que quieren hacer con palabras, dice.



Construir pequeñas aplicaciones para tu teléfono, o cosas por el estilo que te ayuden en tu vida diaria, creo que eso no está muy lejos, dice Gottschlich. Me gustaría ver a 8 mil millones de personas crear software de la manera que les resulte más natural.

esconder