консультант, профессор ВШЭ,...programming system is a tool that can be used...

44
Вероятностное программирование. Новые инструменты анализа данных В.В. Крылов консультант, профессор ВШЭ, Семинар LATNA HSE NN март, 2017 1

Upload: others

Post on 20-May-2020

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Вероятностное программирование. Новые инструменты анализа данных

В.В. Крылов

консультант, профессор ВШЭ,

Семинар LATNA HSE NN март, 2017 1

Page 2: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Цель презентации

• Познакомить с проблематикой и текущим состоянием

• Дать иллюстративные примеры программного кода для одного из языков вероятностного программирования

• Познакомить с доступными методическими материалами

• Обсудить целесообразность и формы обучения

Семинар LATNA HSE NN март, 2017 2

Page 3: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Основные современные инструменты аналитики основаны на машинном обучении

Индуктивная когнитивная основа ML

• От частного к общему: обобщение известных фактов

• Нейронные сети = построение обобщающей модели на основе имеющихся обучающих данных –прецедентов

• TensorFlow, Torch, Keras

Дедуктивная когнитивная основа ML

• От общего к частному: вывод на основе фактов

• Дедуктивные логические рассуждения и выводы

• Вероятностные рассуждения и вероятностные выводы на основе известных фактов

• Probabilistic Programming Languages (PPL)

Семинар LATNA HSE NN март, 2017 3

Page 4: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Семинар LATNA HSE NN март, 2017 4

Математические основы инструментов индуктивного подхода

Page 5: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

• Нейронная сеть – универсальный аппроксиматор -https://en.wikipedia.org/wiki/Universal_approximation_theorem

Семинар LATNA HSE NN март, 2017 5

x2

x1

0.4

0.6

0.3

0.7

0.3

-0.3

0.3

-0.3

b=-0/5

In the mathematical theory of artificial neural networks, the universal approximation theorem states[1989] that a feed-forward network with a single hidden layer containing a finite number of neurons (i.e., a multilayer perceptron), can approximate continuous functions on compact subsets of Rn, under mild assumptions on the activation function. The theorem thus states that simple neural networks can represent a wide variety of interesting functions when given appropriate parameters; however, it does not touch upon the algorithmic learnability of those parameters.

[2015]

Page 6: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Основные проблемы применения

Обучение = Настройка коэффициентов сети

• Несмотря на глубокий механизм backprop и SGD остается проблема размерности для достижение приемлемой точности

• Время обучения большое, несмотря на применение специальных вычислительных платформ GPU

• Объем данных для обучения требуется значительным, что нередко недостижимо на практике

Семинар LATNA HSE NN март, 2017 6

Page 7: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Структуризация нейронной сети

Семинар LATNA HSE NN март, 2017 7

Page 8: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Многосетевая архитектура

Семинар LATNA HSE NN март, 2017 8

Page 9: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Семинар LATNA HSE NN март, 2017 9

http://cs.stanford.edu/people/karpathy/gan/

https://arxiv.org/pdf/1406.2661.pdf

Page 10: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Математические основы инструментов дедуктивного подхода

Семинар LATNA HSE NN март, 2017 10

Page 11: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Две главных составных части

Вероятностные модели

• Байесовские сети

• Марковские сети

• Скрытые марковские модели

• Марковские поля

• Предиктивные вычисления

Вероятностные выводы

• Цепное правило

• Правило полной вероятности

• Правило Байеса для условной вероятности причины по наблюдаемым следствиям

• Факторные алгоритмы вывода

• Выборочные алгоритмы вывода

Семинар LATNA HSE NN март, 2017 11

Page 12: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Основные проблемы применения

• Высокий уровень входа в задачу погружения решаемой практической проблемы в известные вероятностные модели

• Недостаточная выразительность известных вероятностных моделей, для которых доказаны решения

• Сложность программирования алгоритмов вероятностного вывода для конкретных задач

• Высокая трудоемкость верификации и валидациипрограммной имплементации разработанного алгоритма

Семинар LATNA HSE NN март, 2017 12

Page 13: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Семинар LATNA HSE NN март, 2017 13

