Порождающие модели
Порождающие модели (англ. generative model) — это класс моделей, которые обучают совместное распределение[1] данных ; отсюда легко получить условное распределение , но совместное даёт больше информации и его можно использовать, например, для генерации новых фотографий животных, которые выглядят как настоящие животные.
С другой стороны, дискриминативная модель (англ. discriminative model)[2] обучает только условное распределение и может, например, отличить собаку от кошки.
Примером простейшей порождающей модели является наивный байесовский классификатор.
Содержание
Классификация задачи[править]
Можно использовать некоторые эмпирические правила для генерации новых объектов, не используя машинного обучения.
Мы хотим научиться создавать правдоподобный объект относительно некоторой скрытой структуры исходных объектов. Давайте изучим распределение по ним, а затем просто будем сэмплировать новый объект из этого распределения. Значит эта задача относится к классу задач обучения без учителя.
Порождающая модель иногда позволяет использовать обучение с частичным привлечением учителя. Пусть задача состоит в том, чтобы отличить кошек от собак на фотографиях. Обычно мало размеченных данных, на которых кошки и собаки отмечены вручную. Основная часть задачи состоит в том, чтобы понять, чем разумные фотографии отличаются от случайного шума. Иначе говоря, если сначала определить распределение , то проще обучить распределение , где — это один бит, отвечающий за отдельный признак, а — это вся фотография.
Вычисление плотности распределения[править]
С математической точки зрения основная цель порождающей модели обычно состоит в максимизации функции правдоподобия: для набора данных
максимизировать по параметрам модели , т.е. найтиЧтобы избежать арифметического переполнения снизу[3] зачастую пользуются свойством логарифма произведения . Благодаря моннотоности логарифма, его применение к обоим частям выражения не изменит параметры, при которых достигается максимум. При этом, логарифм от числа близкого к нулю будет числом отрицательным, но в абсолютном значении существенно большим чем исходное число, что делает логарифмические значения вероятностей более удобными для анализа. Что в нашем случае с вероятности очень уместно. Поэтому, мы переписываем нашу формулу с использованием логарифма.
Важен и другой взгляд на то же самое: максимизация правдоподобия эквивалентна минимизации расстояния Кульбака-Лейблера[4] между распределением , которое получается из нашей модели, и распределением — эмпирическим распределением данных. Это эмпирическое распределение попросту полностью сосредоточено в точках из набора данных и равномерно распределено по ним, так что:
и минимизация этого выражения эквивалентна максимизации того, что выше.
Таксономия порождающих моделей[править]
Генеративные модели различаются как раз тем, как именно они строят распределение
.Явный подход[править]
Можно строить это распределение явно, делая вероятностные предположения, которые обычно сводятся к тому, что общее распределение
выражается в виде произведения тех или иных распределений.Как правило, модели, где плотность известна явно, делают какие-то дополнительные предположения на структуру этих распределений.
Например, байесовские сети строят распределение из условных распределений
Можно даже и вовсе никаких предположений не делать: любое распределение всегда раскладывается как:
Так представляется модель в FVBN (fully visible belief networks)[5], идея которых состоит в том, что с одномерными распределениями нетрудно разобраться - в ранних работах их представляли классическими моделями. А сейчас мы можем их промоделировать последовательно глубокими сетями, получится модель, которая сможет последовательно породить компонент за компонентом, каждый раз для порождения опираясь на уже порожденные .
Именно эта идея лежит в основе модели для работы со звуком WaveNet, разработанной Google DeepMind[6]. Существующие параметрические модели синтезирования речи[7] обычно генерируют звук, прогоняя выходной сигнал через специальные обработчики, называемые вокодерами[8].
WaveNet меняет парадигму, генерируя звуковой сигнал по семплам. Это не только приводит к более натуральному звучанию речи, но и позволяет создавать любые звуки, включая музыку. Эта архитектура состоит из нескольких последовательных слоев разреженных сверток и в ней снова встречаются остаточные связи, связи «через уровень» и так далее. Во время обучения входящие последовательности представляют собой звуковые волны от примеров записи голоса. После тренировки можно с помощью сети генерировать синтетические фразы. На каждом шагу семплирования значение вычисляется из вероятностного распределения, посчитанного сетью. Затем это значение возвращается на вход и делается новое предсказание для следующего шага.
В моделях PixelRNN[на 24.02.20 не создан] и PixelCNN[на 24.02.20 не создан] строится изображение пиксель за пикселем, слева направо и сверху вниз. Каждый пиксель порождается из условного распределения а оно уже моделируется или рекуррентной сетью или сверточной.
Модель DRAW[9] последовательно «рисует» картинку с помощью рекуррентной сети, а механизм внимания[на 24.02.20 не создан] помогает сети в данный момент сконцентрироваться на нужной части изображения.
Если хочется явно выразить совсем сложные распределения в порождающих моделях, их приходится приближать более простыми, которые уже, в свою очередь, могут быть выражены явно. Для этого обычно используются вариационные методы.
Неявный подход[править]
Основная альтернатива всему этому состоит в том, чтобы использовать неявные порождающие модели, в которых мы не пытаемся получить функцию, подсчитывающую плотность нужного распределения в каждой точке, а просто моделируем то, что нам от этой модели нужно. Например, если мы хотим просто научиться порождать фотографии милых котиков, нам не так важно иметь явную функцию плотности
, которая могла бы сказать, насколько вероятно, что перед нами котик, - вполне достаточно просто уметь генерировать новые .Сэмплирование из сложных многомерных распределений делается с помощью МСМС[10]-методов: попробуем построить марковскую цепь, которая описывает случайное блуждание под графиком плотности распределения. Если достаточно долго блуждать под графиком плотности , можно будет считать, что полученная точка представляет собой случайную точку, взятую по распределению . Примером такого моделирования глубокой сетью являются порождающие стохастические сети[11].
Порождающие состязательные сети — алгоритм машинного обучения, построенный на комбинации из двух нейронных сетей: генеративная модель , которая строит приближение распределения данных, и дискриминативная модель , оценивающая вероятность, что образец пришел из тренировочных данных, а не сгенерированных моделью . Обучение для модели заключается в максимизации вероятности ошибки дискриминатора .
См. также[править]
- Наивный байесовский классификатор
- Порождающие состязательные сети
- Автокодировщик
- Вариационный автокодировщик
- Генерация изображения по тексту
Примечания[править]
- ↑ Joint probability distribution
- ↑ Discriminative model
- ↑ Исчезновение порядка
- ↑ Расстояние Кульбака-Лейблера
- ↑ Frey B. Graphical Models for Machine Learning and Digital Communication, Cambridge, MA: MIT Press, 1998.
- ↑ Blog post by DeepMind about WaveNet
- ↑ Text-To-Speech (TTS)
- ↑ Vocoder
- ↑ DRAW: A Recurrent Neural Network For Image Generation / K. Gregor et al. / / arXiv, 2015.
- ↑ Markov chain Monte Carlo(МСМС)
- ↑ Generative Stochastic Networks
Источники информации[править]
- Generative_model
- Google courses с примерами на понимание
- NIPS 2016 Tutorial: Generative Adversarial Networks(Ian Goodfellow, 2016)
- Николенко С., Кадурин А., Архангельская Е. Глубокое обучение. СПб.: Питер, 2018.