Skip to main content
QUICK REVIEW

[논문 리뷰] The CodRep Machine Learning on Source Code Competition

Zimin Chen, Martin Monperrus|arXiv (Cornell University)|2018. 07. 06.
Software Engineering Research참고 문헌 1인용 수 8
한 줄 요약

CodRep 경쟁은 소스 파일 내 코드 교체 작업에서 올바른 삽입 라인 번호를 예측하는 데 중점을 둔 새로운 기계학습 과제를 소개합니다. 총 58,069개의 과제를 포함하는 5개의 정제된 오픈소스 프로젝트의 일문자 커밋 데이터셋을 사용하여, 절대 라인 수 차이의 하이퍼볼릭 탄젠트 기반의 미분 가능하고 유한한 손실 함수를 활용해 실제 코드 진화 데이터를 분석할 수 있도록 합니다.

ABSTRACT

CodRep is a machine learning competition on source code data. It is carefully designed so that anybody can enter the competition, whether professional researchers, students or independent scholars, without specific knowledge in machine learning or program analysis. In particular, it aims at being a common playground on which the machine learning and the software engineering research communities can interact. The competition has started on April 14th 2018 and has ended on October 14th 2018. The CodRep data is hosted at https://github.com/KTH/CodRep-competition/.

연구 동기 및 목표

  • 기계학습이나 프로그램 분석에 깊은 전문 지식이 필요하지 않은 연구자, 학부생, 독립 연구자들이 접근할 수 있는 공통의 벤치마크를 만들기 위해.
  • 실제 코드 변경 사례를 공유하는 공개 데이터셋을 통해 기계학습 및 소프트웨어 공학 분야 간 협업을 촉진하기 위해.
  • 소스 파일 내 코드 라인의 삽입 위치를 예측하는 표준화된 문제 설정을 제공하고, 특히 교체 작업에 집중하기 위해.
  • 학술 연구에서 다뤄진 바 있는 대규모 일문자 커밋 데이터셋을 수집하고 정제하여 데이터 품질과 재현 가능성을 확보하기 위해.
  • 실제 상황에서 작은 라인 번호 오차에 대해 민감도가 낮은 특성을 반영하는 강력하고, 미분 가능한 손실 함수를 설계하기 위해.

제안 방법

  • 경쟁 과제는 주어진 코드 라인을 소스 파일의 어느 라인에 삽입하여 교체할지 예측하는 것입니다.
  • 입력 데이터는 쌍으로 구성되며, (삽입할 코드 라인, 전체 소스 파일) 형식으로 텍스트 파일에 저장되며, 첫 번째 줄에 삽입 라인이, 두 번째 줄에 파일 전체 내용이 포함됩니다.
  • 학습 라벨는 별도의 솔루션 파일에 제공되며, 각 과제에 대한 정답 라인 번호가 포함되어 있습니다.
  • 데이터셋은 이전에 학술 논문에서 분석된 오픈소스 프로젝트의 실제 커밋에서 유래하여 관련성과 재현 가능성을 확보합니다.
  • 데이터 필터링을 통해 주석만 변경된 변경, 빈 라인, 다중 라인 교체를 제외하고, Java 파일 내 단일 라인 교체 커밋만 유지합니다.
  • 특정 손실 함수를 사용합니다: tanh(|정답 라인 수 − 예측 라인 수|), 이는 오차를 유한하게 제한하고, 대칭적이며, 연속적이고, 미분 가능합니다(0을 제외한 점에서). 또한 큰 오차에 대해 로그 스케일로 벌점을 적용합니다.

실험 결과

연구 질문

  • RQ1기계학습 모델은 실제 소스 코드 파일 내 코드 교체 작업에서 정확한 삽입 라인 번호를 얼마나 잘 예측할 수 있는가?
  • RQ2다양한 오픈소스 프로젝트 간 코드 스타일과 구조의 다양성에 비추어 복수의 모델 아키텍처가 얼마나 일반화되는가?
  • RQ3미분 가능하고 유한한 손실 함수는 코드 삽입 예측 과제의 모델 학습을 얼마나 효과적으로 이끄는가?
  • RQ4실제 프로젝트에서 유래한 일문자 커밋의 공통된 정제된 데이터셋은 코드 진화 및 코드 생성 연구의 신뢰할 수 있는 기준이 될 수 있는가?
  • RQ5데이터 기원과 필터링 기준은 코드 변경 예측 데이터셋의 품질과 활용도에 어떤 영향을 미치는가?

주요 결과

  • CodRep 경쟁은 현재까지 알려진 바 중 가장 큰 일문자 커밋 데이터셋을 제공하며, 총 58,069개의 예측 과제를 포함한 5개의 정제된 데이터셋으로 구성되어 있습니다.
  • 이 데이터셋은 오픈소스 프로젝트에서 실제 정제된 커밋으로 구성되어 있으며, Dataset1에는 4,394개, Dataset5에는 18,366개의 과제가 포함되어 있어 높은 관련성과 재현 가능성을 확보하고 있습니다.
  • 손실 함수 tanh(|정답 − 예측|)는 오차 측정이 유한하고 대칭적이며, 연속적이고, 미분 가능하며, 정확도가 매우 높은 예측에 대해 최소한의 벌점을 적용합니다.
  • Dataset5는 최종 순위 산정을 위한 은폐된 테스트 세트로 사용되어 공개 데이터에 대한 과적합 방지를 보장했습니다.
  • 경쟁 프레임워크는 기계학습이나 프로그램 분석 지식이 특별히 필요하지 않은 다양한 연구 공동체, 학부생 및 독립 연구자들의 광범위한 참여를 가능하게 했습니다.
  • 정제된 데이터는 https://github.com/KTH/CodRep-competition/ 에 공개되어 있어, 경쟁 이후의 향후 실증 연구 및 모델 훈련을 지원합니다.

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

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

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

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