“В рамках школы внимательный слушатель узнает:Зачем нужны байесовские методы. Почему вокруг нас практически нет случайностей?Основные библиотеки и архитектуры глубинного обучения. Как создать нейросеть за 10 минут?Модели с латентными переменными. Как научить компьютер тому, что неизвестно даже на этапе обучения?Масштабирование сложных вероятностных методов. Зачем превращать задачу вероятностного вывода в задачу оптимизации?Зачем нейронным сетям внимание. Как сгенерировать текст по картинке?Связь обучения с подкреплением и байесовских методов. Как обучать стохастические графы вычислений?Автоматический выбор dropout rate. Переобучаются ли нейронные сети?Стохастическая оптмизация. Как оптимизировать функцию быстрее чем вычислить ее в одной точке?Во что можно научиться преобразовывать случайный шум. Как заставить нейросеть рисовать?Нашей основной задачей будет показать, что внедрение байесовских моделей в глубинные нейронные сети позволяет существенно расширить область применимости и качество работы последних. Причем, несмотря на внешне разныепостановки, методы обучения и вероятностного вывода в нейробайесовских сетях одни и те же. Хотите узнать больше, что это за методы?”

Page 14: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Вероятностное программирование (probabilistic programming) – результативный и многообещающий подход

• Высокая выразительность при использовании полных по Тьюрингу языков программирования для базирования PPL (probabilistic programming languages)

• Снижение уровня входа за счет использования базовых распространенных языков программирования (Scala, Python)

• Использование встроенных в PPL разработанных и тестированных Inference Engines, реализующих эффективные алгоритмы вероятностного вывода

• Возможность включать код написанных на PPL программ в код любых разрабатываемых приложений

Семинар LATNA HSE NN март, 2017 14

Page 15: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Языки и системы вероятностного программирования (wiki-2017)• Alchemy is a software package providing a series of algorithms for statistical relational learning and

probabilistic logic inference, based on the Markov logic representation.

• Anglican is a portable Turing-complete research probabilistic programming language that includes particle MCMC inference.

• BLOG, or Bayesian logic, is a probabilistic programming language with elements of first-order logic, as well as an MCMC-based inference algorithm. BLOG makes it relatively easy to represent uncertainty about the number of underlying objects explaining observed data.

• BUGS is a language for specifying finite graphical models and accompanying software for performing B(ayesian) I(nference) U(sing) G(ibbs) S(ampling), although modern implementations (such as WinBUGS, JAGS, and OpenBUGS) are based on Metropolis-Hastings. BiiPS is an implementation based on interacting particle systems methods like Sequential Monte Carlo.

• Church is a universal probabilistic programming language, extending Scheme with probabilistic semantics, and is well suited for describing infinite-dimensional stochastic processes and other recursively-defined generative processes (Goodman, Mansinghka, Roy, Bonawitz and Tenenbaum, 2008). The active implementation of Church is webchurch. Older implementations include MIT-Church, Cosh, Bher, and JSChurch. See also Venture below.

• Dimple is a software tool that performs inference and learning on probabilistic graphical models via belief propagation algorithms or sampling based algorithms.

• Edward is a python library for probabilistic modeling that builds on top of TensorFlow to support distributed training and hardware such as GPUs.

• FACTORIE is a Scala library for creating relational factor graphs, estimating parameters and performing inference.

• Figaro is a Scala library for constructing probabilistic models that also provides a number of built-in reasoning algorithms that can be applied automatically to any constructed models.

• HANSEI is a domain-specific language embedded in OCaml, which allows one to express discrete-distribution models with potentially infinite support, perform exact inference as well as importance sampling-based inference, and model inference over inference.

• Hakaru is a simply-typed probabilistic programming language which offers composable and pluggable inference engines as well as computer-algebra guided program optimization.

• Hierarchical Bayesian Compiler (HBC) is a language for expressing and compiler for implementing hierarchical Bayesian models, with a focus on large-dimension discrete models and support for a number of non-parametric process priors.

• LibBi is a library for Bayesian inference, based largely on the sequential Monte Carlo framework.

• Markov the Beast is a software package for statistical relational learning and structured prediction based on Markov logic.

