Изменения

Перейти к: навигация, поиск

Порождающие модели

2713 байт добавлено, 00:41, 18 февраля 2020
Неявный подход
== Вычисление плотности распределения ==
С математической точки зрения основная цель порождающей модели обычно состоит в максимизации функции '''правдоподобия''': для набора данных <tex>X = \{x_i\}</tex> максимизировать <tex>\displaystyle \prod_i p_{model}(x_i;\theta)</tex> по параметрам модели <tex>\theta</tex>, т.е. найти <math>\theta^* = \underset{\theta}{\operatorname{argmax}} \displaystyle \prod_i p_{model}(x_i;\theta)</math>
===Потеря порядка===
Чтобы избежать арифметического переполнения снизу<ref>[https://ru.wikipedia.org/wiki/Исчезновение_порядка Исчезновение порядка]</ref> зачастую пользуются свойством логарифма произведения <tex>\log ab = \log a+\log b</tex>. Благодаря моннотоности логарифма, его применение к обоим частям выражения не изменит параметры, при которых достигается максимум. При этом, логарифм от числа близкого к нулю будет числом отрицательным, но в абсолютном значении существенно большим чем исходное число, что делает логарифмические значения вероятностей более удобными для анализа. Что в нашем случае с вероятности очень уместно. Поэтому, мы переписываем нашу формулу с использованием логарифма.
и минимизация этого выражения эквивалентна максимизации того, что выше.
===Таксономия порождающих моделей===[[Файл:Tax2.jpg|500px|thumb|right|Таксономия порождающих моделей]]Генеративные модели различаются как раз тем, как именно они строят рас­пределение <tex>p(x; \theta)</tex>.  ===Явный подход===Можно строить это распределение ''явно'', делая вероятностные предположения, которые обычно сводятся к тому, что общее распределение <tex>p(x; \theta)</tex> выражается в виде произведения тех или иных распределений.
Как правило, модели, где плотность известна явно, делают какие-то дополни­тельные предположения на структуру этих распределений.
Например, [[Байесовские сети|байесовские сети]] строят распределение из условных распре­делений <math>\mathrm P(X_1, \ldots, X_n) = \prod_{i=1}^n \mathrm P(X_i \mid \operatorname{parents}(X_i)).</math>
Можно даже и вовсе никаких предположений не делать: любое распределение всегда раскладывается как  <tex>p(x) = \displaystyle \prod_{i} p(x_i \mid x_1, {{...}}, x_{i-1})</tex>(Простая факторизующаяся плотность).  Так представляется модель в FVBN(fully visible belief net­works)<ref>[https://mitpress.mit.edu/books/graphical-models-machine-learning-and-digital-communication Frey B. Graphical Models for Machine Learning and Digital Communication, Cambridge, MA: MIT Press, 1998.]</ref>, идея которых состоит в том, что с одномерными распределениями мы уж как-нибудь разберемся - в ранних работах их представляли классическими моделями. А сейчас мы можем их промоделировать последовательно [[Глубокое обучение|глу­бокими сетями]], получится модель, которая сможет последовательно породить <tex>х</tex> компонент за компонентом, каждый раз для порождения <tex>x_i</tex> опираясь на уже порожденные <tex>x_1, {{...}}, x_{i-1})</tex>. Если хочется явно выразить совсем сложные распределения в порождающих моделях, их приходится приближать более простыми, которые уже, в свою очередь, могут быть выражены явно. Для этого обычно используются [[Вариационный автокодировщик|вариационные мето­ды]]. ===Неявный подход===Основная альтернатива всему этому состоит в том, чтобы использовать ''неявные'' порождающие модели, в которых мы не пытаемся получить функцию, подсчитывающую плотность нужного распределения в каждой точке, а просто мо­делируем то, что нам от этой модели нужно. Например, если мы хотим просто научиться порождать фото­графии милых котиков, нам не так важно иметь явную функцию плотности <tex>p(x)</tex>, которая могла бы сказать, насколько вероятно, что перед нами котик, - вполне до­статочно просто уметь генерировать новые <tex>x \sim p(x)</tex>. Сэмплирование из сложных многомерных распределений делается с помощью МСМС<ref>[https://en.wikipedia.org/wiki/Markov_chain_Monte_Carlo Markov chain Monte Carlo(МСМС)]</ref>-методов: попробуем построить мар­ковскую цепь, которая описывает случайное блуждание под графиком плотности распределения. Если достаточно долго блуждать под графиком плотности <tex>p(x)</tex>, можно будет считать, что полученная точка представляет собой случайную точ­ку, взятую по распределению <tex>p(x)</tex>. Примером такого моделирования глубокой сетью являются ''порождающие стохастические сети''(англ. ''Generative Stochastic Networks'')
== Глубокие порождающие модели на основе нейронных сетей ==
*[https://developers.google.com/machine-learning/gan/generative Google courses с примерами на понимание]
*[https://arxiv.org/abs/1701.00160 NIPS 2016 Tutorial: Generative Adversarial Networks(Ian Goodfellow, 2016)]
* Николенко С., Кадурин А., Архангельская Е. Глубокое обучение. СПб.: Питер, 2018.
[[Категория: Машинное обучение]]
[[Категория: Порождающие модели]]
76
правок

Навигация