Graph-of-Thoughts

Материал из Systems analysis wiki
Перейти к навигации Перейти к поиску

Graph-of-Thoughts (GoT) — это концепция в области работы с большими языковыми моделями (LLM, Large Language Models), предполагающая представление процесса рассуждения модели в виде произвольного графа взаимосвязанных «мыслей» (промежуточных шагов решения)[1]. Данный подход был предложен группой исследователей под руководством Мацея Бесты (Maciej Besta) из ETH Zurich и опубликован в 2024 году на конференции AAAI[2]. Цель Graph-of-Thoughts – расширить возможности prompt engineering (разработки запросов) за пределы существующих схем, таких как Chain-of-Thought (цепочка мыслей) и Tree-of-Thoughts (дерево мыслей)[1]. В отличие от них, подход GoT позволяет любому сгенерированному моделью фрагменту рассуждений (мысле) ссылаться на любой другой, образуя сеть идей, а не строго линейную или древовидную структуру[3]. Это, как утверждают авторы, более точно отражает сложный, нелинейный характер человеческого мышления и потенциально приближает механизм рассуждений LLM к работе человеческого мозга (с его рекуррентными нейронными связями)[1][1].

Graph-of-Thoughts является методом формирования запросов (prompting framework), то есть не требует дополнительного обучения или донастройки самой модели — вместо этого он организует диалог с LLM особым образом, направляя модель через серию шагов-«мыслей», связанных по схеме графа[1]. Такая структура позволяет комбинировать и переиспользовать разные ветви рассуждений: например, модель может параллельно рассматривать несколько гипотез или частей задачи, а затем объединять наиболее удачные из них в единое решение[1]. В энциклопедическом стиле, Graph-of-Thoughts можно определить как обобщение предыдущих стратегий структурированного рассуждения с LLM, предоставляющее максимальную гибкость в организации мыслительных процессов внутри одного комплексного запроса[1].

Предпосылки: Chain-of-Thought и Tree-of-Thoughts

Метод Graph-of-Thoughts вырос из более ранних подходов, использующих явную структуру рассуждений при работе с языковыми моделями. Базовым подходом является Chain-of-Thought (CoT) – «цепочка мыслей». В методе CoT пользователю предлагается включать в запрос к модели не только условие задачи, но и промежуточные шаги рассуждения, ведущие к ответу[1]. Исследования показали, что такая подача материала значительно улучшает способность LLM решать сложные задачи, например математические или логические головоломки, причём без изменений параметров самой модели[1]. Фактически, CoT побуждает модель пошагово разложить сложную проблему на более простые этапы, имитируя последовательный ход мыслей.

Развитием этой идеи стала техника Self-Consistency: вместо одной цепочки мыслей генерируется несколько независимых цепочек, после чего выбирается наиболее убедительная из них[1]. Это позволяет модели рассмотреть разные подходы к решению и уменьшает риск получить ошибочный ответ из-за следования единственной неверной линии рассуждений. Тем не менее, даже множество цепочек CoT не дают возможности «объединять идеи»: каждая цепочка рассматривается изолированно, и модель лишь выбирает лучшую, не комбинируя их содержимое.

Для преодоления этого ограничения была предложена схема Tree-of-Thoughts (ToT) – «дерево мыслей»[1]. В ToT процесс рассуждения организован как дерево: в каждой точке модель может порождать несколько вариантов развития мысли (ветвления), после чего производится оценка этих промежуточных состояний и отбор наиболее перспективных для дальнейшего углубления[1]. Используя поиск по дереву (например, в ширину — BFS, или в глубину – DFS) и возможность откатываться к узлам и развивать другую ветку, Tree-of-Thoughts даёт языковой модели более мощный механизм решения сложных задач, чем линейный CoT[1]. Появляются новые возможности, такие как откат и пересмотр: если одна ветвь приводит в тупик, можно вернуться к предыдущему узлу и попробовать иной путь[1]. Эта методика доказала свою эффективность в решении логических и поисковых задач, где перебор вариантов и планирование играют большую роль.

Однако дерево мыслей накладывает и жёсткие ограничения: каждая мысль (узел дерева) принадлежит лишь одной ветви, взаимодействие происходит только между родительскими и дочерними узлами, а разные ветви не могут сливаться или обмениваться информацией[3]. Иными словами, перекрёстный обмен идеями (cross-pollination) между разными гипотезами в рамках одного решения затруднён: ветви дерева развиваются независимо и объединяются только в корне, когда выбирается лучшая цепочка рассуждений[3]. В реальном же творческом или аналитическом мышлении человек нередко возвращается к ранее рассмотренной идее и комбинирует её с другой ветвью рассуждений. Такое переплетение мыслей выходит за рамки структуры дерева[1].

