Pull to refresh

Comments 25

Спасибо за интересную статью.

Хотелось-бы понять ограничения этого языка (последний абзац). Можно ли смелым движением сделать на Чёрче нейронную сеть, переписав весовые коэффициенты связей в вероятностный вид? И не покажет-ли такая ИНС новое качество, которого всё никак не удаётся добиться от обычных ИНС?
Пожалуйста!
Как в статье сказано, работа с непрерывными вероятностными переменными — не самая сильная сторона Чёрча. То есть сделать-то ИНС можно, но общие механизмы вывода будут работать весьма неэффективно. Новое качество само не появится, но достичь его очень просто. В Тьюринг-полных вероятностных языках легко можно задать генеративную модель, не просто параметризованную связями сети, но порождающую нейронные сети с разной структурой. При этом, скорее всего, не будет эффекта переобучения. Но, опять же, все уткнется в проблему эффективного вывода.
Вероятностные языки типа Infer.NET для частного вида ИНС могут подойти больше, так как вывод в них (для графических моделей) гораздо эффективнее прямого сэмплирования. Однако там не получится реализовать произвольные ИНС (опять же, как упоминалось в статье, машины Больцмана там не реализовать, но над реализацией автоэнкодеров мы сейчас немного работаем) и не получится автоматически формировать их архитектуру.
Но эта область активно развивается. Я видел работы от Microsoft Research, посвященные Тьюринг-полным вероятностным языкам. Да и в новую версию Infer.NET уже добавлен Fun. Также видел ряд работ, где проводилась автоматическая генерация эффективных алгоритмов вывода для Чёрча для моделей частного вида (и есть даже доступные реализации типа cosh, но их возможности пока ограничены). Мы сами сделали экспериментальный язык, где процедуры сэмплирования типа mh-query в Чёрче заменены генетическим программированием, что для ряда задач катострафически поднимает производительность (и, кстати, надо попробовать нашу реализацию на нейронных сетях).
В общем, с точки зрения пользователя вероятностные языки уже могут найти применение, но пока не глобальное. Однако в перспективе их роль будет продолжать расти.
Спасибо за ответ. Про ИНС я спросил в качестве широко известного примера, поскольку сам интересуюсь вычислительной онтологией — совмещаю онтологические знания (верифицированные, с вероятностью близкой к единице) со знаниями, накопленными статистическим анализом больших корпусов текстов (неверифицированные, следовательно — вероятностные по своей природе).

Эта задача в реализации похожа на ИНС именно огромным количеством взвешенных связей. Разумеется, просчёт такой сети задача вычислительно трудная, однако, если бы был шанс получить новое качество (за счёт замены одного действительного числа — вероятности, на распределение), было бы интересно попробовать. Возможно, совмещение нескольких распределений даст всплески в неожиданных местах (биения).

Можно ли ожидать появления таких вот биений?
Один мой коллега как раз занимается проблемой совмещения онтологий. Когда он недавно познакомился с вероятностным программированием, у него возникла идея применить его к этой проблеме. К сожалению, пока идея не реализована, и не факт, что он этим займется. Но приложение, тем не менее, интересное. Если у Вас вдруг будут какие-то продвижения в этом направлении, пожалуйста, сообщите.
Для совмещения онтологий, видимо, нужно строить для них общую генеративную модель, отдельные онтологии для которой будут ее реализациями. Вопрос в том, насколько произвольную структуру этой модели задавать. Чем произвольнее, тем интереснее результаты могут быть получены, но тем больше нужно будет данных, и тем сложнее будет задача вывода… В общем, это вопрос для исследования.

