LLMで難易度の高いゴールを達成するために:5つのデザインパターンで差をつける

2024/09/10に公開

概要

回答を得るのに複雑なステップが必要な場合、定石となるパターンが存在します。主に5つ
ピックアップしましたので紹介します。

オブジェクト指向プログラミングで言うGoFのデザインパターンに近いものとして考えても
らえると有益さがわかると思います。

LLMデザインパターン

チェーン・オブ・ソート (Chain of Thought)

LLMを使用して問題を段階的に解決する手法です。LLMは中間的な思考過程を示すことがで
きるため、問題解決の途中経過を可視化できます。例えば、数学の問題を解く際に、LLMが
途中の計算ステップを示してくれることで、解答の過程を理解しやすくなります。

ステップバイステップ推論 (Step-by-Step Reasoning)

ステップバイステップ推論は、問題を小さなステップに分解し、各ステップごとにLLMの出力を得る手法です。
例えば、複雑な論理パズルを解く際に、問題を小さな部分に分割し、 LLMが各ステップの解答を提供することで、全体の解答を導き出すことができます。

反復的精緻化 (Iterative Refinement)

初期の回答を基に、徐々に改善や詳細化を重ねていく手法です。
LLMが初期の回答を生成した後、その回答を元にさらなる情報を追加し、より正確な回答を得ることができます。例えば、文章の要約を生成する際に、LLMが初期の要約を提供し、その後、追加の文脈情報を与えることで、より適切な要約を作成できます。

タスク分解 (Task Decomposition)

複雑なタスクを小さなサブタスクに分解し、それぞれを個別に処理する手法です。LLMが各サブタスクの解答を提供することで、全体のタスクを効率的に解決できます。例えば、プログラミングの問題を解く際に、大きな問題を小さな関数に分割し、LLMが各関数の実装をサポートすることで、全体のプログラムを完成させることができます。

自己一貫性 (Self-Consistency)

複数の推論パスを生成し、最も一貫性のある結果を選択する手法です。LLMが複数の解答候補を生成し、それらの一貫性を評価することで、最も信頼性の高い解答を選び出すことがで
きます。例えば、意思決定のサポートシステムにおいて、LLMが異なる選択肢に対する意見や理由を提供し、一貫性の高い結論を導くことができます。

思ったこと

  • デザインパターンは、その領域で問題解決を何回も繰り返していると見えてくる共通の事象をモデル化した物です。LLMのデザインパターンが明確にまとめられていませんが経験上この5つは良く使います。
  • デザインパターンを知っておくことで生成LLMで自分の意図した結果が得られなかったときにどのように問題を解決するかといった知見を得られます。
  • 今まではLLMを使った問題解決が不可能だと思われていた事象をデザインパターンによって問題解決の手法を考えられるようになった。

Contributions

株式会社マインディア テックブログ

Discussion