Skip to main content
QUICK REVIEW

[논문 리뷰] Learning Semantic Program Embeddings with Graph Interval Neural Network

Yu Wang, Fengjuan Gao|arXiv (Cornell University)|2020. 05. 18.
Software Engineering Research참고 문헌 37인용 수 4
한 줄 요약

이 논문은 제어 흐름 그래프에서 주로 루프를 중심으로 하는 간격 구조에 초점을 맞춰 의미론적 프로그램 임베딩을 학습하는 새로운 GNN 아키텍처인 그래프 간격 신경망(GINN)을 제안한다. GINN은 프로그램을 계층적 간격으로 추상화함으로써 표준 GNN보다 정밀도와 확장성을 향상시켜 실제 Java 코드베이스에서 변수 오용 예측, 메서드 이름 예측, 신경 기반 버그 탐지 작업에서 최신 기술을 능가한다.

ABSTRACT

Learning distributed representations of source code has been a challenging task for machine learning models. Earlier works treated programs as text so that natural language methods can be readily applied. Unfortunately, such approaches do not capitalize on the rich structural information possessed by source code. Of late, Graph Neural Network (GNN) was proposed to learn embeddings of programs from their graph representations. Due to the homogeneous and expensive message-passing procedure, GNN can suffer from precision issues, especially when dealing with programs rendered into large graphs. In this paper, we present a new graph neural architecture, called Graph Interval Neural Network (GINN), to tackle the weaknesses of the existing GNN. Unlike the standard GNN, GINN generalizes from a curated graph representation obtained through an abstraction method designed to aid models to learn. In particular, GINN focuses exclusively on intervals for mining the feature representation of a program, furthermore, GINN operates on a hierarchy of intervals for scaling the learning to large graphs. We evaluate GINN for two popular downstream applications: variable misuse prediction and method name prediction. Results show in both cases GINN outperforms the state-of-the-art models by a comfortable margin. We have also created a neural bug detector based on GINN to catch null pointer deference bugs in Java code. While learning from the same 9,000 methods extracted from 64 projects, GINN-based bug detector significantly outperforms GNN-based bug detector on 13 unseen test projects. Next, we deploy our trained GINN-based bug detector and Facebook Infer to scan the codebase of 20 highly starred projects on GitHub. Through our manual inspection, we confirm 38 bugs out of 102 warnings raised by GINN-based bug detector compared to 34 bugs out of 129 warnings for Facebook Infer.

연구 동기 및 목표

  • 소스 코드에서 정밀하고 확장 가능한 프로그램 임베딩을 학습하는 데 있어 표준 그래프 신경망(GNN)의 한계를 해결하기 위해.
  • 특히 루프와 같은 프로그램 고유의 구조적 특성을 활용하기 위해 제어 흐름 그래프를 계층적 간격으로 추상화하기 위해.
  • 기존의 텍스트 기반 또는 그래프 기반 모델보다 더 효과적으로 의미론적 프로그램 특징을 포착하는 일반 목적의 딥러닝 모델을 개발하기 위해.
  • 버그 탐지, 변수 오용 예측, 메서드 이름 예측과 같은 후행 프로그램 분석 작업을 향상시키기 위해.
  • 간격 기반 추상화가 계산 비용을 줄이면서도 모델 정확도를 유지하거나 향상시킬 수 있는지를 입증하기 위해.

제안 방법

  • GINN은 제어 흐름 그래프를 계층적 간격으로 변환하는 새로운 추상화 방법을 사용하며, 각 간격은 루프 구조를 나타낸다.
  • 모델은 비어 있지 않은 그래프 요소에서 발생하는 노이즈를 줄이기 위해 오직 이러한 간격에 집중하여 깊이 있는 의미론적 특징을 추출한다.
  • GINN은 간격의 계층적 구조를 기반으로 작동하여 내부 루프가 중첩된 구조를 추상화함으로써 대규모 프로그램에 대한 효율적 확장이 가능하다.
  • 표준 GNN의 메시지 전달 메커니즘을 활용하지만, 전체 그래프를 아우르는 것이 아니라 간격 내부 및 간격 간에만 적용한다.
  • 이 추상화는 의미적으로 중요한 부분그래프(루프)만 처리함으로써 학습 효율성과 정밀도를 향상시킨다.
  • 변수 오용 예측, 메서드 이름 예측, 버그 탐지와 같은 후행 작업을 위해 엔드 투 엔드로 훈련된다.

실험 결과

연구 질문

  • RQ1제어 흐름 그래프에서 간격 구조(예: 루프)에 집중함으로써 프로그램 임베딩 모델의 정밀도를 향상시킬 수 있는가?
  • RQ2간격의 계층적 추상화가 대규모 코드베이스에서 GNN의 확장성에 어떻게 기여하는가?
  • RQ3GINN은 후행 프로그램 분석 작업에서 표준 GNN과 이전 최신 기술 모델을 능가하는가?
  • RQ4GINN 기반 신경 기반 버그 탐지기는 기존 도구인 페이스북 인퍼와 비교해 실제 세계의 버그를 더 효과적으로 탐지할 수 있는가?
  • RQ5간격 기반 추상화는 대규모 그래프 전반에 걸친 광범위한 메시지 전달의 필요성을 얼마나 줄일 수 있는가?

주요 결과

  • GINN은 변수 오용 예측 및 메서드 이름 예측 작업에서 최신 기술 모델을 능가하며, 두 작업 모두 안정적인 성능 격차를 확보했다.
  • 13개의 미사용 테스트 프로젝트에서, 64개 프로젝트에서 9,000개의 메서드를 훈련한 GINN 기반 버그 탐지기는 GNN 기반 탐지기보다 더 많은 참 긍정 사례를 탐지했다.
  • 20개의 고별점 GitHub 프로젝트에서 실세계 평가를 수행한 결과, GINN은 102건의 경고를 발생시켰고, 그 중 38건이 실제 버그로 확인되었으며, 페이스북 인퍼는 129건의 경고 중 34건이 실제 버그로 확인되었다.
  • GINN이 탐지한 38개의 버그 중 11개는 수정되었고, 12개는 확인되었으며 수정 대기 중이었으며, 이는 강력한 실용적 유용성을 보여준다.
  • 계층적 간격 추상화 덕분에 GINN는 정밀도를 유지하면서도 표준 GNN과 달리 대규모 그래프로의 확장에 효율적으로 대응할 수 있다.
  • GINN의 루프 간격에 대한 집중은 더 깊은 의미론적 특징을 포착할 수 있게 하여 더 정확하고 일반화 능력이 뛰어난 프로그램 임베딩을 생성한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.