• Home
  • Química
  • Astronomía
  • Energía
  • Naturaleza
  • Biología
  • Física
  • Electrónica
  • Hacia la inteligencia artificial que aprende a escribir código

    Los investigadores han desarrollado una forma flexible de combinar el aprendizaje profundo y el razonamiento simbólico para enseñar a las computadoras a escribir programas informáticos breves. Aquí, Armando Solar-Lezama (izquierda), profesor en CSAIL, habla con el estudiante de posgrado Maxwell Nye. Crédito:Kim Martineau

    Aprender a codificar implica reconocer cómo estructurar un programa, y cómo completar correctamente hasta el último detalle. No es de extrañar que pueda resultar tan frustrante.

    Una nueva IA de escritura de programas, SketchAdapt, ofrece una salida. Capacitado en decenas de miles de ejemplos de programas, SketchAdapt aprende a redactar textos cortos, programas de alto nivel, mientras deja que un segundo conjunto de algoritmos encuentre los subprogramas adecuados para completar los detalles. A diferencia de enfoques similares para la escritura automatizada de programas, SketchAdapt sabe cuándo cambiar de la coincidencia de patrones estadísticos a una menos eficiente, pero más versátil, modo de razonamiento simbólico para llenar los vacíos.

    "Las redes neuronales son bastante buenas para conseguir la estructura correcta, pero no los detalles, "dice Armando Solar-Lezama, profesor del Laboratorio de Ciencias de la Computación e Inteligencia Artificial del MIT (CSAIL). "Al dividir el trabajo, dejando que las redes neuronales manejen la estructura de alto nivel, y utilizando una estrategia de búsqueda para completar los espacios en blanco, podemos escribir programas eficientes que den la respuesta correcta ".

    SketchAdapt es una colaboración entre Solar-Lezama y Josh Tenenbaum, profesor de CSAIL y del Centro de Cerebros del MIT, Mentes y Máquinas. El trabajo se presentará en la Conferencia Internacional sobre Aprendizaje Automático del 10 al 15 de junio.

    Síntesis del programa, o enseñar a las computadoras a codificar, ha sido durante mucho tiempo un objetivo de los investigadores de IA. Una computadora que puede programarse por sí misma tiene más probabilidades de aprender un idioma más rápido, conversar con fluidez, e incluso modelar la cognición humana. Todo esto llevó a Solar-Lezama al campo como estudiante de posgrado, donde sentó las bases de SketchAdapt.

    Los primeros trabajos de Solar-Lezama, Bosquejo, se basa en la idea de que los detalles de bajo nivel de un programa se pueden encontrar mecánicamente si se proporciona una estructura de alto nivel. Entre otras aplicaciones, Esbozos inspirados en bocetos para calificar automáticamente la tarea de programación y convertir diagramas dibujados a mano en código. Más tarde, a medida que las redes neuronales aumentaron en popularidad, estudiantes del laboratorio de ciencias cognitivas computacionales de Tenenbaum sugirieron una colaboración, a partir del cual se formó SketchAdapt.

    En lugar de depender de expertos para definir la estructura del programa, SketchAdapt lo resuelve mediante el aprendizaje profundo. Los investigadores también agregaron un giro:cuando las redes neuronales no están seguras de qué código colocar y dónde, SketchAdapt está programado para dejar el espacio en blanco para que lo llenen los algoritmos de búsqueda.

    "El sistema decide por sí mismo lo que sabe y lo que no sabe, "dice el autor principal del estudio, Maxwell Nye, estudiante de posgrado en el Departamento de Ciencias Cerebrales y Cognitivas del MIT. "Cuando se atasca, y no tiene patrones familiares en los que basarse, deja marcadores de posición en el código. Luego usa una estrategia de adivinar y verificar para llenar los huecos ".

    Los investigadores compararon el rendimiento de SketchAdapt con los programas modelados a partir del software patentado RobustFill y DeepCoder de Microsoft. sucesores de la función FlashFill de Excel, que analiza celdas adyacentes para ofrecer sugerencias a medida que escribe, aprendiendo a transformar una columna de nombres en una columna de direcciones de correo electrónico correspondientes, por ejemplo. RobustFill utiliza el aprendizaje profundo para escribir programas de alto nivel a partir de ejemplos, mientras que DeepCoder se especializa en buscar y completar detalles de bajo nivel.

    Los investigadores encontraron que SketchAdapt superó a sus versiones reimplementadas de RobustFill y DeepCoder en sus respectivas tareas especializadas. SketchAdapt superó al programa similar a RobustFill en transformaciones de cadenas; por ejemplo, escribir un programa para abreviar los números de Seguro Social como tres dígitos, y nombres por su primera letra. SketchAdapt también lo hizo mejor que el programa similar a DeepCoder en la escritura de programas para transformar una lista de números. Capacitado solo en ejemplos de programas de procesamiento de listas de tres líneas, SketchAdapt pudo transferir mejor sus conocimientos a un nuevo escenario y escribir programas correctos de cuatro líneas.

    En otra tarea más, SketchAdapt superó a ambos programas en la conversión de problemas matemáticos de inglés a código, y calcular la respuesta.

    La clave de su éxito es la capacidad de cambiar de la coincidencia de patrones neuronales a una búsqueda simbólica basada en reglas, dice Rishabh Singh, un ex alumno de posgrado de Solar-Lezama, ahora investigador en Google Brain. "SketchAdapt aprende cuánto reconocimiento de patrones se necesita para escribir partes familiares del programa, y cuánto razonamiento simbólico se necesita para completar detalles que pueden involucrar conceptos nuevos o complicados ".

    SketchAdapt se limita a escribir programas muy cortos. Cualquier otra cosa requiere demasiados cálculos. Sin embargo, está destinado más a complementar a los programadores que a reemplazarlos, dicen los investigadores. "Nuestro objetivo es ofrecer herramientas de programación a las personas que las deseen, "dice Nye." Pueden decirle a la computadora lo que quieren hacer, y la computadora puede escribir el programa ".

    Programación, después de todo, siempre ha evolucionado. Cuando se introdujo Fortran en la década de 1950, estaba destinado a reemplazar a los programadores humanos. "Su nombre completo era Fortran Automatic Coding System, y su objetivo era escribir programas además de humanos, pero sin los errores, ", dice Solar-Lezama." Lo que realmente hizo fue automatizar gran parte de lo que hacían los programadores antes de Fortran. Cambió la naturaleza de la programación ".

    Esta historia se vuelve a publicar por cortesía de MIT News (web.mit.edu/newsoffice/), un sitio popular que cubre noticias sobre la investigación del MIT, innovación y docencia.




    © Ciencia https://es.scienceaq.com