• PRISM is a general programming language intended for symbolic-statistical modeling, and the PRISM programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization.

• Infer.NET is a software library developed by Microsoft for expressing graphical models and implementing Bayesian inference using a variety of algorithms.

• PRAiSE is a system performing probabilistic inference without grounding random variables or sampling, but instead performing it exactly and directly over an expressive higher-level language involving difference arithmetic over integers, linear real arithmetic, equality over categorical types, with relational random variables and algebraic data types coming next.

• Probabilistic-C is a C-language probabilistic programming system that, using standard compilation tools, automatically produces a compiled parallel inference executable from C-language generative model code.

• ProbLog is a probabilistic extension of Prolog based on Sato's distribution semantics. While ProbLog1 focuses on calculating the success probability of a query, ProbLog2 can calculate both conditional probabilities and MPE states.

• Probabilistic Soft Logic is a machine learning framework for developing probabilistic models. Models are defined using a straightforward logical syntax and solved via convex optimization.

• PyMC is a python module that implements a suite of MCMC algorithms as python classes, and is extremely flexible and applicable to a large suite of problems. PyMC includes methods for summarizing output, plotting, goodness-of-fit and convergence diagnostics.

• PyMLNs is a toolbox and software library for learning and inference in Markov logic networks.

• R2 is a probabilistic programming system that employs powerful techniques from programming language design, program analysis and verification for scalable and efficient inference.

• Stan exposes a language for defining probability density functions for probabilistic models. Stan includes a compiler, which produces C++ code that performs Bayesian inference via a method similar to Hamiltonian Monte Carlo sampling.

• Tuffy is a highly scalable inference engine for Markov logic networks using a database backend.

• Venture is an interactive, Turing-complete, higher-order probabilistic programming platform that aims to be sufficiently expressive, extensible and efficient for general-purpose use. Its virtual machine supports multiple scalable, reprogrammable inference strategies, plus two front-end languages: VenChurch and VentureScript.

• WebPPL A PPL based on and implemented in Javascript. Include MH, SMC, variational, and other experimental inference engines.

Семинар LATNA HSE NN март, 2017 15

Page 16: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Индустриальные start-up драйверы

• This Startup Has Developed A New Artificial Intelligence That Can (Sometimes) Beat Google

(Forbes, Feb14,2017)

• Navy Tactical Cloud contract won by Charles River Analytics

(Military Embedded Systems, March14, 2017)

“CAMBRIDGE, Massachusetts. Officials at the Office of Naval Research (ONR) selected Charles River Analytics Inc. for a contract to develop Navalytics, a framework for probabilistic, multi-source naval analytics and analytic services, to enable rapid development and deployment of rich, mission-critical analytics.”

Семинар LATNA HSE NN март, 2017 16

“The company claims its AI system is 100 times more efficientwhen benchmarked against Google's deep learning framework, TensorFlow.”

Ben VigodaFounder & CEO/CTO

Page 17: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Семинар LATNA HSE NN март, 2017 17

https://habrahabr.ru/post/244625/

Юра ПеровYuraPerovПользователь1 декабря 2014 в 11:08Вероятностное программированиеПрограммирование*Я, автор, Юра Перов, занимаюсь вероятностным программированием в течение уже двух лет в рамках своейосновной учебно-научной деятельности. Продуктивное знакомство с вероятностным программированием уменя сложилось, когда будучи студентом Института математики и фундаментальной информатики Сибирского

федерального университета, я проходил стажировку в Лаборатории компьютерных наук и искусственного интеллекта в Массачусетском технологическом институте под руководством профессора Джошуа Тененбаумаи доктора Викаша Мансингхи, а затем продолжилось на Факультете технических наук Оксфордского университета, где на данный момент я являюсь студентом-магистром под руководством профессора Френка Вуда.

https://habrahabr.ru/company/yandex/blog/263991/2 августа 2015 в 19:20Вероятностное программированиеЛекция была прочитана Борисом Янгелем на факультете компьютерных наук, открытом в Высшей школе экономики при поддержке Яндекса.

Page 18: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Основные определения

