今日、「Tree of Thoughts (ToT)」(1) という非常に興味深い論文を見つけました。 ToTを使えば、今までできなかった課題も解決できるようになります。そこで、このToTのメカニズムを皆さんと共有し、それがどのようにタスクを解決するかを考えていきたいと思います。では始めましょう!
1.Chain of Thought(CoT)
この論文では、以下の表に示すように 4 種類のプロンプトを提供します。左側は「IO プロンプト」と呼ばれるもので、比較的単純です。右側は最も複雑で、「Tree of Thoughts (ToT)」と呼ばれます。
4種類のプロンプトのうち、私が最初に注目するのは、Chain of Thought (CoT) です。なぜなら、それが私たちに探索するための基本的なスペースを与えてくれるからです。論文にはこのように書かれています。「重要なアイデアは、x と y の間に思考の連鎖 z1, · · · , zn を導入することです。各 zi は、問題解決に向けた意味のある中間ステップとして機能する一貫した言語シーケンスです。」CoT によって、LLM の推論能力を向上させ、複雑なタスクを効果的に解決するためのプロンプトを探索できます。これで CoT がどのように機能するかを理解できたので、次にToT に進みましょう。
- Tree of Thoughts(ToT)
ツリー探索を使用して CoT を拡張し、より複雑なタスクに効果的に適用できるようにしたいと思います。この論文にはこう書かれています。「言語モデル推論の新たなフレームワーク、Tree of Thoughts(ToT)を導入します。これは、人気のChain of Thoughtへのアプローチを一般化し、問題解決に向けた中間段階として機能する一貫性のあるテキストの単位(思考)の探索を可能にします。」素晴らしいですね!それでは、ToTがどのように機能するかを考えてみましょう。
ToT を実装するには次の 4 つのステップがあります。順を追って説明していきたいと思います。
- プロセスを思考に分解する
- LLM が有望で多様なサンプルを生成できるように、それぞれの考えは十分小さくなければなりません
- 状態を生成する
- 各状態から潜在的な思考を生成します。この論文によると、これを行うには 2 種類の方法があります。
- 各状態を評価する
- LLM は各状態を評価して、ツリーがどのように成長するかを決定します。
- 最良の状態を探す
- 現在の状態が十分でない場合は、他のブランチを検討する必要があります。これを行うための探索アルゴリズムはいくつか種類があります。
- ToTはMCTSで解決できる
ToT は比較的単純なツリー検索アルゴリズムで解決できますが、モンテカルロツリー探索(MCTS)のようなより高度なアルゴリズムを使用することもできます。 MCTSはAlphaGoが 2016 年 3 月に人間のプロ棋士に勝利したことで世界的に注目を集めました。AlphaGo では、MCTS がニューラル ネットワークと組み合わされているからです。これは「モデル誘導ツリー検索」とも呼ばれています。モデルが誘導してくれるので、考えられる状態全体を探索する必要はもうありません。以下の写真で、デミス・ハサビス、Google DeepMind社のCEO がその仕組みを説明してくれています (2)。
近い将来、MTCS で ToT を探索できるようになったら、より広範囲でより深い状態を探索できるようになり、良い結果が得られるはずです。すごいですね。
ご清聴ありがとうございました! ToTの進捗状況を追って、近いうちに皆さんに改めて共有したいと思います。乞うご期待!
1) “Tree of Thoughts: Deliberate Problem Solving with Large Language Models” Shunyu Yao, Dian Yu, Jeffrey Zhao, Izhak Shafran, Thomas L. Griffiths, Yuan Cao, Karthik Narasimhan, 17 May 2023, https://arxiv.org/abs/2305.10601
2) Using AI to Accelerate Scientific Discovery | Campus Lecture with Demis Hassabis, https://www.youtube.com/watch?v=Ds132TzmLRQ&t=1381s
本記事は著者の意見を述べたものであり、所属する会社を代表しているものではありません。
Copyright © 2023 Toshifumi Kuga All right reserved
Notice: I do not accept any responsibility or liability for loss or damage occasioned to any person or property through using materials, instructions, methods, algorithms or ideas contained herein, or acting or refraining from acting as a result of such use. I expressly disclaim all implied warranties, including merchantability or fitness for any particular purpose. There will be no duty on me to correct any errors or defects in the codes and the software.