Skip to main content
QUICK REVIEW

[논문 리뷰] ast2vec: Utilizing Recursive Neural Encodings of Python Programs

Benjamin Paaßen, Jessica McBroom|arXiv (Cornell University)|2021. 03. 22.
Machine Learning and Data Classification참고 문헌 55인용 수 7
한 줄 요약

ast2vec는 파이썬 추상구문트리(AST)를 고밀도 벡터로 인코딩하고 복원하는 재귀 신경망이며, 초보자 프로그래밍 데이터에 다양한 데이터 마이닝 작업을 가능하게 한다. 50만 개의 초보자 프로그램으로 훈련된 ast2vec는 낮은 자동에코딩 오차를 기록하고, 확장 가능한 벡터 기반 분석을 지원하며, 단순한 선형 모델로도 높은 정확도의 예측을 가능하게 하여 재훈련 없이도 일반 목적의 재사용 가능한 표현을 제공한다.

ABSTRACT

Educational datamining involves the application of datamining techniques to student activity. However, in the context of computer programming, many datamining techniques can not be applied because they expect vector-shaped input whereas computer programs have the form of syntax trees. In this paper, we present ast2vec, a neural network that maps Python syntax trees to vectors and back, thereby facilitating datamining on computer programs as well as the interpretation of datamining results. Ast2vec has been trained on almost half a million programs of novice programmers and is designed to be applied across learning tasks without re-training, meaning that users can apply it without any need for (additional) deep learning. We demonstrate the generality of ast2vec in three settings: First, we provide example analyses using ast2vec on a classroom-sized dataset, involving visualization, student motion analysis, clustering, and outlier detection, including two novel analyses, namely a progress-variance-projection and a dynamical systems analysis. Second, we consider the ability of ast2vec to recover the original syntax tree from its vector representation on the training data and two further large-scale programming datasets. Finally, we evaluate the predictive capability of a simple linear regression on top of ast2vec, obtaining similar results to techniques that work directly on syntax trees. We hope ast2vec can augment the educational datamining toolbelt by making analyses of computer programs easier, richer, and more efficient.

연구 동기 및 목표

  • 프로그램 데이터는 일반적으로 트리 구조이지만 벡터 형태가 아니므로, 표준 데이터 마이닝 기법을 적용하는 데 도전 과제가 되는 문제를 해결하기 위해.
  • 재훈련 없이도 다양한 학습 과제에 일반화되는 일반 목적의 재사용 가능한 파이썬 프로그램 벡터 표현을 개발하기 위해.
  • 벡터 기반 방법을 사용하여 학생 프로그래밍 데이터에 대해 효율적이고 확장 가능하며 해석 가능한 데이터 마이닝을 가능하게 하기 위해.
  • 벡터 공간에서 진보-분산 투영 및 동적 시스템 모델링과 같은 새로운 분석 기법을 지원하기 위해.
  • 학습된 표현 위에서 단순한 모델이 복잡한 트리 기반 방법과 비슷한 성능을 달성할 수 있음을 보여주기 위해.

제안 방법

  • ast2vec는 하향식, 구조 인식 방식을 사용해 파이썬 AST를 고정 크기의 고밀도 벡터로 변환하는 재귀 신경망을 사용한다.
  • 모델은 복원 손실을 최소화하도록 자동에코더로 훈련되어 인코딩 및 디코딩 과정에서 구문 구조를 유지한다.
  • 복원 과정에서 문법 제약 조건을 적용하여 유효한 AST만 복원되도록 보장한다.
  • 모델은 교육 플랫폼에서 수집한 약 50만 개의 초보자 파이썬 프로그램으로 훈련된다.
  • 클러스터링, 시각화, 선형 회귀와 같은 벡터 기반 분석 기법을 직접 학습된 표현에 적용한다.
  • 프로그램의 진화를 모델링하고 다음 코드 변경을 예측하기 위해 새로운 선형 동적 시스템 방법을 제안한다.

실험 결과

연구 질문

  • RQ1신경망이 다양한 데이터 마이닝 작업을 지원할 수 있는 일반 목적의 재사용 가능한 파이썬 AST 벡터 표현을 학습할 수 있는가?
  • RQ2ast2vec가 벡터 인코딩으로부터 원래 AST를 얼마나 잘 복원할 수 있는가, 특히 미사용된 데이터셋에서의 성능은 어떠한가?
  • RQ3ast2vec 임베딩 위에서 단순한 모델(예: 선형 회귀)이 복잡한 트리 기반 모델과 비슷한 예측 성능을 달성할 수 있는가?
  • RQ4진보-분산 투영 및 동적 시스템 모델링과 같은 새로운 분석 기법이 벡터 공간에서 효과적으로 적용될 수 있는가?
  • RQ5ast2vec가 학습한 벡터 공간은 교육 데이터 분석에 대해 부드럽고 해석 가능성이 있는가?

주요 결과

  • ast2vec는 훈련 데이터에서 낮은 자동에코딩 오차를 기록하고, 두 개의 대규모 미사용 프로그래밍 데이터셋으로도 잘 일반화되지만, AST 크가 커질수록 오차가 증가한다.
  • 인코딩 및 디코딩 시간은 이론적 O(n) 경계와 일치하여 대규모 교육 데이터에 대한 확장성과 일치함을 보여준다.
  • ast2vec 임베딩 위에서 단순한 선형 회귀 모델이 다음 코드 예측 작업에서 최신 기술 수준의 트리 기반 방법과 비슷한 예측 정확도를 달성한다.
  • ast2vec의 벡터 공간은 진보-분산 투영 시각화 및 수렴이 보장되는 선형 동적 시스템 모델을 포함한 새로운 분석 기법을 지원할 정도로 부드럽고 충분히 해석 가능하다.
  • 모델은 재훈련이나 전문가 레이블 없이도 클러스터링, 이상치 탐지, 운동 분석과 같은 다양한 데이터 마이닝 작업을 수행할 수 있다.
  • 강력한 성능에도 불구하고, 더 큰 프로그램에서는 자동에코딩 오차가 더 높게 유지되므로, 더 반복적인 아키텍처로 개선 여지가 있다.

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

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

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

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