• Байесовская аксиоматика вероятности: для дискретных событий - мера уверенности в истинности события (не частотный подход)

• Внутри модели могут встречаться «ненормированные вероятности»

• Разработка вероятностной модели есть написание программы связи всех учитываемых элементов на функциональном или объектном языке программирования, используя вероятностные и детерминированные связи

• Вероятностные рассуждения (probabilistic reasoning) могут выполняться как на основе точных, так и приближенных алгоритмов, в частности методом сэмплирования.

Семинар LATNA HSE NN март, 2017 18

Вероятностная модель выражает общие знания о ситуации

Алгоритм вывода использует модель для нахождения ответовна запросы при известных фактах

Ответы на запросы имеют вид вероятностей различных исходов

Факты содержат конкретную информацию о ситуации

ответ

факты

запросы

Page 19: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Варианты вероятностных рассуждений

• Предсказание будущего

Семинар LATNA HSE NN март, 2017 19

• Вывод причин свершившегося факта

Page 20: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Варианты вероятностных рассуждений• Использование прошлого для

предсказания будущего• Обучение на основе прошлого

Семинар LATNA HSE NN март, 2017 20

Page 21: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Введение в вероятностное программирование

Семинар LATNA HSE NN март, 2017 21

Page 22: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Основы программирования на Figaro

Набор структур данных в языке -элементы• Element[T] is class of probabilistic models over

type T

• Atomic elements

пример: Constant[T], Flip, Uniform, Geometric

• Compound elements строятся из других

пример: If(Flip(0.8), Constant(0.5), Uniform(0,1))

Простейшая программаimport com.cra.figaro.language._

import com.cra.figaro.algorithm.factored.VariableElimination

val sunnyToday=Flip(0.2)

println(VariableElimination.probability(sunnyToday, true))

//усложним модель

import com.cra.figaro.library.compound.If

val greetingToday=If(sunnyToday,Select(0.6->”Здравствуйте подводники!”,04->”Всем привет!”),Select(0.2->” Здравствуйте подводники!”,0.8->”Ну привет!”))

greetingToday.observe(“Здравствуйте подводники!”)

println(VariableElimination.probability(sunnyToday, true))

Семинар LATNA HSE NN март, 2017 22

Localhost:8888Localhost:8888

Page 23: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Генерирование цепочек элементов• Chain[T,U] функция двух аргументов, первый

из которых родительский элемент типа Т, а второй – элемент типа U

Пример:

Chain(Uniform(0,1),(d:Double)=>Normal(d,0.5))

Apply[T, function] – применяет функцию function к элементу Т

Пример:

Def function(i: Int): String=if (i>10) “good”;else if (i>5) “normal”;else “bad”

val monthQ=Apply(sunnyDays, function)

1. Генерируется значение родительского элемента с равномерным распределением (0,1), например 0.6

2. Применяется функция к этому значению, чтобы получить элемент с нормальным распределением Normal(0.6,0.5)

3. Генерируется значение случайной величины с нормальным распределением с средним 0.6, дисперсией 0.5, например 0.62

1. Сначала определяется функция function

2. Получаем значение новой переменной monthQ как значение function(sunnyDays)

Семинар LATNA HSE NN март, 2017 23

Эта Chain представляет нормальное распределение, у которого среднееимеет равномерное распределение между 0 и 1, а

дисперсия равна 0.5

Page 24: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Определение вероятностной модели

• Общие знания выражаются в распределении вероятности возможных миров.

1. Что является возможным до ознакомления с фактами

2. Что является вероятным: каждому возможному миру ставится в соответствие априорная вероятность

1. Переменные

2. ЗависимостиНезависимость

Условная независимость

3. Функциональные формы Базовые формы

Условные распределения

4. Числовые параметры

5. Порождающие процессы

Семинар LATNA HSE NN март, 2017 24

Это способ кодирования общих знаний о неопределенной ситуации. Имплементируется в часть кода вероятностной программы, определяющую связи переменных, а также задает их априорные распределения

Формальное представление распределения вероятности возможных миров.

Page 25: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Байесовские сети Множество переменных, каждая со своей областью

значений

Ориентированный ациклический граф, вершины которого ассоциированы с этими переменными

