ChatPaper.aiChatPaper

Aprendizaje de Representación de Código a Gran Escala

Code Representation Learning At Scale

February 2, 2024
Autores: Dejiao Zhang, Wasi Ahmad, Ming Tan, Hantian Ding, Ramesh Nallapati, Dan Roth, Xiaofei Ma, Bing Xiang
cs.AI

Resumen

Estudios recientes han demostrado que los modelos de lenguaje de código a gran escala muestran mejoras significativas en el rendimiento de tareas posteriores, como la generación de código. Sin embargo, la mayoría de los trabajos existentes sobre el aprendizaje de representaciones de código entrenan modelos con cientos de millones de parámetros utilizando corpus de preentrenamiento muy limitados. En este trabajo, potenciamos el aprendizaje de representaciones de código con una gran cantidad de datos de código mediante un esquema de preentrenamiento en dos etapas. Primero, entrenamos los codificadores mediante una mezcla que aprovecha tanto la aleatoriedad en el modelado de lenguaje enmascarado como el aspecto estructural de los lenguajes de programación. Luego, mejoramos las representaciones mediante aprendizaje contrastivo con negativos duros y positivos duros construidos de manera no supervisada. Establecemos un modelo de codificador listo para usar que supera consistentemente a los modelos existentes en una amplia variedad de tareas posteriores por márgenes considerables. Para comprender los factores que contribuyen al éxito del aprendizaje de representaciones de código, realizamos ablaciones detalladas y compartimos nuestros hallazgos sobre: (i) un esquema personalizado y efectivo de eliminación de ruido a nivel de token para código fuente; (ii) la importancia de los negativos duros y positivos duros; (iii) cómo el aprendizaje contrastivo bimodal propuesto mejora el rendimiento de la búsqueda semántica multilingüe; y (iv) cómo los esquemas de preentrenamiento determinan que el rendimiento en tareas posteriores escale con el tamaño del modelo.
English
Recent studies have shown that code language models at scale demonstrate significant performance gains on downstream tasks, i.e., code generation. However, most of the existing works on code representation learning train models at a hundred million parameter scale using very limited pretraining corpora. In this work, we fuel code representation learning with a vast amount of code data via a two-stage pretraining scheme. We first train the encoders via a mix that leverages both randomness in masking language modeling and the structure aspect of programming language. We then enhance the representations via contrastive learning with hard negative and hard positive constructed in an unsupervised manner. We establish an off-the-shelf encoder model that persistently outperforms the existing models on a wide variety of downstream tasks by large margins. To comprehend the factors contributing to successful code representation learning, we conduct detailed ablations and share our findings on (i) a customized and effective token-level denoising scheme for source code; (ii) the importance of hard negatives and hard positives; (iii) how the proposed bimodal contrastive learning boost the cross-lingual semantic search performance; and (iv) how the pretraining schemes decide the downstream task performance scales with the model size.
PDF131December 15, 2024