大規模言語モデルによる競技プログラミングのような入力に対し出力が一意に定まるコード生成においては、タスクを小タスクの連続に分割し、それぞれを解決するアプローチが取られている。本研究ではコード内定義関数を利用しタスクの細分化を行うCodeChainと呼ばれる機構について、高難易度の問題における精度向上に向け、関数内関数を利用しさらなる細分化を行うようプロンプトの改修および関数内関数の抽出、評価を追加した。結果、一部のデータ、モデルでは精度の向上が確認できた。

大規模言語モデル(LargeLanguageModel,LLM)は大量のテキストデータで構成されたコーパスを入力データとして学習した機械学習モデルである。2017年におけるAttention機構を導入したTransformerアーキテクチャの提唱[1]、その翌年のTransformerを導入した学習モデルであるGPT[2]、BERT[3]の開発を端緒としてLLMの開発が進み、よりパラメータの大きく、高精度なモデルが登場した[4,5,6]。LLMは汎用性が高く、文章の補完や生成にとどまらずコードの生成や論理的推論、知識問題への応答が可能となっている。また、転移学習やファインチューニングの利用によりStarCoder[7]やWizardCoder[8]などコード生成に特化したLLMモデルも出現した。しかし、LLMによるコード生成には依然として課題が多く、HumanEval[9]やMBPP[10]ベンチマークなどといった評価指標の問題群は初歩的な内容に留まっている。より複雑なタスクをクリアできるプログラムの生成においては、タスク達成までをより小さなタスクの連続へ分割し、その達成方法をそれぞれに与える計画の立案力や出力を修正する能力が必要になる。上記の課題に対し、CodeChain[11]は、関数定義を用いてタスクの細分化を行い、出力から選別された関数を利用して再生成することで出力を修正している。しかし、その精度はAPPSベンチマーク[12]において最高でもGPT-3.5[13]と併用した場合の30.24%である。特に最高難易度の“competition“の問題群においては精度は12.38%にとどまる。そこで、本研究では細分化されたタスクをそれぞれ細分化する手法[14,15]を用いてタスク一つ一つの粒度を高め、精度の向上を目指す。