"Байесовский поворот" в логике нужно понимать не так, что все вычисления условных вероятностей делаются прямо по формуле Байеса. И не так, что вывод в "нечёткой логике" Заде просто заменяется выводом по формуле Байеса. Байесовские вероятности оценивают надёжность карты для какой-то территории: они дают оценку нашего знания и незнания о мире, а не реального положение дел в мире. "Исходные причинно-следственные связи обычно направлены от фактов к наблюдениям ... А вот основные шаги в мышлении напротив делаются от наблюдений к фактам. ... Рациональный вывод в левой части, физическая причинность в правой; уравнение между разумом с одной стороны и реальностью с другой. Помните, как научный метод обернулся частным случаем Теоремы Байеса? Если Вы желаете выразиться поэтически, Вы можете сказать, что Теорема Байеса соединяет мышление с физической вселенной" -- это из
http://schegl2g.bget.ru/bayes/YudkowskyBayes.html Знание о мире вдруг становится не "истиным" или "ложным", а как и любая модель -- "полезным" или "бесполезным". Всё из бинарной оппозиции объективной лжи и правды становится непрерывным спектром субъективных оценок, учитывающим другие не менее субъективные оценки, которые основываются на совсем уж третьих оценках -- и весь этот лабиринт (граф --
http://blog.forty.to/2013/08/24/graphical-models-theory/) оценок условных вероятностей, запредельно сложно вычислять. Мы попадаем не в мир логического вывода, а в мир непрерывной математики с дико сложными вычислениями.
Для дико сложных вычислений сегодня используют стохастические методы, то есть получают не точный ответ сложным вычислением, а вероятностный приближённый простым -- а именно, гадают на кофейной гуще, выливая её на имеющуюся карту какой-то территории много-много раз так, чтобы понять закономерности её разлития. Это я про метод Монте-Карло, но есть и другие методы. По факту, речь идёт о "мысленных экспериментах с картой". А ещё стохастические алгоритмы хорошо распараллеливаются: можно последовательно миллион раз разливать кофейную гущу и учитывать результат разлития, а можно просто вылить одновременно миллион чашек и потом последовательно только учесть результаты разлития.
Стохастические алгоритмы давно вошли в моду, но есть и альтернативная тусовка любителей вероятностных алгоритмов, она изобретает специальные вероятностные языки программирования --
http://probabilistic-programming.org/. Там всё только начинается, но вероятней всего (мы ж ни в чём не уверены!) они будут развиваться не как stand-alone языки, а как embedded DSL в обычных языках программирования. Вот пример такого вероятностного DSL в Julia --
https://github.com/jmxpearson/VinDsl.jl. Вот только что выложен в свободный доступ вероятностный язык от Uber -- Pyro, embedded DSL в Python (хорошо сочетающийся поэтому с PyTorch):
https://eng.uber.com/pyro/.
Вероятностные языки ещё далеко не мейнстрим, ибо вычислять всё одно получается в них не быстро, вычисления требуют запредельных компьютерных мощностей. Inference Compilation and Universal Probabilistic Programming,
https://arxiv.org/abs/1610.09900 -- там жалуются на медленность работы универсальных вероятностных языков программирования и предлагают аппроксимировать программы на них "относительно быстрыми" глубокими нейронными сетями. Продуктивность подхода доказывают тем, что бьют от 90 до 99% капчей в разных датасетах. То есть байесовцы бегут к коннективистам "за скоростью", а коннективисты за теорией. По Нандо де Фрейтасу архитектура сеток должна вообще подбираться-программироваться, и заниматься этим должна байесовская оптимизация (AutoML у него насквозь байесовский). Но и тут хинт: посколько сетка универсальна, то вся байесовщина реализуется не "над ней", а "в ней" -- одна сетка будет строить другую, ибо будет этому выучена -- Bayesian updating, Bayesian filtering and other forms of computation can be approximated by the type of networks we use these days. A new way of thinking is in the air. То есть программа слияния Bayesian reasoning и deep learning (например, тут
http://blog.shakirm.com/2015/10/bayesian-reasoning-and-deep-learning/ и тут
http://mlg.eng.cam.ac.uk/yarin/blog_5058.html) по мнению Нандо будет реализовываться без особого пиетета ко всему байесовскому, просто в нейронные сетки возьмут всё полезное оттуда -- это я писал ещё в январе 2016,
http://ailev.livejournal.com/1240509.html.
Сейчас осторожно начинают говорить, что мозг человека это просто очень несовершенный и кривой байесовский вычислитель на мокрых нейросетях. Впервые я написал об этом "вероятностном подходе к мышлению" в августе 2015 года -- "делёжка статистической силой, обучение без учителя и вероятностные языки программирования":
https://ailev.livejournal.com/1211950.html. Заканчивался тот пост фразой "Мутно это всё, конечно, но через некоторое время будет важно". Так оно и оказалось.
Можно сильно поднять скорость и качество (то есть доступность и полезность) этих вычислений, если переложить их на вычислительные ускорители. Раньше этого было нельзя сделать, ибо не было самих ускорителей. Теперь во всех roadmap вероятностных языков и пакетов стохастических алгоритмов стоит "адаптировать для использования с GPU".
Это я продолжаю линию вчерашнего поста про "гармонией алгебру поверить" (
https://ailev.livejournal.com/1383892.html), где "гармония" я применил просто для красного словца, чтобы подчеркнуть противопоставление "компьютера" как воплощения дискретной математики (алгебры, в том числе булевой алгебры) и "компьютера" как вероятностного вычислителя.
Уже прошло 17% двадцать первого века. Для меня было большим удивлением узнать, что фундаментальные работы E.T.Jaynes по байесовскому выводу как логике науки (см. "логические основания рационального мышления",
http://ailev.livejournal.com/1311261.html) относительно свежи: выход его книги "Теория вероятности: логика науки" был в 1995 году.
Я считаю, что инженерное, менеджерское и другие предметные/деятельностные мышления меняются существенно каждые двадцать лет: приходит и уходит мода на самые разные инженерные и менеджерские практики, меняются поколения инструментария (каждые пять лет, а сейчас и меньше) для этих практик. То, что используется для работы по самоопределению для деятельностных/стейкхолдерских позиций/ролей -- это системное мышление, а также вычислительное мышление. Вычислительное мышление -- это "как использовать экзокортекс, когда модели оказываются слишком велики, чтобы работать с ними без инструментов". Эти мышления меняются медленно, требуется лет пятьдесят, чтобы в них что-то существенно поменялось. Так, последнее крупное изменение в системном мышлении -- это появление стейкхолдеров в семидесятые годы. В нулевые годы закрепили компоненты-модули-размещения как основные ипостаси системы. Вот сейчас ещё жизненный цикл оказался обеспечивающей системой, и его поэтому начали рассматривать сначала в функциональном его разбиении (на практики), а не конструктивном (на стадии). Всё очень медленно, в разы медленней чем все эти взлёты и падения какого-нибудь "управления воркфлоу/бизнес-процессами" или "agile методология разработки". Логика меняется ещё медленней, чем системное мышление. Но, дьявол побери, меняется! И тогда нужно перетряхивать всё, что на эту логику опирается: все остальные (системное, инженерное, менеджерское и т.д.) мышления, а также компьютерный инструментарий (deep learning и байесовщина -- это сегодня одно неразделимое целое).
Мир мышления поменялся и продолжает меняться прямо сейчас, state-of-the-art практик (теории мышления и поддерживающий их инструментарий -- компьютеры) стал совсем другим. Это нужно немедленно осознать, а затем срочно планировать свою образовательную траекторию, чтобы остаться современным.
Не всё так драматично, конечно. Булеву алгебру как алгебру логики никто не отменял (это ж просто частный случай байесианства), как никто не отменял законы Ньютона со становлением Стандартной Модели. Проблемы в том, что булева логика и законы Ньютона применимы отнюдь не ко всем ситуациям. В самых интересных случаях они врут. И нужно чётко знать, что в этом случае делать:
учить матчасть, в двадцать первом веке она успела измениться, в ней много новенького.
UPDATE: обсуждение в фейсбуке --
https://www.facebook.com/ailevenchuk/posts/10211538017900117