2달 전
대조적 코드 표현 학습
Paras Jain; Ajay Jain; Tianjun Zhang; Pieter Abbeel; Joseph E. Gonzalez; Ion Stoica

초록
최근 연구에서는 소스 코드의 문맥 표현을 학습하기 위해 토큰을 그 문맥에서 재구성하는 방법을 사용하고 있습니다. 영어로 코드를 요약하는 등의 하류 의미 이해 작업에 있어 이러한 표현은 프로그램 기능을 이상적으로 포착해야 합니다. 그러나, 우리는 인기 있는 재구성 기반 BERT 모델이 의미를 보존하더라도 소스 코드 수정에 민감하다는 것을 보여주었습니다. 이에 대해 ContraCode(콘트라코드)라는 대조적 사전 학습 과제를 제안합니다. ContraCode는 많은 비동등한 방해자들 사이에서 프로그램의 기능적으로 유사한 변형을 식별하도록 신경망을 사전 학습시킵니다. 우리는 자동화된 소스-소스 컴파일러를 데이터 증강 형태로 활용하여 이러한 변형들을 효율적으로 생성합니다. 대조적 사전 학습은 JavaScript 요약 및 TypeScript 타입 추론 정확도를 2%에서 13%까지 개선합니다. 또한, 새로운 제로샷 JavaScript 코드 클론 검출 데이터셋을 제안하며, 이는 ContraCode가 더 강건하고 의미상으로도 더 유의미함을 보여줍니다. 이를 통해 적대적 환경에서 RoBERTa보다 39% 높은 AUROC(Area Under the Receiver Operating Characteristic curve) 성능을 보였으며, 자연적인 코드에서는 최대 5%까지 우수한 성능을 발휘했습니다.