Условное распределение вероятности каждой переменной при условии ее родителей

Семинар LATNA HSE NN март, 2017 25

P(G,S,R)=P(G|S,R)P(S|R)P(R)

Найти вероятность дождя, если

известен есть факт: G=t[true] - трава мокрая

𝑃 𝑅 = 𝑡 𝐺 = 𝑡 =𝑃(𝐺 = 𝑡, 𝑅 = 𝑡)

𝑃(𝐺 = 𝑡)= 𝑆∈{𝑡,𝑓}𝑃(𝐺 = 𝑡, 𝑆, 𝑅 = 𝑡)

𝑆,𝑅∈{𝑡,𝑓}𝑃(𝐺 = 𝑡, 𝑆, 𝑅)

𝑃 𝐺 = 𝑡, 𝑆 = 𝑡, 𝑅 = 𝑡= 𝑃 𝐺 = 𝑡 𝑆 = 𝑡, 𝑅 = 𝑡 𝑃 𝑆 = 𝑡 𝑅 = 𝑡 𝑃 𝑅 = 𝑡= 0.99 ∗ 0.01 ∗ 0.2 = 0.00198

𝑃 𝑅 = 𝑡 𝐺 = 𝑡 =0.00198𝑡𝑡𝑡 + 0.1584𝑡𝑓𝑡

0.00198𝑡𝑡𝑡 + 0.1584𝑡𝑓𝑡 + 0.0𝑡𝑓𝑓= 0.3577

localhost:8888

Page 26: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Задача оценивания асимметрии монеты

• Коэффициент асимметрии - Bias

• Число выпавших орлов -NumberOfHears

• Результат 101-го броска монеты -Toss101

• Val bias=Beta(2,5)

• Val numberOfHeads=

Семинар LATNA HSE NN март, 2017 26

localhost 8888

bias

numberOfHeads toss101

наблюдаемый факт предсказать значение

вывести апостериорное распределение

Page 27: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Марковские сети (марковские случайные поля)

• неориентированный граф или фактор-граф G = (V, E), где каждая вершина является случайной переменной Х и каждое ребро представляет собой зависимость между случайными величинами u и v.

• набор потенциальных функций (potential function) или факторов , одна для каждой клики. Функция ставит каждому возможному состоянию элементов клики в соответствие некоторое неотрицательное вещественнозначное число.

• Вершины, не являющиеся смежными, должны соответствовать условно независимым случайным величинам. Группа смежных вершин образует клику, набор состояний вершин является аргументом соответствующей потенциальной функции.

• Совместное распределение набора случайных величин в марковской сети (марковском случайном поле) вычисляется по формуле:

• где – потенциальная функция, описывающая состояние случайных величин в k-ой клике; Z – коэффициент нормализации вычисляется по формуле:

• вычисление коэффициента нормализации представляет собой сложную аналитическую задачу. В Figaro эта задача решается в алгоритме вывода.

Семинар LATNA HSE NN март, 2017 27

В отличие от байесовских сетей, где вероятность возможного мира можно вычислить перемножив релевантные условные распределениявероятности, в марковской сети вероятность одного мира невозможно вычислить без учета всех возможных миров.

Page 28: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Скрытые марковские модели. Динамические байесовские сети

Скрытые марковские модели

являются обобщением марковских сетей. В этих моделях существуют наблюдаемые и скрытые переменные:

Скрытые состояния образуют марковскую цепь

Наблюдаемые переменные в любой момент времени зависит только от скрытого состояния в этот момент.

Динамические байесовские сети

Являются обобщением СММ :

1. Множество переменных состояния в каждый момент времени

2. Множество возможных значений каждой переменной

3. Модель переходов, содержащая:

• множество родителей для каждой переменной. Это могут быть другие переменные в тот же момент или любые в предыдущие моменты времени. Ребра не образуют ориентированные циклы. Ребра не пересекают более одного временного шага.

• Для каждой переменной условное распределение вероятностей для каждой комбинации родителей

4. Начальная модель, которая описывает распределение вероятности переменных в начальный момент времени

Семинар LATNA HSE NN март, 2017 28

