Байесовское программирование
Байесовское программирование (англ. Bayesian programming) — формальная система и методология задания вероятностных моделей и решения задач в условиях, когда необходимая информация доступна не полностью.
Эдвин Томпсон Джейнс предложил рассматривать вероятность не только как альтернативу, но и как расширение логики для рациональных рассуждений при неполной и неопределённой информации. В своей основополагающей книге «Probability Theory: The Logic of Science»[1] он развил эту теорию и предложил мыслительный «робот» — не физический механизм, а машину вывода, автоматизирующую вероятностные рассуждения — своеобразный аналог для теории вероятности, а не для логики. Байесовское программирование[2] реализует формально и практически такую машину вывода.
Байесовское программирование также рассматривается как формальная алгебраическая система для задания графических вероятностных моделей, таких как байесовские сети, динамические байесовские сети, фильтры Кальмана, скрытые марковские модели. На самом деле оно обобщает байесовские сети и обладает выразительной мощностью, эквивалентной фактор-графам.
Формальная система
Байесовская программа служит способом задания семейства вероятностных распределений.
Её основные компоненты перечислены ниже:
- Программа состоит из описания и вопроса.
- Описание задаётся на основе спецификации (), определяемой программистом, и идентификации — алгоритма обучения по параметрам, не заданным спецификацией, с набором данных ().
- Спецификация состоит из определённого набора переменных, декомпозиции и набора форм.
- Формы — либо параметрические, либо вопросы к другим байесовским программам.
- Вопрос определяет вероятностное распределение, которое следует вычислить.
Описание определяет способ эффективного вычисления совместного вероятностного распределения набора переменных для заданного набора экспериментальных данных и спецификации . Это совместное распределение обозначается .
Чтобы зафиксировать априорные знания , необходимо:
- Задать значимые переменные , над которыми строится совместное распределение.
- Разложить совместное распределение на независимые или условные вероятности.
- Указать тип (форму) каждого маргинального или условного распределения, например выбрав его из известных классов.
Пусть множество разбито на подмножеств, переменные которых являются конъюнкциями переменных своих подмножеств. Рекурсивное применение теоремы Байеса:
Используя гипотезу условной независимости, можно ещё упростить выражение, определяя конъюнкцию и полагая:
что даёт
Такое разложение совместного распределения на произведение более простых называется декомпозицией, выведенной по цепному правилу.
Это гарантирует, что каждая переменная появляется в левой части условного выражения хотя бы один раз, что необходимо для математической корректности выводов.
Каждое распределение далее связывается либо с параметрической формой (где — вектор параметров, возможно вычисляемых по и/или ), либо представляет собой вопрос к другой байесовской программе: .
Параметры могут подбираться на основе данных (процесс обучения).
Важно, что байесовская программа может включать вопросы к другим байесовским программам, что позволяет строить иерархические модели по принципу подпрограмм.
Вопрос формализует задачу вычисления вероятностей для переменных, разделённых на три множества: исследуемые, известные и свободные.
Вопрос состоит в вычислении распределения:
где под конкретизацией подразумевается подстановка конъюнкций известных переменных.
Для совместного распределения любой вопрос вычисляется так:
где — нормировочный множитель.
Для вычисления используются декомпозиции:
что обычно существенно сокращает вычисления.
Пример
В задаче фильтрации спама письма делятся на две категории: спам и не-спам. Классификация проводится по анализу набора слов (модель мешка слов). Классический байесовский фильтр обучается по действиям пользователя, подстраиваясь под индивидуальные критерии.
- — двоичная переменная (ложь — не спам, истина — спам).
- — двоичные индикаторы наличия слов из словаря.
Совместное распределение:
считая появление слов условно независимым.
- даётся априорно, например,
- рассчитывается по правилу Лапласа:
- -
где и — число появлений, и — общее число писем соответствующих классов.
Параметры определяются либо пакетно по размеченным письмам, либо инкрементально с поступлением новой классификации.
Вероятность спама для письма с заданными индикаторами:
Соотношение правдоподобия даёт критерий для классификации.
Сводная запись для байесовской программы фильтра спама:
Байесовские фильтры (или рекурсивные байесовские оценки) описывают вероятностные модели временных процессов. К их частным случаям относятся фильтр Кальмана и скрытые марковские модели.
- — состояния во времени.
- — наблюдения на этих моментах времени.
- — модель перехода (динамики).
- — модель наблюдения.
- — начальное состояние.
Выбор конкретных форм определяет построенную модель (Кальмана, СММ и др.).
Часто требуется вычислить . Для — задача фильтрации (оценка текущего состояния по данным наблюдениям).
Рекурсивная формула:
Можно выделить фазу предсказания и фазу обновления по наблюдению.
Фильтры Кальмана — частный случай байесовских фильтров для непрерывных переменных и гауссовских шумов[3].
Модели перехода и наблюдения определяются нормальным распределением с линейной зависимостью среднего:
Задачу вывода можно решить аналитически, что объясняет широкое применение фильтра Кальмана и его расширенных вариантов (например, расширенный фильтр Кальмана при нелинейных моделях).
Скрытая марковская модель (СММ) — дискретный аналог фильтров Кальмана, где все вероятности представлены матрицами переходов и матрицами наблюдений.
Распространённый вопрос: нахождение наиболее вероятной последовательности состояний, решается алгоритмом Витерби. Для обучения параметров применяется алгоритм Баум-Велша.
Применение
За последние десятилетия байесовское программирование применяли для задач робототехники, управления, научного моделирования в биологических науках[4].
Байесовское программирование применяется для автономной навигации[5][6], проектирования роботизированных систем, помощи водителю, управления манипуляторами, мобильных роботов[7], взаимодействия человек-робот, моделирования поведения водителя[8], обучения цифровых аватаров[9] и др.
В биологии и нейронауках байесовское программирование применяют для анализа зрительного потока, моделирования зрительно-вестибулярного взаимодействия[10], раннего усвоения речи[11], моторного управления и рукописного текста[12].
Байесовское программирование находит приложения в задачах распознавания и синтеза речи, обработки изображений и естественного языка, где используются принципы композируемости, причинности и обучения обучению[13].
Байесовское программирование и теории возможностей
Сравнение вероятностных методов (в том числе байесовского программирования) с теориями возможностей (нечётких множеств и логик) является предметом дискуссий. Теории возможностей (см., например, нечёткие множества и нечёткие логики[14]) предлагают альтернативы вероятностному описанию неопределённости. В защиту вероятностного подхода приводится теорема Кокса, согласно которой только вероятностная мера удовлетворяет определённым аксиомам рационального вывода.
Байесовское программирование и вероятностное программирование
Задача вероятностного программирования — совмещение классических языков (логических, функциональных, объектно-ориентированных) с вероятностным моделированием и байесовскими сетями для работы с неопределённостью[15]. Для этого расширяются логические, функциональные и объектные языки (например, ProbLog, BLOG, FIGARO и др.).
Цель байесовского программирования — не расширить языки, а перестроить само программирование на основе вероятностной логики, следуя идеям Джейнса о вероятности как продолжении логики[1]. Сравнение семантики и выразительной мощности байесовского и вероятностного программирования остаётся открытым вопросом.
Современные направления
В современных исследованиях вариационного байесовского вывода ключевым направлением стал переход от анализа пространства весов к работе в пространстве функций. Такой подход считается более естественным для оценки неопределенности, так как конечной целью является получение распределений по функциям. Однако внедрение этого метода сопряжено с рядом теоретических и практических сложностей, требующих решения.
Параллельно ведётся работа над повышением качества схем приближённого вывода. Несмотря на то, что основной приоритет отдается аппроксимации прогностического апостериорного распределения, данные методы также позволяют эффективно оценивать маргинальное правдоподобие, что важно для выбора и сравнения моделей.
Актуальным вектором развития байесовского глубокого обучения (Bayesian Deep Learning, BDL) является адаптация классических концепций к архитектурам больших языковых моделей (LLMs). В этом быстрорастущем сегменте особое внимание уделяется разработке методов обнаружения и минимизации галлюцинаций. Применение байесовского подхода в данном контексте позволяет более надежно верифицировать ответы моделей и снижать риски генерации недостоверной информации[16].
Примечания
Литература
- Kamel Mekhnacha. Bayesian Programming : [англ.]. — Chapman and Hall/CRC, 2013. — ISBN 978-1-4398-8032-6.
Ссылки
- Официальный сайт bayesian-programming.org, с публикациями и описанием системы. Архивировано 23 ноября 2013 года.