mirror of
https://github.com/dair-ai/Prompt-Engineering-Guide
synced 2024-11-02 15:40:13 +00:00
44 lines
6.5 KiB
Plaintext
44 lines
6.5 KiB
Plaintext
# Tree of Thoughts (ToT)
|
||
|
||
import { Callout, FileTree } from 'nextra-theme-docs'
|
||
import {Screenshot} from 'components/screenshot'
|
||
import TOT from '../../img/TOT.png'
|
||
import TOT2 from '../../img/TOT2.png'
|
||
import TOT3 from '../../img/TOT3.png'
|
||
|
||
Для сложных задач, которые требуют исследования или стратегического планирования, традиционные или простые методы создания промптов оказываются недостаточными. [Yao et el. (2023)](https://arxiv.org/abs/2305.10601) and [Long (2023)](https://arxiv.org/abs/2305.08291) недавно предложили Tree of Thoughts (ToT), фреймворк, который обобщает метод цепочки мыслей и поощряет исследование мыслей, которые служат промежуточными шагами для общего решения проблем с помощью языковых моделей.
|
||
|
||
ToT поддерживает дерево мыслей, где мысли представляют собой последовательности связной речи, которые служат промежуточными шагами к решению проблемы. Этот подход позволяет лингвистической модели самооценить прогресс промежуточных мыслей в решении проблемы через обдуманный процесс рассуждения. Затем способность лингвистической модели генерировать и оценивать мысли объединяется с алгоритмами поиска (например, поиск в ширину и поиск в глубину), чтобы обеспечить систематическое исследование мыслей с опережением и возвратом назад.
|
||
|
||
Фреймворк ToT проиллюстрирован ниже:
|
||
|
||
<Screenshot src={TOT} alt="TOT" />
|
||
Image Source: [Yao et el. (2023)](https://arxiv.org/abs/2305.10601)
|
||
|
||
"При использовании ToT различные задачи требуют определения количества кандидатов и количества мыслей/шагов. Например, как показано в статье, Игра в 24 используется в качестве задачи математического рассуждения, которая требует декомпозиции мыслей на 3 шага, каждый из которых включает промежуточное уравнение. На каждом шаге сохраняются лучшие b=5 кандидатов.
|
||
|
||
Чтобы выполнить BFS в ToT для задачи "Игра 24", ЛМ предлагается оценить каждую мысль кандидата как "уверен/может быть/невозможно" в отношении достижения 24. Как утверждают авторы, "цель состоит в том, чтобы продвигать правильные частичные решения, которые могут быть проверены в течение нескольких пробных попыток, исключить невозможные частичные решения, на основе “слишком большого/маленького” здравого смысла, и сохраненить остальные "возможно"". Значения выбираются 3 раза для каждой мысли. Процесс проиллюстрирован ниже:
|
||
|
||
<Screenshot src={TOT2} alt="TOT2" />
|
||
Image Source: [Yao et el. (2023)](https://arxiv.org/abs/2305.10601)
|
||
|
||
Судя по результатам, представленным на рисунке ниже, ToT значительно превосходит другие методы промтинга:
|
||
|
||
<Screenshot src={TOT3} alt="TOT3" />
|
||
Image Source: [Yao et el. (2023)](https://arxiv.org/abs/2305.10601)
|
||
|
||
Код доступен [here](https://github.com/princeton-nlp/tree-of-thought-llm) and [here](https://github.com/jieyilong/tree-of-thought-puzzle-solver)
|
||
|
||
На высоком уровне основные идеи [Yao et el. (2023)](https://arxiv.org/abs/2305.10601) и [Long (2023)](https://arxiv.org/abs/2305.08291) схожи. Обе они расширяют возможности LLM для решения сложных задач путем поиска поиск по дереву с помощью многоэтапного диалога. Одно из основных различий заключается в том, что в [Yao et el. (2023)](https://arxiv.org/abs/2305.10601) используется DFS/BFS/beam поиск, в то время как стратегия поиска по дереву (т.е. возвращаться назад, на сколько уровней и т.д.), предложенная в [Long (2023)](https://arxiv.org/abs/2305.08291), управляется "контроллером ToT", обученным с помощью обучения с подкреплением. DFS/BFS/Beam search - это общие стратегии поиска решений без адаптации к конкретным задачам. Для сравнения, ToT-контроллер, обученный с помощью RL, может обучаться на новых наборах данных или в процессе самостоятельной игры (AlphaGo vs перебор), и, следовательно, система ToT на основе RL может продолжать развиваться и получать новые знания даже при фиксированной LLM.
|
||
|
||
[Hulbert (2023)](https://github.com/dave1010/tree-of-thought-prompting) предложила метод Tree-of-Thought Prompting, который применяет основную концепцию из ToT-фреймворков в качестве простой техники промтинга, где LLM оценивает промежуточные мысли в единственном промте. Пример:
|
||
|
||
```
|
||
Imagine three different experts are answering this question.
|
||
All experts will write down 1 step of their thinking,
|
||
then share it with the group.
|
||
Then all experts will go on to the next step, etc.
|
||
If any expert realises they're wrong at any point then they leave.
|
||
The question is...
|
||
```
|