LLMのアルゴリズム的推論能力向上の論文紹介
論文名
Language Models as Compilers: Simulating Pseudocode Execution Improves Algorithmic Reasoning in Language Models
arXivリンク
https://arxiv.org/pdf/2404.02575.pdf
ひとこと要約
LLMのアルゴリズム的推論能力を向上させるための新しいフレームワークTHINK-AND-EXECUTEを提案。
メモ
要約
大規模言語モデル(LLM)のアルゴリズム的推論能力を向上させるための新しいフレームワークTHINK-AND-EXECUTEを提案。THINKフェーズでは、与えられたタスクを解くための共通のロジックを見出し、それを疑似コードで表現する。EXECUTEフェーズでは、生成された疑似コードを各問題に適用し、コードの実行をシミュレートすることで推論を行う。7つのアルゴリズム的推論タスクでの実験により、THINK-AND-EXECUTEが既存手法よりも優れた性能を示すことを確認。
また、タスクレベルの疑似コードプロンプトが自然言語よりもLLMの推論を適切に導くこと、LLMが生成したロジックは人間と同等の品質であることなどが示された。
本研究の限界として、アルゴリズム的推論タスクに焦点を当てている点が挙げられるが、他の複雑な推論タスクへの適用可能性も示唆されている。THINK-AND-EXECUTEは、LLMの推論能力向上に向けた新しいアプローチとして期待される。
手法:THINK-AND-EXECUTE
THINK-AND-EXECUTEは、以下の2つのフェーズからなる。
THINKフェーズ: Instructor LM
与えられたタスクの例題を数題観察し、タスクを解くために必要な共通のロジックを分析。
分析結果をもとに、そのロジックを疑似コードの形式で記述。疑似コードは、プログラミング言語のように厳密な文法ではなく、抽象度の高い表現。
疑似コードには、条件分岐(if-else)、ループ(for, while)、変数、コメントなどを適切に用いて、ロジックを明確に表現。
EXECUTEフェーズ:Reasoner LM
THINKフェーズで生成された疑似コードプロンプトを、各問題に適用。
疑似コードの実行をシミュレートし、途中の実行結果を出力しながら推論。
print()文を適切に配置することで、推論の途中経過を出力し、変数の状態を追跡。
最終的な実行結果を問題の解答として出力。
また、THINK-AND-EXECUTEでは、タスクレベルの疑似コードプロンプトを用いることで、問題ごとにコードを生成する必要がなくなり、効率的に推論を行うことが可能。
結果
Direct prompting、Zero-shot CoT、Zero-shot PoTなどのベースラインと比較した結果、THINK-AND-EXECUTEはすべてのタスクにおいて最も高い精度を達成。これは、タスクレベルのロジックを発見し、それを各問題に適用することの有効性を示唆。
THINK-AND-EXECUTEは、問題ごとにPythonコードを生成するPoTよりも、幅広いタスクで高い精度を達成。これは、タスクレベルの戦略を疑似コードで表現し、それを各問題に適用することの有効性を示唆。
Instructor LMとしてGPT-3.5-Turboを用いて生成した疑似コードプロンプトを、CodeLlamaなどの小規模なLM(SLM)に適用したところ、Direct promptingよりも大幅に性能が向上。これは、THINK-AND-EXECUTEがSLMにも適用可能であり、効率的であることを示唆。
LMが生成したタスクレベルの疑似コードは、自然言語で記述された計画よりもLMの推論能力を向上させることが確認。これは、疑似コードがタスクのロジックを表現するのに適していることを示唆。
アブレーション実験の結果、疑似コードのコメントやセマンティクスが重要であること、中間的な実行ステップを出力することが推論に重要であることを確認。
Chain-of-Code、Plan-and-Solveなどの他の手法とも比較され、THINK-AND-EXECUTEが最も高い精度を達成。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?