Эти наблюдения привели исследователей к мысли о более гибкой структуре – графе, где связи между мыслями не ограничены и могут образовывать сложную сеть. Как отмечается в аналитическом обзоре 2024 года, появление цепочек, деревьев и графов мыслей отражает зарождение нового класса методов, способных значительно усилить возможности LLM за счёт явного структурирования процесса рассуждения[4]. В частности, структурированные подсказки позволили заметно улучшить результаты LLM во многих областях — от решения математических задач и логических головоломок до планирования и даже творческого письма[4]. На этом общем фоне и возникла схема Graph-of-Thoughts как следующий шаг в развитии методов структурированного prompting.

Концепция Graph-of-Thoughts: графовая структура мыслей

Graph-of-Thoughts предлагает представить ход выполнения задач языковой моделью в виде произвольного направленного графа. Формально, граф мыслей в GoT это множество вершин (мыслей) и рёбер (зависимостей между мыслями)[1]. Вершиной графа выступает отдельная мысль модели – под этим термином понимается любая содержательная единица, зависящая от контекста задачи: это может быть отдельное утверждение, шаг решения, фрагмент текста, параграф, блок кода и т.п., сформированный моделью в ответ на запрос[1][1]. Ребро между вершинами означает, что одна мысль использована при порождении другой — т.е. в подсказке явно указано, что модель должна опереться на определённый предыдущий результат, чтобы получить новый[1]. Таким образом, рёбра фиксируют зависимости: от каких ранее полученных данных зависит текущий шаг рассуждения.

Важнейшее отличие GoT от более простых структур — возможность агрегации и слияния мыслей. В графе допускается, что у вершины (новой мысли) может быть несколько предшественников[1]. Это соответствует ситуации, когда две или более отдельные цепочки рассуждений объединяются: модель получает в качестве входа сразу несколько ранее сгенерированных фрагментов и на их основе формирует синтезированный вывод[1]. Например, решая задачу, модель может параллельно рассмотреть две гипотезы, а затем создать новую мысль, которая объединяет положительные стороны обеих гипотез и устраняет их недостатки[1][1]. Такие операции агрегации были невозможны в рамках древовидной схемы (где у каждого узла только один родитель), но естественно реализуются в графовой[1]. Помимо слияния идей, граф позволяет вводить и обратные связи (feedback loops): в принципе, структура GoT не запрещает циклы, то есть модель может вернуть некоторый результат на более раннюю стадию рассуждения для повторной обработки или уточнения[1]. Авторы связывают это с аналогией к рекуррентным связям в нейронных сетях мозга, где выход одной группы нейронов может воздействовать обратно на предыдущие слои, формируя замкнутые контуры размышлений[1].

Практически реализация Graph-of-Thoughts требует особой организации диалога с моделью. Исследователями разработан модульный архитектурный каркас для GoT[1]. В нём выделяются компоненты для: (1) тонкого контроля над отдельными шагами (мыслями) — «контроллер» управляет порядком и логикой генерации мыслей; (2) динамического формирования подсказок – для каждого шага специальный модуль формирует prompt на основе текущего контекста и выбранных вершин графа (предшественников); (3) парсинга и оценки ответов модели — полученные от LLM фрагменты анализируются и оцениваются на качество, полезность либо соответствие критериям задачи[5]. Архитектура GoT тем самым позволяет в интерактивном режиме строить граф рассуждений: после каждого шага принимается решение, какие новые вершины добавить, как связать их с предыдущими, какие ветви продолжить или соединить. Благодаря модульности, такой фреймворк можно расширять новыми типами «трансформаций мыслей» (например, специальными операциями с графом) и адаптировать под различные модели (авторы успешно испытывали GoT с LLM семейств GPT-3.5, GPT-4, LLAMA 2 и др.)[1]. Важное свойство состоит в том, что GoT не требует изменения параметров самой языковой модели — все улучшения достигаются за счёт более разумного построения запросов и обработки ответов[1]. Это означает, что существующие мощные LLM могут быть использованы «как есть», а Graph-of-Thoughts играет роль надстройки, управляющей их работой.

Следует отметить, что термин Graph-of-Thought также появлялся в другой, независимой разработке, отличной от подхода Бесты и коллег. В 2023 году Яо Яо и соавторы предложили методику улучшения reasoning у LLM посредством дополнительного модуля-энкодера графа мыслей, что требовало дообучения модели[6]. Их работа под названием «Beyond Chain-of-Thought, Effective Graph-of-Thought Reasoning in Language Models» описывает двухэтапную архитектуру: сначала генерируется граф взаимосвязанных промежуточных утверждений, затем он преобразуется специальным энкодером и интегрируется в модель через механизм gated fusion[6]. Такой гибридный подход с обучением продемонстрировал некоторое повышение точности на задачах, например, на мультимодальном наборе вопросов ScienceQA точность выросла с 85,2% до 87,6% при использовании модели T5-base[6]. Однако этот подход, хоть и схож по названию, принципиально отличается: он требует изменения модели (fine-tuning) и не является схемой prompt engineering. Авторы оригинального GoT-подхода (AAAI 2024) прямо указывают, что не рассматривают в своей работе ту модель Яо и др., поскольку фокусируются именно на методах без обновления параметров LLM[1]. Таким образом, Graph-of-Thoughts в контексте данного обзора это именно фреймворк на уровне подсказок, а не модификация архитектуры нейросети.