На больших базах специализированные (но более общие, чем стандартные) методы могут работать. Вот, вроде, релевантный пример
probcomp.csail.mit.edu/bayesdb/
Мне кажется, объём/скорость не позволит. Говорят, MCMC весьма медленный (или неточный — сэмплирование же), ну а кортежи для каждой возможной комбинации переменных иметь — нафиг-нафиг.
Если уж даже у классических (невероятностных) ontology inference engines рвёт крышу от миллиона концептов (со ссылкой на www.lektorium.tv/course/22781 ), то тут на тысяче систему нафиг переклинит.
Я скорее верю во что-то типа подхода ProBase: если совместить много баз знаний, и оставить только данные, подтверждённые разными источниками, то крайне неплохой «всеобщий пониматель» получится.
Но брать движок от вероятностных моделей — на мой взгляд, тупиковый путь.
Подобным образом, Хинтоновские RBM, конечно, намного круче линейных, но для них тоже нужен sampling… Поэтому картинки сейчас распознают обычными Deep Network с обычным Хинтоновским BackPropagation, а не более совершенными методами…
Хотя, надежда на возвращение к generative methods у ведущих исследователей остаётся.
На MCMC свет клином не сошелся. Его ограничения вполне понятны. Но вероятностное программирование как подход применяют и в автоматическом анализе видео (конечно, при этом создают весьма специализированные механизмы вывода). Есть надежда, что такие механизмы вывода можно не хардкодить, а синтезировать средствами метавычислений. Да и то, что 10 лет назад казалось непрактичным из-за требований к вычислительным ресурсам, сейчас вполне используется. Те же сети глубокого обучения (которые также в своей нынешней форме лет через 5 отживут свое и заменятся более общими генеративными моделями). Ну, а конкретно нас интересует проблематика общего ИИ, что заставляет работать на перспективу.
Статья состоит из набора общих фраз и совершенно неинформативных примеров. В двух словах можно, в чём суть концепции?
А какие примеры были бы информативнее, а фразы конкретнее?
Суть концепции в том, чтобы трактовать программы со случайными выборами как распределения вероятностей и реализовать данную вероятностную семантику языков на уровне интерпретаторов/компиляторов.
Чем-то напоминает fuzzy sets и fuzzy logic. Перечитаю статью после работы (голова занята рабочими моментами) — будет яснее.
Да, это немного похоже на нечеткую логику. Но нечеткая логика гораздо ограниченнее (во многих аспектах).
«Нечёткая логика», друг мой, ну НИЧЕМ не отличается от теории вероятности и является не более чем распиаренной обёрткой классической статистики! Доказательство элементарно: возьмите «функция принадлежности», на основе которой строится вся т.н. «нечёткая логика» и обратите внимание, что она НИЧЕМ не отличается от обыкновеннейшего распределения вероятности. Точка.
Утверждение, что нечеткая логика ничем не отличается от теории вероятностей, формально неверно. В нечеткой логике есть несколько вариантов правил вычисления функций принадлежности от составных высказываний (например, дизъюнкций и конъюнкций), но во всех этих правилах функции принадлежности факторизуются, то есть для вычисления функции принадлежности составного высказывания нужны только значения функций принадлежности его частей. В теории вероятностей совместные вероятности событий в общем случае не факторизуются. Вывод очевиден: из функций принадлежности не могут быть в общем случае получены распределения вероятностей. Однако обратное возможно: для каждого типа нечеткой логики можно найти условия, при которых правила нечеткого вывода оказываются частным случаем расчета вероятностей. Самый простой случай — это статистическая независимость случайных величин (но есть и другие варианты, например, когда одна величина полностью зависит от другой). Так что, в лучшем случае, нечеткую логику можно рассматривать как совокупность частных случаев теории вероятностей, так что говорить, что «нечеткая логика ничем не отличается от теории вероятностей» — это все равно, что говорить «мужчина ничем не отличается от человека», или «физика ничем не отличается от науки» или «искусственная нейронная сеть ничем не отличается от алгоритма».
Стоит отметить, что, на самом деле, любители нечеткой логики отстаивают утверждение, что и такое сведение не вполне справедливо. На уровне математического формализма им спорить сложно, так что они спорят на уровне интерпретаций: по их мнению, смысл случайности и смысл нечеткости разный (например, приписывать статистический смысл лингвистическим переменным действительно может быть не очень комфортно). С точки зрения математики, конечно, это нерелевантный аспект. Однако в смысле практики использования отличия есть и существенные. Опять же — аналогия между ИНС и алгоритмами вообще. ИНС — это распиаренный класс алгоритмов. Да. Но это не «обыкновенные» (произвольные) алгоритмы, а конкретный класс, для которого есть своя терминология, свой инструментарий.
Когда я говорил, что нечеткая логика немного похожа на вероятностное программирование, я имел в виду не ту банальность, что и то, и другое как-то связано с вероятностями, а то, что способы использования у них могут быть похожи, но вероятностное программирование имеет гораздо более широкие возможности, чем нечеткая логика.
" но во всех этих правилах функции принадлежности факторизуются"