Page 29: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Факторные алгоритмы вывода

• Алгоритм исключения переменных

• Алгоритм распространения доверия

• Фактор – представление функции, отображающей множество значений переменных в вещественное число.

• На множестве факторов вводятся операции вычисления факторного произведения и факторной суммы

• Распределение вероятности можно представить фактором – таблицей в которой строки соответствуют всем возможным комбинациям переменных

• Байесовское цепное правило соответствует разложению на факторное произведение

• Запросы с фактами сводятся к факторизации с «вычеркиванием». Ответ на запрос представляется в виде суммы произведений факторов.

Семинар LATNA HSE NN март, 2017 29

Page 30: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Алгоритм исключения переменных.

• Идея: исключать по одной из выражения не входящие в запрос переменные, применяя простые алгебраические преобразования. Алгоритм точный

• Сложность алгоритма при заданном порядке исключения экспоненциальнозависит от размера наибольшей клики в графе, индуцированном этим порядком

Поиск наилучшего порядка основан на эвристиках. В Figaro применяется эвристика, опирающаяся на минимальное добавление новых ребер к начальному моральному графу опираясь на использование триангулированныхграфов.

• Имплементация в Figaro

//VariableElimination

val algorithm=VariableElimination(element1,element2)

algorithm.start()

println(algorithm.probability(element1,0))

println( algorithm.probability(element1,(i:Int)=>i>0))

