Author(s): Ави Пфеффер
Publisher: ДМК Пресс
Year: 2017
Language: Russian
Pages: 464
ОГЛАВЛЕНИЕ ......Page 7
Предисловие ......Page 14
Вступление ......Page 16
Благодарности ......Page 18
Об этой книге ......Page 20
Структура книги ......Page 21
Об авторе ......Page 22
Об иллюстрации на обложке ......Page 23
ЧАСТЬ I Введение в вероятностное программирование и систему Figaro ......Page 24
1.1. Что такое вероятностное программирование? ......Page 25
1.1.1. Как мы высказываем субъективное суждение? ......Page 26
1.1.2. Системы вероятностных рассуждений помогают принимать решения ......Page 27
1.1.3. Система вероятностных рассуждений может рассуждать тремя способами ......Page 29
1.1.4. Система вероятностного программирования: система вероятностных рассуждений, выраженная на языке программирования ......Page 33
1.2.1. Улучшенные вероятностные рассуждения ......Page 38
1.2.2. Улучшенные языки имитационного моделирования ......Page 39
1.3. Введение в Figaro, язык вероятностного программирования ......Page 41
1.3.1. Figaro и Java: построение простой системы вероятностного программирования ......Page 44
1.5. Упражнения ......Page 49
2.1. Введение в Figaro ......Page 51
2.2. Создание модели и выполнение алгоритма вывода на примере Hello World ......Page 53
2.2.1. Построение первой модели ......Page 54
2.2.2. Выполнение алгоритма вывода и получение ответа на запрос ......Page 55
2.2.3. Построение моделей и задание наблюдений ......Page 56
2.2.4. Анатомия построения модели ......Page 57
2.2.5. Повторяющиеся элементы: когда они совпадают, а когда различаются? ......Page 59
2.3. Базовые строительные блоки: атомарные элементы ......Page 60
2.3.1. Дискретные атомарные элементы ......Page 61
2.3.2. Непрерывные атомарные элементы ......Page 62
2.4.1. Элемент If ......Page 65
2.4.2. Элемент Dist ......Page 66
2.4.3. Составные версии атомарных элементов ......Page 67
2.5.1. Элемент Apply ......Page 68
2.5.2. Элемент Chain ......Page 71
2.6.1. Наблюдения ......Page 74
2.6.2. Условия ......Page 75
2.6.3. Ограничения ......Page 76
2.8. Упражнения ......Page 79
3.1. Общая картина ......Page 81
3.2. Выполнение кода ......Page 84
3.3.1. Архитектура аналитического компонента ......Page 87
3.3.2. Архитектура компонента обучения ......Page 91
3.4. Проектирование модели почтового сообщения ......Page 93
3.4.1. Выбор элементов ......Page 94
3.4.2. Определение зависимостей ......Page 96
3.4.3. Определение функциональных форм ......Page 98
3.4.4. Использование числовых параметров ......Page 101
3.4.5. Работа с дополнительными знаниями ......Page 103
3.5. Разработка аналитического компонента ......Page 105
3.6. Разработка компонента обучения ......Page 109
3.7. Резюме ......Page 113
3.8. Упражнения ......Page 114
ЧАСТЬ II Написание вероятностных программ ......Page 116
Глава 4. Вероятностные модели и вероятностные программы ......Page 117
4.1.1. Выражение общих знаний в виде распределения вероятности возможных миров ......Page 118
4.1.2. Подробно о распределении вероятности ......Page 121
4.2. Использование вероятностной модели для ответа на запросы ......Page 122
4.2.1. Применение условий для получения апостериорного распределения вероятности ......Page 123
4.2.2. Получение ответов на запросы ......Page 125
4.2.3. Применение вероятностного вывода ......Page 127
4.3.1. Переменные ......Page 128
4.3.2. Зависимости ......Page 130
4.3.3. Функциональные формы ......Page 135
4.3.4. Числовые параметры ......Page 139
4.4. Порождающие процессы ......Page 141
4.5. Модели с непрерывными переменными ......Page 145
4.5.1. Бета-биномиальная модель ......Page 146
4.5.2. Представление непрерывных переменных ......Page 147
4.7. Упражнения ......Page 151
Глава 5. Моделирование зависимостей с помощью байесовских и марковских сетей ......Page 153
5.1.1. Направленные зависимости ......Page 154
5.1.2. Ненаправленные зависимости ......Page 160
5.1.3. Прямые и косвенные зависимости ......Page 163
5.2.1. Определение байесовской сети ......Page 164
5.2.3. Рассуждения с применением байесовской сети ......Page 167
5.3.1. Проектирование модели диагностики компьютерной системы ......Page 170
5.3.2. Рассуждения с помощью модели диагностики компьютерной системы ......Page 175
5.4. Применение вероятностного программирования для обобщения байесовских сетей: предсказание успешности продукта ......Page 180
5.4.1. Проектирование модели для предсказания успешности продукта.... ......Page 181
5.4.2. Рассуждения с помощью модели для предсказания успешности продукта ......Page 186
5.5.1. Определение марковской сети ......Page 188
5.5.2. Представление марковских сетей и рассуждения с их помощью ......Page 192
5.7. Упражнения ......Page 196
Глава 6. Использование коллекций Scala и Figaro для построения моделей ......Page 199
6.1. Работа с коллекциями Scala ......Page 200
6.1.1. Моделирование зависимости многих переменных от одной ......Page 201
6.1.2. Создание иерархических моделей ......Page 204
6.1.3. Моделирование одновременной зависимости от двух переменных.... ......Page 206
6.2.1. Почему коллекции Figaro полезны? ......Page 209
6.2.2. Иерархическая модель и коллекции Figaro ......Page 211
6.2.3. Совместное использование коллекций Scala и Figaro ......Page 213
6.3.1. Открытая вселенная с неизвестным числом объектов ......Page 216
6.3.2. Массивы переменной длины ......Page 217
6.3.3. Операции над массивами переменной длины ......Page 218
6.3.4. Пример: прогнозирование продаж неизвестного числа новых продуктов ......Page 219
6.4.1. Характеристика Process ......Page 221
6.4.2. Пример: моделирование состояния здоровья во времени ......Page 223
6.4.3. Использование процесса ......Page 225
6.5. Резюме ......Page 226
6.6. Упражнения ......Page 227
Глава 7. Объектно-ориентированное вероятностное моделирование ......Page 229
7.1. Объектно-ориентированные вероятностные модели ......Page 230
7.1.1. Элементы объектно-ориентированного моделирования ......Page 231
7.1.2. Еще раз о модели принтера ......Page 233
7.1.3. Рассуждения о нескольких принтерах ......Page 237
7.2.1. Описание общей модели на уровне классов ......Page 241
7.2.2. Описание ситуации ......Page 244
7.2.3. Представление модели социальной сети на Figaro ......Page 247
7.3.1. Коллекции элементов и ссылки ......Page 250
7.3.2. Модель социальной сети с реляционной неопределенностью ......Page 253
7.3.3. Модель принтера с неопределенностью типа ......Page 255
7.5. Упражнения ......Page 258
ГЛАВА 8. Моделирование динамических систем ......Page 260
8.1. Динамические вероятностные модели ......Page 261
8.2.1. Марковские цепи ......Page 262
8.2.2. Скрытые марковские модели ......Page 266
8.2.3. Динамические байесовские сети ......Page 269
8.2.4. Модели с нестационарной структурой ......Page 273
8.3.1. Универсумы в Figaro ......Page 278
8.3.2. Использование универсумов для моделирования постоянно работающих систем ......Page 280
8.3.3. Следящее приложение ......Page 282
8.5. Упражнения ......Page 285
ЧАСТЬ III Вывод ......Page 288
Глава 9. Три правила вероятностного вывода ......Page 289
9.1. Цепное правило: построение совместных распределений по условным распределениям вероятности ......Page 291
9.2. Правило полной вероятности: получение ответов на простые запросы из совместного распределения ......Page 295
9.3.1. Понимание, причина, следствие и вывод ......Page 298
9.3.2. Правило Байеса на практике ......Page 300
9.4. Байесовское моделирование ......Page 302
9.4.1. Оценивание асимметрии монеты ......Page 304
9.4.2. Предсказание результата следующего подбрасывания ......Page 308
9.6. Упражнения ......Page 313
Глава 10. Факторные алгоритмы вывода ......Page 315
10.1.1. Что такое фактор? ......Page 316
10.1.2. Факторизация распределения вероятности с помощью цепного правила ......Page 319
10.1.3. Задание запросов с факторами с помощью правила полной вероятности ......Page 321
10.2. Алгоритм исключения переменных ......Page 325
10.2.1. Графическая интерпретация ИП ......Page 326
10.2.2. Исключение переменных как алгебраическая операция ......Page 330
10.3.1. Особенности ИП в Figaro ......Page 333
10.3.2. Проектирование модели, эффективно поддерживающей ИП ......Page 335
10.3.3. Приложения алгоритма ИП ......Page 339
10.4.1. Основные принципы РД ......Page 343
10.4.2. Свойства циклического РД ......Page 344
10.5. Использование алгоритма РД ......Page 346
10.5.1. Особенности РД в Figaro ......Page 347
10.5.2. Проектирование модели, эффективно поддерживающей РД ......Page 348
10.5.3. Приложения алгоритма РД ......Page 350
10.7. Упражнения ......Page 351
Глава 11. Выборочные алгоритмы ......Page 354
11.1. Принцип работы выборочных алгоритмов ......Page 355
11.1.1. Прямая выборка ......Page 356
11.1.2. Выборка с отклонением ......Page 361
11.2. Выборка по значимости ......Page 364
11.2.1. Как работает выборка по значимости ......Page 365
11.2.2. Выборка по значимости в Figaro ......Page 368
11.2.3. Полезность выборки по значимости ......Page 369
11.2.4. Приложения алгоритма выборки по значимости ......Page 371
11.3. Алгоритм Монте-Карло по схеме марковской цепи ......Page 374
11.3.1. Как работает МСМС ......Page 375
11.3.2. Алгоритм МСМС в Figaro: алгоритм Метрополиса-Гастингса ......Page 379
11.4. Настройка алгоритмами ......Page 383
11.4.1. Специальные схемы предложения ......Page 385
11.4.2. Избежание жестких условий ......Page 389
11.4.3. Приложения алгоритма МГ ......Page 390
11.5. Резюме ......Page 392
11.6. Упражнения ......Page 393
Глава 12. Решение других задач вывода ......Page 395
12.1. Вычисление совместных распределений ......Page 396
12.2. Вычисление наиболее вероятного объяснения ......Page 398
12.2.1. Вычисление и запрос НВО в Figaro ......Page 401
12.2.2. Использование алгоритмов для ответа на запросы НВО ......Page 403
12.2.3. Приложения алгоритмов НВО ......Page 410
12.3. Вычисление вероятности фактов ......Page 411
12.3.1. Наблюдение фактов для вычисления вероятности фактов ......Page 412
12.3.2. Выполнение алгоритмов вычисления вероятности фактов ......Page 415
12.5. Упражнения ......Page 416
Глава 13. Динамические рассуждения и обучение параметров ......Page 418
13.1. Мониторинг состояния динамической системы ......Page 419
13.1.1. Механизм мониторинга ......Page 420
13.1.2. Алгоритм фильтрации частиц ......Page 422
13.1.3. Применения фильтрации ......Page 425
13.2. Обучение параметров модели ......Page 426
13.2.1. Байесовское обучение ......Page 427
13.2.2. Обучение методом максимального правдоподобия и МАВ ......Page 431
13.3. Дальше вместе с Figaro ......Page 440
13.5. Упражнения ......Page 441
А.1. Использование sbt ......Page 444
А.2. Установка и запуск Figaro без sbt ......Page 445
А.З. Сборка из исходного кода ......Page 446
Приложение В. Краткий обзор систем вероятностного программирования ......Page 448
Предметный указатель ......Page 451