Применение и результаты

Авторы GoT продемонстрировали его преимущества на ряде задач, которые трудно решить с помощью одной прямой подсказки (input-output prompting) или даже с цепочкой мыслей. Характерная особенность таких задач — их можно разложить на несколько частей (подзадач), решить эти части отдельно, а затем синтезировать полный ответ из частичных результатов[1]. В числе рассмотренных примеров: сортировка неупорядоченного списка, подсчёт ключевых слов в тексте (например, для резюмирования документа), выполнение операций над множествами (объединение, пересечение списков и т.д.), а также слияние текстовых документов (объединение информации из нескольких источников)[1]. Во всех этих случаях Graph-of-Thoughts позволяет естественно декомпозировать задачу. Например, для сортировки список разбивается на части, каждая часть сортируется отдельно как независимая ветвь мыслей, после чего результаты объединяются (имитируя алгоритм вроде merge sort); или при анализе текстов модель может параллельно извлекать информацию из разных документов, а затем сводить её воедино.

Экспериментальные результаты подтверждают эффективность GoT-схемы. Согласно отчёту Бесты и коллег, в задаче сортировки граф мыслей позволил существенно повысить качество решения по сравнению с предыдущими подходами[1]. Так, точность сортировки при использовании GoT оказалась на 70% выше, чем при простой цепочке мыслей CoT, и на 62% выше, чем при дереве мыслей ToT[1]. Одновременно метод сокращает затраты вычислительных ресурсов: число обращений к модели (и, соответственно, токенизированный объём запросов) снизилось на 31% по сравнению с Tree-of-Thoughts для той же задачи[1]. Это означает, что графовая организация рассуждений не только улучшила итоговый результат, но и сделала решение более экономичным, избегая избыточных вычислений за счёт грамотного комбинирования промежуточных выводов. Подобные выигрыши были получены и на других тестовых задачах, особенно там, где требуется агрегировать разнородную информацию. Исследователи отмечают, что GoT наиболее эффективен именно для композитных задач, состоящих из нескольких элементов: «Graph-of-Thoughts особенно хорошо подходит для задач, которые естественным образом декомпозируются на более мелкие подзадачи, решаемые отдельно с последующим объединением результатов»[1]. В таких случаях граф мыслей способен охватить все аспекты проблемы и синтезировать решение более полного характера, чем при следовании одной линии рассуждений.

Для более тонкого понимания, почему один способ построения подсказки лучше другого, в работе 2024 года предложена специальная метрика – «объём мысли» (volume of a thought)[1]. Обём определён для каждой отдельной мысли (вершины графа) как число других мыслей, из которых можно по направленным рёбрам достичь данной (проще говоря, скольким промежуточным шагам она обязана своей информацией)[1]. В Chain-of-Thought любая мысль опирается лишь на одного предшественника, поэтому её объём равен 1 (линейная цепочка). В дереве мыслей объём может быть больше, но всё равно ограничен структурой отдельной ветви. В графе же, благодаря агрегированию, отдельная вершина может аккумулировать вклад сразу многих других — её «объём» существенно выше[1]. Показано, что GoT позволяет конечным выводам базироваться на значительно большем объёме предшествующих мыслей, объединяя их содержание. Этот факт отражает более глубокий охват пространства решений и служит количественным объяснением преимуществ графового рассуждения над более простыми схемами.

Сравнение и значение

Graph-of-Thoughts на сегодняшний день представляет наиболее обобщённую форму структурированного prompting-а для LLM. В таблицах сравнения различных схем (CoT, CoT с самосогласованностью, ToT и GoT) подчёркивается, что лишь GoT поддерживает произвольную топологию мыслительного процесса[1]. Он включает в себя возможности всех предыдущих подходов: может работать и как одна цепочка, и как дерево с разветвлениями, и как комбинация множества цепочек, если это подходит для решения задачи[1]. Главное — нет жёстких ограничений на связь между шагами, что теоретически делает пространство возможных стратегий рассуждения максимально широким[1].

