Jigsaw: 大規模言語モデルのコード生成に前/後処理を追加し精度改善
Jigsaw: Large Language Models meet Program Synthesis
https://arxiv.org/abs/2112.02969
ICSE'22, 2021/12/06
- 大規模事前学習言語モデル(GPT-3, Codex.PTLMと呼ぶ)は自然言語からコード生成可能であるが,変数名変換とAST-to-AST変換による後処理モジュールを追加して生成コード(Pandas)の品質を向上さるJigsawを提案
モデル
- 入力は自然言語記述とテストケース(入出力例)
- モデルはPTLMをブラックボックスとして使用し,後処理ではAPI関数と引数の組み合わせ検索, PTMLの出力を修正する変換ルールの学習/更新を行う
- 変数名の変換, 引数の変換についてはAutopandasツール(9)で使用されているアプローチを採用(GNN).PTLMの出力から自然言語によるクエリでメソッド名を抽出しデータを集め,学習.Autopandasのジェネレータを拡張し、リストや辞書のような複雑なデータ型を考慮し、考慮するAPIのセットを拡張
- 演算子や括弧の付与に関してはAST-to-ASTの変換(BluePencil(26)ベース)で対応する
- 前処理として,コンテキストバンクから現在のクエリに類似した要素を選び,PTLMへ与えるコンテキストに追加する.類似性はtf-idf及びtransformerで算出する.コンテキストバンクは更新される
データ
- 2つのデータセットを作成( PandasEval1 68個のPython Pandasタスク, PandasEval2 21のPandasタスク 25人のユーザと2回のセッションで実施したハッカソンで、図解として提示)