[논문 리뷰] Graph-based, Self-Supervised Program Repair from Diagnostic Feedback
DrRepair는 진단 피드백으로부터 프로그램을 수정하기 위해 프로그램-피드백 그래프와 자체 지도 학습(pre-training)을 활용하여 DeepFix와 SPoC에서 최첨단 수리 비율을 달성했다.
We consider the problem of learning to repair programs from diagnostic feedback (e.g., compiler error messages). Program repair is challenging for two reasons: First, it requires reasoning and tracking symbols across source code and diagnostic feedback. Second, labeled datasets available for program repair are relatively small. In this work, we propose novel solutions to these two challenges. First, we introduce a program-feedback graph, which connects symbols relevant to program repair in source code and diagnostic feedback, and then apply a graph neural network on top to model the reasoning process. Second, we present a self-supervised learning paradigm for program repair that leverages unlabeled programs available online to create a large amount of extra program repair examples, which we use to pre-train our models. We evaluate our proposed approach on two applications: correcting introductory programming assignments (DeepFix dataset) and correcting the outputs of program synthesis (SPoC dataset). Our final system, DrRepair, significantly outperforms prior work, achieving 68.2% full repair rate on DeepFix (+22.9% over the prior best), and 48.4% synthesis success rate on SPoC (+3.7% over the prior best).
연구 동기 및 목표
- 컴파일러/진단 피드백으로부터 손상된 프로그램을 수정하는 학습의 동기를 부여한다.
- 코드와 피드백 간의 교차 기호 추론 및 한정된 라벨 수리 데이터의 문제 두 가지를 다룬다.
- 그래프 기반 표현과 자체 지도 학습 트레이닝 패러다임을 제안하여 수리 정확도를 향상시킨다.
제안 방법
- 식별자와 진단 토큰을 코드와 메시지에 걸쳐 연결하는 프로그램-피드백 그래프를 도입한다.
- 그래프 주의 신경망(Graph Attention Network)을 프로그램-피드백 그래프에 적용하여 기호 정보를 전달한다.
- 라벨이 없는 대규모 작동 프로그램들을 손상/수정 쌍으로 만들기 위해 노이즈를 추가한 자체 지도 전처리(pre-training) 시스템을 사용한다.
- 인코더–디코더 아키텍처의 수리 모델(DrRepair)을 학습시켜 잘못된 줄을 국지화하고 수정된 줄을 생성한다.
- 다중 오류 프로그램에서 반복적 수리를 사용하여 DeepFix(전체 수리율)과 SPoC(합성 수리율)에서 평가한다.
실험 결과
연구 질문
- RQ1프로그램-피드백 그래프가 시퀀스/AST 기반 방법을 넘어 정보 흐름과 기호 추적을 향상시킬 수 있는가?
- RQ2비라벨 코드에 대한 자체 지도 전처리가 데이터가 제한된 설정에서 수리 성능을 향상시키는가?
- RQ3그래프 추론과 사전 학습의 조합이 초보 프로그래밍 과제와 프로그램 합성 출력에서 수리 정확도에 어떤 영향을 미치는가?
- RQ4여러 개의 동시 오류와 줄 간 추론이 필요한 오류에 대해 방법이 견고한가?
주요 결과
- DrRepair는 DeepFix에서 전체 수리율 68.2%를 달성하여 이전 최고치를 22.9 포인트 향상시켰다.
- DrRepair는 SPoC에서 합성 성공률 48.4%를 달성하여 이전 최고치를 3.7포인트 향상시켰다.
- 자체 지도 학습 전처리와 프로그램-피드백 그래프는 강력한 베이스라인 대비 보완적 이점을 제공한다.
- 코드 전용 토큰과 코드–피드백 토큰을 연결하는 그래프 간선이 모두 유익하며, 최종 프로그램-피드백 그래프가 최상의 결과를 낳는다.
- 컴파일러 메시지는 수리 성능에 결정적이며, 이를 제거하면 실제 테스트 데이터에서 정확도가 크게 떨어진다.
- 그래프 기반 추론은 특히 줄 간 분석 및 기호 추적이 필요한 오류에 도움이 된다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.