println(algorithm.distribution(element1,toList)

println(algorithm.mean(element2))

println(algorithm.expectation(element2,(d:Double)=>dxd)

Семинар LATNA HSE NN март, 2017 30

Page 31: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Алгоритм распространения доверия

• Приближенный, но дает точный результат на триангулированном моральном графе.

• Относится к алгоритму передачи сообщений. И может быть представлен с физической точки зрения как вычисление свободной энергии Бете сети.

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

• Алгоритм не рассчитан на нелокальные рассуждения и хорошо работает, если эффект дальнодействия мал. В общем случае нет гарантий ни по сходимости, ни по точности аппроксимации

// BeliefPropogationval algorithm=BeliefPropogation(100,element)

algorithm.start

println(algorithm.probability(element,true)

// 1 second waiting

val algorithm=BeliefPropogation(element)

algorithm.start

Thread.sleep(1000)

println(algorithm.probability(element,0)

Thread.sleep(1000)

println(algorithm.probability(element,0)

algorithm.kill()

Семинар LATNA HSE NN март, 2017 31

Page 32: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Выборочные алгоритмыЭто алгоритмы, которые для ответа на запрос генерируют выборку (сэмплирование) возможных состояний переменных в соответствии с заданной программой вероятностной модели . Это альтернатива факторным алгоритмам вероятностного вывода.

Значения переменной Х малое среднее большое

Истинные вероятности 0.23 0.46 0.31

сэмплы ХХ ХХХХХ ХХХ

Оценки вероятностей 0.2 0.5 0.3

Семинар LATNA HSE NN март, 2017 32

Пример

Прямая выборка. Генерируются значения переменных по одному. Получается возможный мир – один сэмпл –пример. Для генерацииЗначения каждой переменной используют ее определение, зависимость от родителей т.о. её значение задаетРаспределение ее вероятности. Порядок генерирования значений переменных определяется топологической сортировкой: сначала родители.В результате выборочного алгоритма мы получаем приближенное распределение в среднем близкое к истинному и ожидается, что расхождение тем меньше, чем больше размер выборки. При достаточно большом размере выборки можно получить оценку сколь угодно близкую к истинному распределению.

Выборка с отклонениями. Учет фактовИспользуется прямая выборка, но примеры, противоречащие фактам – не используются – отклоняются. Это «вычеркивание» миров, несовместимых с фактами.

Page 33: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Выборка по значимости

Используется в случае, когда ограничения на возможные миры задаются не просто набором фактов, а задаются вещественным числом, определяющим их вероятность. Алгоритм не отклоняет миры, а учитывает их значимость при выводе.

• Жесткие условия: задают булеву функцию на значениях элементов. Равносильно умножению на 0 или 1 вероятности соответствующих миров.

• Мягкие ограничения: задают функцию с вещественными значениями на значениях элементов. Равносильно умножению вероятности значения на значение этой функции.

• Основная проблема в генерировании большого размера выборки, которая может превышать необходимый размер прямой выборки во много раз. Типично: выборка в миллион даст такое же качество вывода как 100 при прямой выборке. Задачу с мягкими ограничениями характеризует параметр эффективный размер выборки.

// Importance

val algorithm = Importance(1000,nextToss,bias)

algorithm.start()

println("Вероятность выпадения орла на следующем броске = " + algorithm.probability(nextToss,true))

println("Среднее значение асимметрии = " + algorithm.mean(bias))

algorithm.kill()

Семинар LATNA HSE NN март, 2017 33

Page 34: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Алгоритм Монте-Карло по схеме марковской цепи -МСМС

В этом алгоритме после старта из некоторого состояния используется марковская цепь для последовательных переходов в новое состояние. Известно, что после длительного времени распределение текущего состояния окажется близко к апостериорному состоянию из которого и производится выборка. Число шагов до довыборки называется периодом приработки.МСМС никогда не возвращается в начальное состояние и остается в состояниях с высокой вероятностью после периода приработки. Однако на каждом шаге брать примеры нельзя, ввиду их зависимости, и назначают некоторый интервал.

Семинар LATNA HSE NN март, 2017 34

Page 35: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Пример МСМС

//MCMC

val x=Normal(0.75,0.2)

val y=Normal(0.4,0.2)

x.setCondition((d: Double)=>d>0&&d<1)

y.setCondition((d: Double)=>d>0&&d<1)

val pair=^^(x,y)

println(MetropolisHasings.probability(pair,(xy: (Double,Double))=>xy._1>0.5&&xy._2>0.5))

Семинар LATNA HSE NN март, 2017 35

1

1Возможные миры

Области высокой

вероятности

Page 36: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Алгоритм Метрополиса-Гастингса

• Использует марковскую цепь в которой двухшаговаямодель перехода

Step1: зная текущее состояние – предложить новое, которое выбирается в соответствии с вспомогательным условным распределением W(.|.). Это главное.

Step2: с заданной вероятностью перехода принять новое состояние или оставить старое

W(.|.) в Figaro определяется с помощью схемы предложения. Есть схема по умолчанию и API. По умолчанию сначала случайно выбирается любой элемент, порождающий случайное значение, выбирается новое значение этого элемента, обновляются значения всех элементов, зависящих от выбранного.

MetropolisHastings(StepsNumber,ProposalScheme,default,x,y)

Семинар LATNA HSE NN март, 2017 36

Page 37: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Particle filtering Metropolis-Hastings

• На первом шаге берутся все примеры из предыдущего состояния и в соответствии с функцией перехода создаем новое распределение текущего состояния системы, но без учета фактов о текущем состоянии.

• На втором шаге применяются условия в виде фактов. Назначаются веса примеров в соответствии с вероятностью факта для этого примера

• На следующем шаге производится перевыборка – создание множества невзвешенных примеров, которое аппроксимирует то же распределение вероятностей, что и взвешенные примеры. Это избавляет от маловероятных состояний на каждой итерации

Семинар LATNA HSE NN март, 2017 37

Частица=примерФильтрация = учет фактов

Page 38: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Figaro code

// Speed comparation of MCMC

val x = Flip(0.8)

val y = Flip(0.6)

val z = If(x === y, Flip(0.9), Flip(0.1))

z.observe(false)

val veAnswer = VariableElimination.probability(y, true)

for { i <- 10000 to 100000 by 10000 } {

var totalSquaredError = 0.0

for { j <- 1 to 100 } {

Universe.createNew()

val x = Flip(0.8)

val y = Flip(0.6)

val z = If(x === y, Flip(0.9), Flip(0.1))

z.observe(false)

val mh = MetropolisHastings(i, ProposalScheme.default, y)

mh.start()

val mhAnswer = mh.probability(y, true)

val diff = veAnswer - mhAnswer

totalSquaredError += diff*diff

}

val rmse = math.sqrt(totalSquaredError / 100)

println(i + " samples: RMSE = " + rmse)

}

Семинар LATNA HSE NN март, 2017 38

Page 39: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Вычисление наиболее вероятного объяснения(Most Probable Explanation) • Запрос НВО (МРЕ) требует вывод о

наиболее вероятном состоянии переменных модели

• Имеется три алгоритма вычисления НВОo Факторный MPEVariableEliminationo Факторный MPEBeliefPropogationo Выборочный MetropolisHastingsAnnealer

// MPEVariableElimination

val alg = MPEVariableElimination()

alg.start()

println("Step 1: After observing no print result")

println("Printer power button on: " +

alg.mostLikelyValue(printerPowerButtonOn))

println("Toner level: " + alg.mostLikelyValue(tonerLevel))

println("Paper flow: " + alg.mostLikelyValue(paperFlow))

println("Software state: " + alg.mostLikelyValue(softwareState))

println("Network state: " + alg.mostLikelyValue(networkState))

Семинар LATNA HSE NN март, 2017 39

Page 40: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Байесовское обучение

Parameters Learning

• Papost (Parameters=p)~Papr(Parameters=p)P(Data=d|Parameters=p)

Data Prediction

• P(Datanew=dnew|Dataold=dold)~ΣpPapr=p)P(Dataold=dold|parameters=p)P(datanew=dnew|parameters=p)

Семинар LATNA HSE NN март, 2017 40

Page 41: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

ЕМ - алгоритм

• Назначение – обучение набора параметров по данным на основе достаточной статистики

Figaro использует онлайновый ЕМ алгоритм с выполнением Е-шага последовательно для каждого примера данных для экономии памяти

Семинар LATNA HSE NN март, 2017 41

гипотеза о начальных значениях

параметров

Е-шаг: вычислить

ожидаемые достаточные статистики с

помощью вывода

М-шаг: присвоить

параметрам МАВ-значения,

вычисленные по формулам

Вернуть окончательные

значения параметров

Параметры сошлись

или выполнено

число итераций

нет

да

Page 42: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Система вероятностного программирования Edward

• Основана на Python и фреймворке Tensor Flow

• Расширяет функциональность Tensor Flow

• Использует базовые структуры– многомерный тензор и ациклический граф , что позволяет удобно интегрировать вероятностные алгоритмы и нейронные сети

Алгоритмы вероятностного вывода

• Вариативный (подбор распределения)

• Монте-Карло

• Точный вывод (символьная алгебра)

• Гибридные алгоритмы

• Алгоритмы передачи сообщений

Семинар LATNA HSE NN март, 2017 42

http://localhost:8888

Page 43: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

Web PPL основан на JavaScript ( MIT Team, Google supported)

• WebPPL (pronounced ‘web people’), is a small probabilistic programming language built on top of a (purely functional) subset of Javascript. The language is intended to be simple to implement, fairly pleasant to write models in, and a good intermediate target for other languages (such as Church).

var binomial = function() {

var a = sample(Bernoulli({ p: 0.5 }))

var b = sample(Bernoulli({ p: 0.5 }))

var c = sample(Bernoulli({ p: 0.5 }))

return a + b + c

}

var binomialDist = Infer({ model: binomial })

viz(binomialDist)

Семинар LATNA HSE NN март, 2017 43

Page 44: консультант, профессор ВШЭ,...programming system is a tool that can be used to learn the parameters of a PRISM program from data, e.g., by expectation-maximization

В заключениеПо мере того, как традиционное программирование, основанное на детерминированных алгоритмах, будет

все больше превращаться в конструирование требований для автоматизированного кодера, интеллект разработчиков будет смещаться к освоению более сложных задач, для многих из которых эффективным решением будет использование вероятностных моделей и алгоритмов. Практическая их имплементация связана с освоением адекватных инструментов – языков вероятностного программирования. И если для исследований оказываются удобными PPL строгой формализации, такие как Anglican, то для индустриального программирования следует опираться на Edward, основанный на Python/TensorFlow, Figaro (Scala) или WebPPL(JavaScript/NodeJS).

Семинар LATNA HSE NN март, 2017 44