Trabajo de grado - Maestría
Understanding and Implementing Deep Neural Networks for Unconditional Source Code Generation
Fecha
2022-07-15Registro en:
Universidad Nacional de Colombia
Repositorio Institucional Universidad Nacional de Colombia
Autor
Rodriguez Caicedo, Alvaro Dario
Institución
Resumen
Code Generation is a relevant problem in computer science, supporting the automation of tasks such as code completion, program synthesis, and program translation. In recent years, Deep Learning approaches have gained popularity in the code generation problem, and some of these approaches leverage Language Models. However, the existing studies mainly focus on evaluation using machine learning metrics. Additionally, the generation process can be classified into conditional or unconditional (i.e., open-ended) approaches depending on the input context provided to the models. This research proposes CodeGenXplainer, a suite of interpretability methods for Unconditional Language Models of source code. CodeGenXplainer comprises four methods leveraging multiple source code features such as embedding representations, code metrics, compilation errors, and token distributions. Additionally, this research presents an empirical study to validate CodeGenXplainer using publicly available data and extensive sampling of code snippets. Furthermore, CodeGenXplainer provides a base conceptual framework that allows studying multiple complementary perspectives based on machine-generated code. Results show that the studied models can generate code exhibiting similar properties to human code, particularly in terms of code metrics, compilation errors, and token-level information; nonetheless, machine-generated code presents issues with the semantic elements of the code. (Texto tomado de la fuente) La generación de código es un problema relevante en ciencias de la computación, que soporta la automatización de tareas como completado de código, síntesis
y traducción de programas. En los últimos años, los enfoques de aprendizaje profundo
han ganado popularidad en el problema de generación de código y algunos de estos
enfoques están basados en modelos de lenguaje. Sin embargo, los estudios existentes se
centran principalmente en la evaluación utilizando métricas de aprendizaje automático.
Adicionalmente, el proceso de generación se puede clasificar en enfoques condicionales
o incondicionales (es decir, open-ended) según el contexto de entrada proporcionado a
los modelos. Esta investigación propone CodeGenXplainer, un conjunto de métodos
de interpretabilidad para modelos de lenguaje no condicionados de código fuente.
CodeGenXplainer comprende cuatro métodos que aprovechan múltiples características de
código fuente, como representaciones abstractas, métricas de código, errores de compilación y distribuciones de tokens. Además, esta investigación presenta un estudio empírico
para validar CodeGenXplainer utilizando datos disponibles públicamente y muestreo
extensivo de fragmentos de código. Por otra parte, CodeGenXplainer proporciona un
marco conceptual base que permite estudiar múltiples perspectivas complementarias
basadas en código generado por máquina. Los resultados muestran que los modelos
estudiados pueden generar código que exhibe propiedades similares al código humano,
particularmente en términos de métricas de código, errores de compilación e información
a nivel de token; no obstante, el código generado por máquina presenta problemas con los elementos semánticos del código.