Skip to main content
QUICK REVIEW

[논문 리뷰] Learning Blended, Precise Semantic Program Embeddings

Ke Wang, Zhendong Su|arXiv (Cornell University)|2019. 07. 03.
Software Engineering Research참고 문헌 26인용 수 17
한 줄 요약

이 논문은 심벌릭 실행 트레이스와 콘crete 실행 트레이스를 융합하여 정밀한 프로그램 임베딩을 학습하는 딥 뉴럴 네트워크인 LiGer를 제안한다. 기존의 최상위 수준의 정적 및 동적 모델과 비교해 의미 분류 정확도를 크게 향상시키고 실행 오버헤드를 감소시킨다. LiGer는 프로그램 의미론 분류와 메서드 이름 예측에서 최신 기술 수준의 성능을 달성하며, Gated Graph Neural Networks, code2vec, code2seq를 능가한다. 또한 DYPRO보다 10배 적은 실행 횟수로도 성능을 달성한다.

ABSTRACT

Learning neural program embeddings is key to utilizing deep neural networks in program languages research --- precise and efficient program representations enable the application of deep models to a wide range of program analysis tasks. Existing approaches predominately learn to embed programs from their source code, and, as a result, they do not capture deep, precise program semantics. On the other hand, models learned from runtime information critically depend on the quality of program executions, thus leading to trained models with highly variant quality. This paper tackles these inherent weaknesses of prior approaches by introducing a new deep neural network, \liger, which learns program representations from a mixture of symbolic and concrete execution traces. We have evaluated \liger on \coset, a recently proposed benchmark suite for evaluating neural program embeddings. Results show \liger (1) is significantly more accurate than the state-of-the-art syntax-based models Gated Graph Neural Network and code2vec in classifying program semantics, and (2) requires on average 10x fewer executions covering 74\% fewer paths than the state-of-the-art dynamic model \dypro. Furthermore, we extend \liger to predict the name for a method from its body's vector representation. Learning on the same set of functions (more than 170K in total), \liger significantly outperforms code2seq, the previous state-of-the-art for method name prediction.

연구 동기 및 목표

  • 소스 코드에만 의존하는 정적 모델의 한계를 해결하기 위해 깊이 있는 의미론을 포착하지 못하는 문제를 해결한다.
  • 실제 프로그램 실행에 의존하는 동적 모델의 높은 변동성과 실행 오버헤드 문제를 극복한다.
  • 심벌릭 및 콘크리트 실행 트레이스를 융합한 하이브리드 접근 방식을 개발하여 더 정밀하고 효율적인 프로그램 임베딩을 만든다.
  • 통합된 신경망 아키텍처를 사용해 프로그램 의미론 분류 및 메서드 이름 예측의 정확도를 향상시킨다.

제안 방법

  • LiGer는 심벌릭 실행 트레이스와 콘크리트 실행 트레이스를 별도로 처리하기 위해 이중 브랜치 신경망을 사용한다.
  • 어텐션 메커니즘을 활용해 양쪽 트레이스의 특징을 동적으로 가중하고 융합하여 통합된 프로그램 임베딩을 생성한다.
  • 대비 학습(contrastive learning)을 통해 엔드 투 엔드로 학습하여 의미적으로 동일한 프로그램의 임베딩을 정렬하고, 다른 의미를 가진 프로그램의 임베딩을 분리한다.
  • 메서드 이름 예측을 위해 LiGer는 블렌디드 임베딩을 조건으로 삼는 자동회귀 디코더를 사용하여 단어의 시퀀스로 이름을 디코딩한다.
  • 심벌릭 트레이스는 제어 흐름 및 데이터 흐름 정보의 정적 분석을 통해 생성되며, 콘크리트 트레이스는 다양한 입력을 사용해 실제 프로그램 실행에서 수집된다.
  • 유연한 융합 모듈을 통해 두 트레이스 유형을 아키텍처 수준에서 통합하며, 관련성과 맥락에 따라 표현을 적응적으로 조합한다.

실험 결과

연구 질문

  • RQ1심벌릭 및 콘크리트 실행 트레이스를 융합한 접근 방식이 순수하게 정적 또는 동적 방법보다 프로그램 임베딩의 정밀도를 향상시킬 수 있는가?
  • RQ2심벌릭 및 콘크리트 트레이스의 융합이 프로그램 의미론 분류 정확도에 미치는 영향은 어떠한가?
  • RQ3동적 모델과 비교해 LiGer가 임베딩 품질을 유지하거나 향상시키면서도 필요한 프로그램 실행 횟수를 얼마나 줄일 수 있는가?
  • RQ4블렌디드 임베딩 표현 방식이 메서드 이름 예측과 같은 후행 작업에 잘 일반화될 수 있는가?
  • RQ5code2vec, code2seq, Gated Graph Neural Networks와 같은 최신 기술 수준의 모델과 비교해 LiGer의 의미론 분류 및 이름 예측 성능은 어떠한가?

주요 결과

  • COSET 벤치마크에서 LiGer는 Gated Graph Neural Network 및 code2vec보다 프로그램 의미론 분류 정확도에서 유의미하게 높은 성능을 기록한다.
  • LiGer는 최신 동적 모델인 DYPRO보다 평균적으로 10배 적은 프로그램 실행 횟수로도 동일한 성능을 달성하며, 74% 적은 경로를 커버한다.
  • 심벌릭 트레이스를 활용해 학습 품질의 변동성을 줄여 학습을 안정화시키고 실행 품질에 대한 의존도를 감소시킨다.
  • 메서드 이름 예측에서 LiGer는 17만 개가 넘는 함수로 구성된 동일한 데이터셋에서 code2seq를 능가한다.
  • 블렌디드 접근 방식을 통해 정적 모델이 간과하는 깊은 의미론적 유사성(예: 버블 정렬의 다양한 구현 간 유사성)을 포착할 수 있다.
  • 어텐션 메커니즘이 심벌릭 및 콘크리트 트레이스 간의 특징 융합을 효과적으로 조율하여 더 강력하고 정밀한 임베딩을 생성한다.

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

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

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

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