Ну т.е., проще говоря, речь идёт о независимых величинах. Но, в практических задачах статистики, случаи, когда совместная плотность вероятности не распадается в произведение маргинальных плотностей, рассматриваются тоже весьма редко (просто очень сложно с многомеркой работать). На память — разве что распределение СЧ и СВ эрмитовых матриц, но и они асимптотически рассыпаются в произведения.

Но в остальном с вами не поспоришь. Взгляд на «нечёткую логику» как частный случай теории вероятностей весьма интересен. Пошёл осмысливать :)
Да, я упоминал случай независимых величин. Но существует как минимум 3 «стандартных» варианта нечеткой логики. Каждый получается в рамках своих предположений. Если бы совместные вероятности всегда и полностью выражались через маргинальные вероятности отдельных случайных переменных, то Байесовские сети не были бы столь популярными. Но, да, иногда лучше как можно сильнее все упростить, чтобы хоть как-то работало, чем иметь дело с неподъемной задачей. Поэтому нечеткая логика получила такую популярность — она давала практические рецепты. Однако, если бы этого было бы достаточно во всех случаях, то не было бы движения сначала к графическим моделям, а от них теперь — к вероятностному программированию.
Опять набор слов. Ну так и трактуйте себе распредления вероятностей как РАСПРЕДЕЛЕНИЯ ВЕРОЯТНОСТЕЙ, считайте от них характеристики (матожидания, дисперсии, моменты и т.д.), принимайте оптимальные решения. Это — понятно и это работает. А что здесь-то предлагается?
Что такое «вероятностная семантика»? Это как? Оператор типа case rnd? Ну и какой от него смысл? Или как один умник хотел провести эксперимент: в какой-нибудь стандартной проге типа блокнота менять один байт и запускать её, если программа «упала» — откат назад, если нет, менять случайным образом другой байт. Ну он в результате получил прогу, которая ни в каком родстве не лежала с иходной и жила своей жизнью. Это типа того же?
Честно — не знаю, как это описать понятнее. В статье, вроде, все сказано, и я просто буду повторять то, что там есть, разве что другими словами. Могу попробовать привести другие примеры, но хотелось бы знать, какие будут показательными. Может, имеет смысл Вам попробовать почитать другие источники — ту же упоминавшуюся книжку Probabilistic models of cognition…
По заголовку показалось что речь будет о программировании где вероятность корректного выполнения команды не равна 1. А подумалось так потому что несколько лет назад читал статью про разработку нового типа CPU в котором использовались текущих технологий со значительно повышенной частотой и пониженным напряжением, но сделано это за счет того что вероятность ошибок становилась значительной. Причем вероятность достаточно высокая чтобы было бесполезно пытаться отлавливать и исправлять ошибки. В той статье был вывод вида «В рамках текущей парадигмы программирования смысла в таких процессорах нет, но возможно будут полезны для класса задач где требуется больше скорости и есть устойчивость к ошибкам, например искусственный интеллект».
Занятно. Однако для вероятностных программ такие процессоры, видимо, все же не подойдут, так как там основная часть вычислений детерминированная, а случайность черпается из контролируемого источника. Но, может, какие-то родственные приложения придумать можно…
Идея звучит заманчиво, но стоит погуглить сам язык, и наступает разочарование. Куцая вики и полторы реализации — вот и всё, что есть. Печальненько…
1. С куцей вики идет ссылка на целую книжку по языку (его использованию в когнитивном моделировании) Probabilistic models of cognition, о которой упоминалось в тексте, а также на 4 реализации (хотя можно их можно «редуцировать» до полутора при желании). Так что не надо грустить.
2. Статья была не про сам Чёрч, а про вероятностные языки как подход на примере Чёрча. И, да, прикладное использование пока ограничено, о чем тоже говорилось…
Слона-то я и не заметил… Спасибо за ссылку на книгу!
А си-образные случайные языки есть?
Sign up to leave a comment.

Articles