O_oscar14 часов назад
Что общего у Таро, Viterbi и LLM: как алгоритм выбирает один смысл из многих
Уровень сложностиСреднийВремя на прочтение10 минОхват и читатели7.2KNatural Language Processing*Алгоритмы*Искусственный интеллектМашинное обучение*ОбзорПредставьте, что человек спрашивает о смене профессии и вытягивает три карты: Повешенный → Маг → Колесница. Из одной и той же последовательности можно собрать несколько правдоподобных историй: о паузе и переосмыслении, о найденных ресурсах или о риске принять резкое действие за настоящее решение. Карты одинаковые, а смысловые маршруты — разные. Как интерпретатор выбирает один из них? И можно ли описать этот выбор так же, как поиск гипотезы в распознавании речи, машинном переводе или языковой модели?
От множества трактовок к лучшему пути
Ниже — учебная модель такого процесса. Она ничего не утверждает о мистических свойствах Таро и не оценивает вероятность будущего события. Её предмет — выбор связной интерпретации из нескольких допустимых.
Карта и контекст не дают готовый текст ответа. Сначала система строит несколько структурированных смысловых кандидатов, затем выбирает связный маршрут и только после этого формулирует объяснение для человека.
Рисунок 1. Смысловой поиск и генерация человеческого текста — разные этапы системы.
Исходная гипотеза: карта как функция отображения
Моя исходная идея состоит в том, что механизм работы карты Таро можно рассматривать как функцию отображения. На вход поступают описанный человеком контекст и нативное, словарное значение карты. Функция помещает их сочетание в диапазон допустимых трактовок.
Здесь — контекст, — нативное значение карты , — пространство интерпретаций, а — множество кандидатов. Затем выбирается вариант, который лучше других согласуется с ситуацией:
Но эта формула сразу выдаёт лучший результат и не показывает, как трактовки влияют друг на друга в раскладе. Следующая карта может сделать более убедительным не только продолжение, но и одно из значений предыдущей карты. Поэтому единицей поиска должен стать не отдельный ответ , а полный смысловой путь.
Общая архитектура
Полезно разделить пять операций: извлечение контекста, построение кандидатов, поиск смыслового пути, переоценку лучшего набора и генерацию понятного человеку объяснения.
Это разделение принципиально. Viterbi и beam search не обязаны писать человеческий текст. Их задача — найти структурированный смысловой маршрут. Отдельный модуль уже превращает этот маршрут в объяснение.
Сначала пример, потом математика
Вернёмся к вопросу о смене профессии. Оставим пять смысловых состояний:
Застой
Переосмысление
Ресурсы
Действие
ПереходИх можно представить как станции. Контекст определяет, на каких станциях человек мог находиться до расклада. Каждая карта открывает несколько дорог к следующим станциям, а вес дороги показывает, насколько естественным считается переход внутри модели.
Начальные веса:
СостояниеВесЗастой0.42Переосмысление0.28Ресурсы0.16Действие0.09Переход0.05Самое вероятное начало — «Застой». Для «Повешенного» переходы из него выглядят так:
Следующее состояниеВесЗастой0.22Переосмысление0.58Ресурсы0.10Действие0.05Переход0.05Жадная стратегия выбирает на каждом шаге самый сильный доступный вариант. Она получает путь:
Застой → Переосмысление → Действие → ПереходЕго вес равен:
Но существует более сильный полный маршрут:
Переосмысление → Ресурсы → Действие → ПереходОн начинается с более слабого локального варианта, но выигрывает за счёт последующих переходов. Его вес примерно на выше. Именно такую ошибку локального выбора должен устранить Viterbi.
Почему матрицы заданы вручную
Это не статистика реальных чтений. Матрицы специально сконструированы как контролируемый контрпример, в котором greedy проигрывает глобальному поиску. Такой пример позволяет проверить код и объяснить алгоритм. Для продуктовой или научной модели веса пришлось бы оценивать на размеченных данных, отдельно проверяя устойчивость словаря состояний и переносимость между контекстами.
Формальная модель
Обозначим наблюдаемый вход:
где — контекст, — вопрос, — карта, а — её позиция. Пусть — смысловое состояние после шага .
Начальное распределение зависит от контекста и вопроса:
Текущая карта задаёт стохастическую матрицу переходов:
Марковское допущение утверждает, что вся необходимая память уже содержится в последнем состоянии:
Тогда условная вероятность пути факторизуется:
а задача поиска имеет вид:
В примере есть путей. Их можно перебрать, но при росте числа карт и состояний полный перебор становится экспоненциальным.
Это условная неоднородная цепь Маркова, а не классическая HMM: карты здесь не являются наблюдениями, порождёнными скрытым состоянием. Однако задача поиска максимального пути имеет ту же динамическую структуру, что и декодирование Viterbi для HMM [1].
Этап 1. Viterbi сохраняет лучшего победителя для каждой станции
Перейдём к логарифмам:
Для невозможного перехода принимается . Обозначим через лучшую оценку префикса, который заканчивается в :
Для восстановления маршрута запоминается предшественник:
Если два пути пришли в одно состояние, а все будущие переходы зависят только от этого состояния, проигравший путь уже не сможет обогнать победителя. Поэтому Viterbi хранит не все истории, а одного победителя для каждого конечного состояния. Он находит точный максимум за операций при [1].
Упрощённый псевдокод:
for card in cards:
for next_state in states:
best[next_state] = max(
previous[current_state]
+ log_transition(card, current_state, next_state)
for current_state in states
)В учебном примере Viterbi и полный перебор находят один путь с весом 0.0923552, а greedy остаётся на 0.076734.
Две разные логики отсечения
Рисунок 2. Viterbi оставляет победителя на каждой «станции», а beam с шириной B=2 удерживает две лучшие частичные истории.Эта схема показывает важное различие. Viterbi не является «beam с большой шириной»: он использует структуру задачи и объединяет эквивалентные префиксы. Beam search просто ограничивает число живых гипотез.
Где Viterbi перестаёт быть достаточным
Для описанной цепи Viterbi уже решает задачу точно. Beam search здесь не нужен. Он появляется после расширения модели.
Сравним два пути:
Застой → Переосмысление → Действие
Ресурсы → Ресурсы → ДействиеОба заканчиваются состоянием «Действие», поэтому локальная цепь считает их эквивалентными для будущего. Но их повествовательный смысл различается. Интерпретация может зависеть от всей истории: от противоречий между картами, повторов, соответствия контексту и разнообразия альтернатив.
Расширенную оценку запишем так:
где оценивает соответствие контексту, — глобальную связность, а штрафует повторы и противоречия.
Если эти компоненты зависят от всей истории или от свободного текста, оптимальная подструктура исчезает. Историю можно включить в расширенное состояние, но число состояний быстро растёт. Теперь нужен приближённый поиск.
Этап 2. Beam search сохраняет несколько историй
Начальный beam содержит лучших стартовых состояний:
Пусть — набор из живых префиксов. На следующем шаге строятся все допустимые продолжения:
Затем остаются кандидатов с наибольшей доступной оценкой префикса:
При это жадный поиск. Если каждая гипотеза имеет не более продолжений, beam оценивает порядка кандидатов. В задачах генерации последовательностей такой декодер приближённо максимизирует условную вероятность при ограниченном бюджете [2].
На нашем контрпримере:
МетодЛучший путьВес путиGreedy / beamЗастой → Переосмысление → Действие → Переход0.076734BeamПереосмысление → Ресурсы → Действие → Переход0.092355ViterbiПереосмысление → Ресурсы → Действие → Переход0.092355Полный переборПереосмысление → Ресурсы → Действие → Переход0.092355Рисунок 3. При B=1 локальный выбор теряет глобальный максимум; начиная с B=2 учебный beam удерживает победивший путь.Совпадение при относится только к этому примеру. Удалённая из beam гипотеза не возвращается, поэтому общей гарантии оптимальности нет. Более того, увеличение ширины может улучшать внутреннюю вероятность и одновременно ухудшать внешнюю метрику качества [3].
Обычный beam также часто возвращает несколько почти одинаковых формулировок. Diverse Beam Search добавляет штраф за сходство между группами гипотез и направлен на получение содержательно разных вариантов [4].
Поиск пути и генерация текста — разные задачи
Пусть поисковый модуль вернул множество структурированных путей:
LLM может сначала переоценить этот небольшой набор:
а затем превратить выбранный путь в текст:
Здесь — оценка кандидата языковой моделью, а — модель вербализации. Один и тот же LLM технически может выполнять обе операции, но архитектурно их полезно разделять: тогда можно проверить, ошибся поиск, reranking или генератор текста.
Работы по информационному поиску показывают, что LLM действительно можно использовать для переупорядочивания конечного списка документов [14]. Перенос этого приёма на смысловые пути остаётся гипотезой, которую необходимо проверять отдельно: высокая языковая убедительность ещё не означает корректную интерпретацию.
Результаты поиска и соседние методы
Итоговая схема сопоставляет Viterbi, beam search, diverse beam, A*, MCTS и LLM reranking по глобальности поиска и вычислительной стоимости.
Рисунок 4. Методы по-разному балансируют глобальность поиска и вычислительную стоимость; LLM reranking оценивает уже найденный конечный список.Рисунок 5. Верхние смысловые пути полного перебора: синим отмечен глобальный максимум, оранжевым — результат жадного поиска.МетодЧто сохраняетсяКогда полезенОграничениеViterbiОдин лучший префикс для каждого состоянияЛокальный score и конечная цепьТребует оптимальной подструктурыBeam searchлучших префиксов глобальноБольшое ветвление, свободный текстМожет рано удалить будущего победителяDiverse Beam SearchНесколько групп с учётом различийНужны разные перспективыРазнообразие зависит от выбранного штрафаA*Очередь путей по стоимостиЕсть информативная эвристика остаткаТочная гарантия требует допустимой эвристики [11]MCTS / UCTСтатистика выборочных продолженийЕсть симулятор или дорогая итоговая наградаПри конечном бюджете результат приближённый [12]LLM rerankingУже найденный конечный списокНужна глобальная языковая оценкаНет гарантии поиска и возможны смещения моделиA* особенно интересен, если можно построить верхнюю оценку будущего score или, после перехода к стоимости , нижнюю оценку оставшихся затрат. MCTS уместен только тогда, когда продолжения можно симулировать, а качество полного пути оценивается чёрным ящиком. Для трёх карт оба метода были бы избыточны.
Более общая математика: фактор-граф и CRF
Цепь Маркова — не единственный способ записать задачу. Если смысл первой и третьей карты взаимодействует напрямую или весь путь проверяется отдельным глобальным правилом, удобнее использовать фактор-граф:
Каждый фактор оценивает только связанное с ним подмножество переменных . Обычная цепь получается, если оставить начальный фактор и попарные факторы соседних состояний. Фактор-граф делает явными более дальние зависимости, но точный вывод на графе с циклами может стать дорогим [9].
Ещё более естественный мост к NLP — linear-chain Conditional Random Field:
CRF сразу моделирует условное распределение пути при известном входе и позволяет включать произвольные признаки контекста, карты и позиции. Если факторы остаются локальными и попарными, MAP-путь всё ещё можно найти рекурсией Viterbi. Разница в том, что локальные переходные вероятности заменяются потенциалами признаков, а распределение по полным путям глобально нормируется через [10].
От пяти ярлыков к семантическим эмбеддингам
Пять состояний удобны для объяснения, но реальный смысл редко укладывается в фиксированный список. Альтернатива — представлять трактовку вектором :
Первый член оценивает близость трактовки к контексту и карте, второй — связность соседних смыслов. Современные sentence-embedding модели позволяют получать такие векторные представления текста [13].
Но непрерывное пространство нельзя просто перебрать рекурсией по пяти состояниям. Практический компромисс — сначала извлечь для каждой карты top- текстовых кандидатов по близости эмбеддингов, затем применить beam search или reranking к конечному набору.
Как превратить иллюстрацию в исследование
Качественное исследование AI-поддержки Таро описывает эту практику как согласование множественных смыслов в ситуации, где случайно выбранная карта не имеет причинной связи с вопросом [5]. Эксперименты с очными и слепыми чтениями, эффект персональной валидации и активная роль клиента показывают, почему контекст и обратную связь нельзя смешивать с вкладом самой карты [6–8].
Для проверки вычислительной модели нужен отдельный протокол:
• До обучения зафиксировать словарь состояний и правила разметки.
• Собрать обезличенные пары «контекст — карты» и несколько независимых интерпретаций для каждой пары.
• Использовать нескольких аннотаторов и измерить их согласованность.
• Учить веса только на training-части, а сравнивать алгоритмы на отложенных примерах.
• Добавить контрольные варианты: ответ без карт, перемешанные значения карт, случайные слова и скрытый от интерпретатора контекст.
• Раздельно оценивать качество смыслового пути, качество итогового текста, разнообразие альтернатив и инструментальную пользу для пользователя.
• Сравнить greedy, Viterbi, beam, diverse beam и LLM reranking при одинаковом вычислительном бюджете.
• Провести анализ чувствительности: возмущать веса и проверять, насколько устойчив лучший путь.Если исследовательский вопрос касается предсказания внешних событий, это уже другой эксперимент: прогноз нужно фиксировать заранее, задавать временной горизонт и сравнивать с моделью, которая видит тот же контекст, но не видит карт.
Вывод: Таро здесь — наглядный интерфейс общей задачи
В этой постановке карта не выдаёт готовый ответ. Она меняет веса в пространстве возможных смыслов. Контекст задаёт начальные предпочтения, алгоритм поиска собирает связный путь, а генератор превращает структуру в текст.
Если оценка раскладывается по локальным переходам конечной цепи, Viterbi даёт точный максимум. Если важны полная история, свободный текст и несколько альтернатив, появляются beam search, diverse decoding, A*, MCTS и LLM reranking. Фактор-графы и CRF позволяют выразить более богатые зависимости, а эмбеддинги снимают ограничение фиксированного словаря состояний.
Та же схема возникает далеко за пределами Таро:
неоднозначный вход
↓
локальные варианты
↓
поиск глобально связной последовательности
↓
человекочитаемое представлениеВ распознавании речи локальными вариантами становятся фонемы или слова, в машинном переводе — токены перевода, в разметке текста — последовательности тегов, а в LLM — продолжения контекста. Таро здесь интересно не как исключение из вычислительной логики, а как необычно наглядный пример того, как система строит один связный смысл из множества допустимых.
Источники
• Lawrence R. Rabiner. A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition. Proceedings of the IEEE, 1989.
• Markus Freitag, Yaser Al-Onaizan. Beam Search Strategies for Neural Machine Translation. ACL, 2017.
• Eldan Cohen, Christopher Beck. Empirical Analysis of Beam Search Performance Degradation in Neural Sequence Models. ICML, 2019.
• Ashwin K. Vijayakumar et al. Diverse Beam Search for Improved Description of Complex Scenes. AAAI, 2018.
• Matthew K. Prock et al. Interpretive Cultures: Resonance, Randomness, and Negotiated Meaning for AI-Assisted Tarot Divination. CHI, 2026.
• Susan J. Blackmore. Divination with Tarot Cards: An Empirical Study. Journal of the Society for Psychical Research, 1983.
• Bertram R. Forer. The Fallacy of Personal Validation: A Classroom Demonstration of Gullibility. Journal of Abnormal and Social Psychology, 1949.
• Christopher A. Roe. Persuasion in the Context of a Psychic Reading. PhD thesis, University of Edinburgh, 1996.
• Frank R. Kschischang, Brendan J. Frey, Hans-Andrea Loeliger. Factor Graphs and the Sum-Product Algorithm. IEEE Transactions on Information Theory, 2001.
• John Lafferty, Andrew McCallum, Fernando C. N. Pereira. Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data. ICML, 2001.
• Peter E. Hart, Nils J. Nilsson, Bertram Raphael. A Formal Basis for the Heuristic Determination of Minimum Cost Paths. IEEE Transactions on Systems Science and Cybernetics, 1968.
• Levente Kocsis, Csaba Szepesvári. Bandit Based Monte-Carlo Planning. ECML, 2006.
• Nils Reimers, Iryna Gurevych. Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. EMNLP-IJCNLP, 2019.
• Weiwei Sun et al. Is ChatGPT Good at Search? Investigating Large Language Models as Re-Ranking Agents. EMNLP, 2023.Дополнительные объяснения на русском:
• Скрытые цепи Маркова, алгоритм Витерби.
• Цепи Маркова и Python — разбираемся в теории и собираем генератор текстов.
• Секреты генерирующего реферирования текстов.Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.Как вы оцените качество статьи?0%Отличная: понятно и полезно0100%Хорошая: полезно, но местами сложно10%Средняя: не хватило практических примеров00%Нужна серьёзная доработка0Проголосовал 1 пользователь. Воздержавшихся нет.Теги:• Viterbi
• beam search
• цепи Маркова
• CRF
• LLM
• NLP
• поиск пути
• ТароХабы:• Natural Language Processing
• Алгоритмы
• Искусственный интеллект
• Машинное обучение
Получайте больше инсайтов о систематизации бизнеса
Подписывайтесь на Telegram-канал Business Operations — ежедневные материалы о бизнес-процессах, операционном управлении и повышении эффективности
💬 Подписаться на канал→ Оригинальная статья