[論文レビュー] CodeBERTScore: Evaluating Code Generation with Pretrained Models of Code
CodeBERTScore は、事前学習済みコードモデルからの文脈的埋め込みに生成コードとその自然言語的文脈を統合することで、BERTScore を拡張した新しいコード生成評価指標である。4 つのプログラミング言語において、BLEU や CodeBLEU や実行ベースのベースラインと比較して、人間の好みや機能的正しさとの相関がより高い。
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文脈的埋め込みによる意味的類似度のモデル化は、n-gram や AST に基づく指標と比較して、機能的正しさとの整合性を高めるか?
- RQ3BLEU や CodeBLEU や実行ベース評価といった最先端のベースラインと比較して、CodeBERTScore は複数のプログラミング言語でどのように性能を発揮するか?
- RQ4事前学習済みコードモデルに基づく指標は、正確な語彙的マッチングや構造的マッチングに依存する指標よりも、多様なコード生成シナリオで優れた性能を発揮できるか?
- RQ5エンコーディングプロセスに自然言語入力を含めることで、コード品質の評価がどの程度向上するか?
主な発見
- CodeBERTScore は、BLEU や CrystalBLEU や CodeBLEU や実行ベースのベースラインを含む、すべての先行指標よりも人間の好みとの相関が顕著に高い。
- CodeBERTScore で高いスコアを得た生成コードは、実行時に機能的に正しい可能性が高く、機能的正しさとの強い整合性を示している。
- この指標は、Java、Python、JavaScript、C++ の 4 つのプログラミング言語において、既存の手法を上回っている。
- 著者がリリースした 5 つの言語固有の事前学習済みモデルは、HuggingFace Hub から 1,000,000 回以上ダウンロードされており、コミュニティでの広範な採用が示されている。
- CodeBERTScore は、同一ではないが意味的に同等のコードに対しても高い性能を維持しており、構文的に類似しているが誤りである実装よりも、機能的に正しい実装を正しく優先している。
- この手法は実用的に計算可能であり、各モデルで一度の順伝播のみを要するため、GPU の使用は現代の ML パイプラインにおける GPU の広範な利用を考慮すれば正当化される。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。