Skip to main content
QUICK REVIEW

[논문 리뷰] CodeBERTScore: Evaluating Code Generation with Pretrained Models of Code

Shuyan Zhou, Uri Alon|arXiv (Cornell University)|2023. 02. 10.
Software Engineering Research인용 수 6
한 줄 요약

CodeBERTScore는 사전 학습된 코드 모델에서 유의미한 맥락 임베딩을 활용하여 생성된 코드와 자연어 맥락을 모두 통합한 새로운 코드 생성 평가 지표이다. 이는 네 가지 프로그래밍 언어에서 기존 지표들인 BLEU, CodeBLEU 및 실행 기반 기준보다 인간의 선호도와 기능적 정확도와 더 높은 상관관계를 보이며, 성능을 뛰어나게 한다.

ABSTRACT

Since the rise of neural natural-language-to-code models (NL->Code) that can generate long expressions and statements rather than a single next-token, one of the major problems has been reliably evaluating their generated output. In this paper, we propose CodeBERTScore: an evaluation metric for code generation, which builds on BERTScore (Zhang et al., 2020). Instead of encoding only the generated tokens as in BERTScore, CodeBERTScore also encodes the natural language input preceding the generated code, thus modeling the consistency between the generated code and its given natural language context as well. We perform an extensive evaluation of CodeBERTScore across four programming languages. We find that CodeBERTScore achieves a higher correlation with human preference and with functional correctness than all existing metrics. That is, generated code that receives a higher score by CodeBERTScore is more likely to be preferred by humans, as well as to function correctly when executed. We release five language-specific pretrained models to use with our publicly available code. Our language-specific models have been downloaded more than 1,000,000 times from the Huggingface Hub. Our code and data are available at https://github.com/neulab/code-bert-score

연구 동기 및 목표

  • 기존 코드 생성 평가 지표가 어휘 일치에 의존하여 의미적 동치성을 포착하지 못하는 한계를 해결하기 위해.
  • 생성된 코드와 자연어 입력 맥락 간의 일관성을 모델링하여 평가를 향상시키기 위해.
  • 이전 방법들보다 인간의 선호도 및 기능적 정확도와 더 높은 상관관계를 가지는 지표를 개발하기 위해.
  • 테스트 케이스나 실행이 필요로 하지 않는 스케일러블하고 비지도 학습 기반의 평가 방법을 만들기 위해, 비용이 많이 드는 인간 주석 데이터셋에 대한 의존도를 줄이기 위해.

제안 방법

  • CodeBERTScore는 생성된 코드와 기준 코드를 모두 코드에 특화된 미세조정된 언어 모델을 사용하여 인코딩하며, 코드 이전의 자연어 지시어나 주석도 포함한다.
  • 생성된 코드 토큰과 기준 코드 토큰의 맥락 임베딩 간의 토큰 수준에서의 코사인 유사도를 계산하여 어휘 일치를 넘는 의미적 일치를 포착한다.
  • 정밀도와 재현율은 최적의 매칭 토큰 쌍을 기반으로 계산되며, 정확한 토큰 겹침이 아닌 맥락 인식 기반의 일치에 중점을 둔다.
  • 평가 과정에 자연어 맥락을 통합하여 의도와 프로그래밍적 의미를 더 잘 모델링할 수 있도록 한다.
  • 다국어 및 언어별로 특화된 CodeBERT 스타일의 사전 학습된 모델을 사용하여 다국어 평가가 가능하도록 한다.
  • 이 방법은 완전히 비지도 학습 기반이며, 테스트 실행이나 수작업 테스트 케이스가 필요로 하지 않아 광범위한 적용이 가능하다.

실험 결과

연구 질문

  • RQ1자연어 맥락을 통합한 코드 생성 평가 지표가 기존 지표보다 인간의 선호도와 더 높은 상관관계를 가지는가?
  • RQ2맥락 임베딩을 통한 의미 유사성 모델링이 어휘 기반 또는 AST 기반 지표보다 기능적 정확도와 더 잘 일치하는가?
  • RQ3BLEU, CodeBLEU 및 실행 기반 평가와 같은 최첨단 기준 대비 CodeBERTScore가 여러 프로그래밍 언어에서 어떻게 성능을 내는가?
  • RQ4사전 학습된 코드 모델에 기반한 지표가 정확한 어휘나 구조 일치에 의존하는 지표보다 다양한 코드 생성 시나리오에서 더 뛰어난 성능을 내는가?
  • RQ5인코딩 과정에 자연어 입력을 포함함으로써 코드 품질 평가가 얼마나 향상되는가?

주요 결과

  • CodeBERTScore는 BLEU, CrystalBLEU, CodeBLEU 및 실행 기반 기준을 포함한 모든 이전 지표보다 인간의 선호도와 유의미하게 더 높은 상관관계를 달성한다.
  • CodeBERTScore 점수에서 높은 점수를 받은 코드는 실행했을 때 기능적으로 정확할 가능성이 더 높으며, 기능적 정확도와 강력한 일치를 보인다.
  • 이 지표는 자바, 파이썬, 자바스크립트, C++ 등 네 가지 프로그래밍 언어에서 기존 방법들을 능가한다.
  • 저자들이 공개한 다섯 개의 언어별 사전 학습된 모델은 허깅패이스 허브에서 100만 번 이상 다운로드되어 커뮤니티의 넓은 수용을 보였다.
  • CodeBERTScore는 동일하지 않은데도 의미적으로 동치인 코드에 대해서도 높은 성능을 유지하며, 문법적으로 유사하지만 잘못된 코드보다 기능적으로 정확한 구현을 더 올바르게 선호한다.
  • 이 방법은 실용적으로 계산이 가능하며, 각 모델에 대해 단일 전방 전파만 필요하고, 현대 머신러닝 파이프라인에서 GPU의 광범위한 가용성에 비추어 GPU 사용이 정당화된다.

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

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

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

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