Automatización de generación de código fuente y autocompletado utilizando aprendizaje profundo: comparación y discusión de enfoques actuales relacionados con modelos de lenguaje
Autores: Cruz-Benito, Juan; Vishwakarma, Sanjay; Martin-Fernandez, Francisco; Faro, Ismael
Idioma: Inglés
Editor: MDPI
Año: 2021
Acceso abierto
Artículo científico
2021
Automatización de generación de código fuente y autocompletado utilizando aprendizaje profundo: comparación y discusión de enfoques actuales relacionados con modelos de lenguaje
Categoría
Ingeniería y Tecnología
Subcategoría
Inteligencia Artificial
Palabras clave
Aprendizaje profundo
Modelos de lenguaje
Lenguajes de programación
Arquitecturas de redes neuronales
Generación de código
Modelos de lenguaje.
Licencia
CC BY-SA – Atribución – Compartir Igual
Consultas: 22
Citaciones: Sin citaciones
En los últimos años, el uso del aprendizaje profundo en modelos de lenguaje ha ganado mucha atención. Algunos proyectos de investigación afirman que pueden generar texto que puede ser interpretado como escritura humana, lo que habilita nuevas posibilidades en muchas áreas de aplicación. Entre las diferentes áreas relacionadas con el procesamiento del lenguaje, una de las más destacadas en la aplicación de este tipo de modelado es la de los lenguajes de programación. Durante años, la comunidad de aprendizaje automático ha estado investigando en esta área de ingeniería de software, persiguiendo objetivos como aplicar diferentes enfoques para autocompletar, generar, corregir o evaluar código programado por humanos. Dado el aumento de la popularidad del enfoque de modelos de lenguaje habilitados para el aprendizaje profundo, encontramos una falta de documentos empíricos que comparen diferentes arquitecturas de aprendizaje profundo para crear y utilizar modelos de lenguaje basados en código de programación. Este documento compara diferentes arquitecturas de redes neuronales como Average Stochastic Gradient Descent (ASGD) Weight-Dropped LSTMs (AWD-LSTMs), AWD-Quasi-Recurrent Neural Networks (QRNNs) y Transformer mientras utiliza el aprendizaje por transferencia y diferentes formas de tokenización para ver cómo se comportan en la construcción de modelos de lenguaje utilizando un conjunto de datos de Python para la generación de código y el llenado de tareas de máscaras. Considerando los resultados, discutimos las diferentes fortalezas y debilidades de cada enfoque y qué brechas encontramos para evaluar los modelos de lenguaje o aplicarlos en un contexto de programación real.
Descripción
En los últimos años, el uso del aprendizaje profundo en modelos de lenguaje ha ganado mucha atención. Algunos proyectos de investigación afirman que pueden generar texto que puede ser interpretado como escritura humana, lo que habilita nuevas posibilidades en muchas áreas de aplicación. Entre las diferentes áreas relacionadas con el procesamiento del lenguaje, una de las más destacadas en la aplicación de este tipo de modelado es la de los lenguajes de programación. Durante años, la comunidad de aprendizaje automático ha estado investigando en esta área de ingeniería de software, persiguiendo objetivos como aplicar diferentes enfoques para autocompletar, generar, corregir o evaluar código programado por humanos. Dado el aumento de la popularidad del enfoque de modelos de lenguaje habilitados para el aprendizaje profundo, encontramos una falta de documentos empíricos que comparen diferentes arquitecturas de aprendizaje profundo para crear y utilizar modelos de lenguaje basados en código de programación. Este documento compara diferentes arquitecturas de redes neuronales como Average Stochastic Gradient Descent (ASGD) Weight-Dropped LSTMs (AWD-LSTMs), AWD-Quasi-Recurrent Neural Networks (QRNNs) y Transformer mientras utiliza el aprendizaje por transferencia y diferentes formas de tokenización para ver cómo se comportan en la construcción de modelos de lenguaje utilizando un conjunto de datos de Python para la generación de código y el llenado de tareas de máscaras. Considerando los resultados, discutimos las diferentes fortalezas y debilidades de cada enfoque y qué brechas encontramos para evaluar los modelos de lenguaje o aplicarlos en un contexto de programación real.