Skip to main content
QUICK REVIEW

[論文レビュー] Coder Reviewer Reranking for Code Generation

Tianyi Zhang, Changyuan Yu|arXiv (Cornell University)|Nov 29, 2022
Software Engineering Research被引用数 7
ひとこと要約

本稿では、コード生成の精度を向上させるために、生成されたプログラムを Coder モデル(p(y|x))と Reviewer モデル(p(x|y))の両方で同時にスコアリングする、プロンプトベースの手法である Coder-Reviewer リランクを提案する。この手法は、標準的な Coder モデル専用のリランク手法に比べて最大で17%の絶対的精度向上を達成し、実行可能性フィルタリングと組み合わせることで MBR-exec を上回る性能を示す。

ABSTRACT

Sampling diverse programs from a code language model and reranking with model likelihood is a popular method for code generation but it is prone to preferring degenerate solutions. Inspired by collaborative programming, we propose Coder-Reviewer reranking. We augment Coder language models from past work, which generate programs given language instructions, with Reviewer models, which evaluate the likelihood of the instruction given the generated programs. We perform an extensive study across six datasets with eight models from three model families. Experimental results show that Coder-Reviewer reranking leads to consistent and significant improvement (up to 17% absolute accuracy gain) over reranking with the Coder model only. When combined with executability filtering, Coder-Reviewer reranking can often outperform the minimum Bayes risk method. Coder-Reviewer reranking is easy to implement by prompting, can generalize to different programming languages, and works well with off-the-shelf hyperparameters.

研究の動機と目的

  • モード探索推論に起因する短い、または繰り返しの多いコードのような退化解を好む Coder モデル専用のリランク手法の限界を解消する。
  • 逆尤度 p(x|y) を用いて指示の適合性を評価する Reviewer モデルを導入することで、コード生成の信頼性を向上させる。
  • 追加の微調整やトレーニングを必要としない、シンプルでゼロショットのプロンプトベース手法を用いて Reviewer モデルを実装する。
  • 多様なデータセット、モデル、プログラミング言語において一貫した性能向上を示す。
  • 再トレーニングなしで、汎用的なハイパーパrameterと既存のフィルタリング技術と効果的に連携できるかどうかを示す。

提案手法

  • 事前学習済みの Coder モデルを用いて、自然言語の指示 x から複数の候補プログラム y を生成する。
  • 各生成プログラム y に対して、プロンプトの順序を逆転させ、同じモデルを Reviewer として用い、自己回帰尤度を用いて p(x|y) を推定する。
  • 二つの尤度の積、p(x|y) × p(y|x) を用いてリランクを行う。これは重み付き最大相互情報量(MMI)目的関数に対応する。
  • 微調整や追加のトレーニングを回避するため、Few-shot プロンプトを用いて Reviewer モデルを実装する。
  • 実行可能性フィルタリングと Coder-Reviewer リランクを組み合わせることで、特にテストケースが多いベンチマークにおいて性能をさらに向上させる。
  • リランクの前に、極端に短い、または繰り返しの多いプログラムをフィルタリングするための退化解の排除ステップを適用する。

実験結果

リサーチクエスチョン

  • RQ1逆尤度モデル(p(x|y))は、コード生成における退化コードへのバイアスを効果的に低減できるか?
  • RQ2p(y|x) と p(x|y) を積スコアリングで組み合わせることで、多様なモデルやデータセットにおいて一貫した性能向上が得られるか?
  • RQ3MBR-exec といった最先端の手法と比較して、Coder-Reviewer リランクは精度と実用性の面で優れているか?
  • RQ4再トレーニングなしで、プログラミング言語やモデルファミリーにわたって、どの程度一般化できるか?
  • RQ5サンプル数や混合比 α といったハイパーパrameter に対して、この手法はどの程度感度を示すか?

主な発見

  • Coder-Reviewer リランクは、6つのデータセットと8つのモデルにおいて、Coder モデル専用のリランク手法に比べて最大で17%の絶対的精度向上を達成した。
  • 本手法は、すべての評価対象のモデルファミリー(例:Codex、CodeGen、CodeT)およびプログラミング言語(Python、Java、Bash)において一貫して性能向上を示した。
  • 実行可能性フィルタリングと組み合わせた場合、実行出力の複雑な集約を必要とする MBR-exec を上回ることが多く、性能に優れた。
  • 候補プログラムの数が増加しても安定した性能を示し、退化解に起因する Coder モデル専用のリランク手法の性能劣化とは対照的であった。
  • 退化解の排除はすべての手法に効果をもたらしたが、特に Coder モデル専用のリランク手法において顕著な向上が見られた。これは、Coder-Reviewer リランクが本質的なバイアスを低減していることを裏付けている。
  • ハイパーパrameter α(混合比)のチューニングは、ほとんどの場合で <1% のわずかな向上しか得られず、α = 0.5 が堅牢なデフォルト選択肢であることが示された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。