Важно понимать, что гибкость GoT приходит ценой большей сложности контроля. Реализация графа мыслей требует внешнего алгоритма-оркестратора, который будет решать, когда и какие мысли генерировать, какие из них отбирать или комбинировать, когда останавливать процесс и выдавать ответ. В простом CoT таких решений принимать не нужно — модель сама генерирует линейное рассуждение до конца. В ToT часть управления ложится на алгоритм поиска по дереву (например, выбор узла для развертывания). В GoT же степень свободы выше, и эффективность метода зависит от качества эвристик, оценивающих промежуточные результаты, и от правильного конструирования подсказок на каждом шаге[1]. Таким образом, Graph-of-Thoughts можно рассматривать не просто как формат запроса, а как структуру рассуждения, накладываемую на процесс взаимодействия с LLM — своего рода динамический план, по которому модель решает задачу, а пользователь (или программа-контроллер) направляет этот процесс.

Появление Graph-of-Thoughts отражает стремление сделать работу больших языковых моделей более интерпретируемой и управляемой. Явно задавая структуру решения, исследователи не только добиваются лучшего качества, но и получают возможность анализировать, как модель пришла к тому или иному выводу. Это сближает подходы в NLP с классическими методами алгоритмического поиска и планирования, но теперь выполнение шагов возложено на нейросетевую модель. Ряд экспертов рассматривает структурированные подсказки (цепочки, деревья, графы мыслей) как перспективное направление, способное преодолеть ограничения «черного ящика» в глубоких моделях и повысить надежность их работы на сложных задачах[4][4].

Методология Graph-of-Thoughts продолжает активно развиваться. Код и примеры для реализации GoT авторы выложили в открытый доступ[1], что позволило сообществу экспериментировать с новым подходом. Появляются и расширения: например, мультимодальные версии графа мыслей, комбинирующие текст с изображениями и другими видами данных[3][3], а также попытки интегрировать идеи GoT непосредственно в архитектуру моделей (как в упомянутой работе Yao et al., 2023). В 2025 году вышел подробный обзор-таксономия методов Chain-of-Thought, Tree-of-Thoughts и Graph-of-Thoughts, систематизирующий накопленные знания и описывающий теоретические основы таких подходов[4][4]. Всё это говорит о большом интересе научного сообщества к структурированному управлению мышлением LLM. Graph-of-Thoughts уже зарекомендовал себя как эффективный инструмент для решения сложных задач и, вероятно, станет основой для дальнейших инноваций в области ИИ-решений, сочетающих мощь больших языковых моделей с прозрачностью и логикой классических алгоритмов.

Ссылки

Литература

  • Besta, M. et al. (2024). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
  • Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
  • Yao, Y. et al. (2023). Beyond Chain-of-Thought: Effective Graph-of-Thought Reasoning in Language Models. arXiv:2305.16582.
  • Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
  • Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
  • Wei, J. et al. (2024). Demystifying Chains, Trees, and Graphs of Thoughts. arXiv:2401.14295.
  • Huang, S. et al. (2023). Language Is Not All You Need: Aligning Perception with Language Models (Kosmos-1). arXiv:2302.14045.
  • Mitra, C. et al. (2024). Compositional Chain-of-Thought Prompting for Large Multimodal Models. In CVPR 2024. PDF.
  • Zheng, G. et al. (2023). DDCoT: Duty-Distinct Chain-of-Thought Prompting for Multimodal Reasoning in Language Models. arXiv:2310.16436.
  • Mu, J. et al. (2023). Learning to Compress Prompts with Gist Tokens. arXiv:2304.08467.

Примечания

  1. 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 1,12 1,13 1,14 1,15 1,16 1,17 1,18 1,19 1,20 1,21 1,22 1,23 1,24 1,25 1,26 1,27 1,28 1,29 1,30 1,31 1,32 1,33 1,34 1,35 1,36 1,37 1,38 1,39 1,40 1,41 1,42 1,43 Besta, Maciej et al. «Graph of Thoughts: Solving Elaborate Problems with Large Language Models». ar5iv.labs.arxiv.org. [1]
  2. Besta, Maciej et al. «Graph of Thoughts: Solving Elaborate Problems with Large Language Models». arXiv. [2]
  3. 3,0 3,1 3,2 3,3 3,4 Grygiel, Jacek. «Multimodal Graph-of-Thoughts: How Text, Images, and Graphs Lead to Better Reasoning». Deepgram. [3]
  4. 4,0 4,1 4,2 4,3 4,4 4,5 Wei, Jason et al. «Demystifying Chains, Trees, and Graphs of Thoughts». arXiv. [4]
  5. Wo, Jacek. «LLMs Graph of Thoughts Framework. Case study». Medium. [5]
  6. 6,0 6,1 6,2 Yao, Yuqing et al. «Beyond Chain-of-Thought, Effective Graph-of-Thought Reasoning in Language Models». arXiv. [6]