В чем разница между генеративным и дискриминативным алгоритмом?
-
22-08-2019 - |
Вопрос
Пожалуйста, помогите мне понять разницу между порождающий идискриминационный алгоритм, учитывая, что я только новичок.
Решение
Допустим, у вас есть входные данные x
и вы хотите классифицировать данные по меткам y
.Генеративная модель изучает соединение распределение вероятностей p(x,y)
а дискриминационная модель изучает условный распределение вероятностей p(y|x)
- который вы должны читать как «вероятность y
данный x
".
Вот очень простой пример.Предположим, у вас есть следующие данные в форме (x,y)
:
(1,0), (1,0), (2,0), (2, 1)
p(x,y)
является
y=0 y=1
-----------
x=1 | 1/2 0
x=2 | 1/4 1/4
p(y|x)
является
y=0 y=1
-----------
x=1 | 1 0
x=2 | 1/2 1/2
Если вы потратите несколько минут на эти две матрицы, вы поймете разницу между двумя распределениями вероятностей.
Распространение p(y|x)
- естественное распределение для классификации данного примера x
в класс y
, поэтому алгоритмы, моделирующие это напрямую, называются дискриминативными алгоритмами.Модель генеративных алгоритмов p(x,y)
, который можно преобразовать в p(y|x)
применяя правило Байеса и затем используя его для классификации.Однако распределение p(x,y)
также можно использовать для других целей.Например, вы можете использовать p(x,y)
к генерировать вероятный (x,y)
пары.
Из приведенного выше описания вы можете подумать, что генеративные модели более полезны и, следовательно, лучше, но все не так просто. Эта бумага — очень популярная ссылка на тему дискриминативных и противопоставлений.генеративные классификаторы, но это довольно тяжело.Общая суть заключается в том, что дискриминационные модели обычно превосходят генеративные модели в задачах классификации.
Другие советы
А генеративный алгоритм моделирует способ генерации данных для классификации сигнала.Он задает вопрос:исходя из моих предположений о генерации, какая категория с наибольшей вероятностью будет генерировать этот сигнал?
А дискриминационный алгоритм не заботится о том, как были сгенерированы данные, он просто классифицирует данный сигнал.
Представьте, что ваша задача — классифицировать речь к языку.
Вы можете сделать это одним из следующих способов:
- изучение каждого языка, а затем его классификация, используя только что полученные знания
или
- определение разницы языковых моделей без изучения языков, а затем классификация речи.
Первый из них порождающий подход, а второй – дискриминационный подход.
Проверьте эту ссылку для получения более подробной информации: http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf.
На практике модели используются следующим образом.
В дискриминационные модели, чтобы предсказать метку y
из обучающего примера x
, вы должны оценить:
который просто выбирает наиболее вероятный класс y
учитывая x
.Как будто мы пытались моделировать границу решений между классами.Такое поведение очень наглядно проявляется в нейронных сетях, где вычисленные веса можно рассматривать как кривую сложной формы, изолирующую элементы класса в пространстве.
Теперь, используя правило Байеса, заменим в уравнении .Поскольку вас просто интересует аргумент макс., можно вычеркнуть знаменатель, он будет одинаковым для всех y
.Итак, у вас осталось
какое уравнение вы используете в генеративные модели.
Хотя в первом случае у вас было условное распределение вероятностей p(y|x)
, который моделировал границу между классами, во второй у вас был совместное распределение вероятностей p(x, y), поскольку p(x, y) = p(x | y) p(y), что явно моделирует фактическое распределение каждого класса.
С совместной функцией распределения вероятностей, учитывая y
, вы можете вычислить («сгенерировать») соответствующие x
.По этой причине их называют «генеративными» моделями.
Вот самая важная часть из конспект лекций CS299 (автор: Эндрю Нг), связанный с этой темой, которая Действительно помогает мне понять разницу между дискриминационный и порождающий алгоритмы обучения.
Предположим, у нас есть два класса животных: слон (y = 1
) и собака (y = 0
).И Икс - вектор признаков животных.
Учитывая обучающий набор, такой алгоритм, как логистическая регрессия или алгоритм перцептрона (по сути), пытается найти прямую линию — то есть границу решения — которая разделяет слонов и собак.Затем, чтобы классифицировать новое животное как слон или собаку, оно проверяет, на какой стороне границы решения оно падает, и делает его прогноз соответствующим образом.Мы называем это дискриминационный алгоритм обучения.
Здесь другой подход.Во -первых, глядя на слонов, мы можем построить модель того, как выглядят слоны.Затем, глядя на собак, мы можем построить отдельную модель того, как выглядят собаки.Наконец, чтобы классифицировать новое животное, мы можем сравниться с новым животным против модели слона и сопоставить его с моделью собак, чтобы увидеть, больше ли новое животное больше похоже на слоны или больше похожи на собак, которые мы видели в тренировочном наборе ПолемМы называем это алгоритм генеративного обучения.
Как правило, в сообществе машинного обучения существует практика не изучать то, что вы не хотите.Например, рассмотрим задачу классификации, цель которой — присвоить метки y заданному входу x.Если мы используем генеративную модель
p(x,y)=p(y|x).p(x)
нам нужно смоделировать p(x), что не имеет отношения к поставленной задаче.Практические ограничения, такие как разреженность данных, заставят нас моделировать p(x)
с некоторыми слабыми предположениями о независимости.Поэтому мы интуитивно используем дискриминационные модели для классификации.
Дополнительный информативный момент, который хорошо сочетается с ответом StompChicken выше.
А фундаментальная разница между дискриминационные модели и генеративные модели является:
Дискриминационные модели выучить (жесткая или мягкая) граница между классами
Генеративные модели моделировать распределение индивидуальных занятий
Редактировать:
Генеративная модель – это модель который может генерировать данные.Он моделирует как функции, так и класс (т.полные данные).
Если мы моделируем P(x,y)
:Я могу использовать это распределение вероятностей для генерации точек данных — и, следовательно, для моделирования всех алгоритмов. P(x,y)
являются генеративными.
Например.генеративных моделей
Наивные модели Байеса
P(c)
иP(d|c)
- гдеc
это класс иd
вектор признаков.Также,
P(c,d) = P(c) * P(d|c)
Следовательно, наивные байесовские модели в некоторой форме
P(c,d)
Байесовская сеть
Марковские сети
Дискриминационная модель – это модель, которую можно использовать только для различать/классифицировать точки данных.Вам нужно только смоделировать P(y|x)
в таких случаях (т.вероятность класса с учетом вектора признаков).
Например.дискриминационных моделей:
логистическая регрессия
Нейронные сети
Условные случайные поля
В общем, генеративные модели требуют моделирования гораздо большего, чем дискриминативные модели, и поэтому иногда они не так эффективны.На самом деле, большинство (не уверен, что все) алгоритмов обучения без учителя, таких как кластеризация и т. д., можно назвать генеративными, поскольку они моделируют P(d)
(и классов нет :P)
ПС:Часть ответа взята из источник
Мои два цента:Дискриминационные подходы подчеркивают различия. Генеративные подходы не фокусируются на различиях;они пытаются построить модель, которая будет репрезентативной для класса.Между ними существует перекрытие.В идеале следует использовать оба подхода:один будет полезен для обнаружения сходства, а другой — для обнаружения различий.
Модель генеративного алгоритма полностью обучается на обучающих данных и прогнозирует ответ.
Задача дискриминационного алгоритма заключается в том, чтобы просто классифицировать или различать два результата.
Все предыдущие ответы великолепны, и я хотел бы добавить еще один момент.
Из моделей генеративных алгоритмов мы можем получить любое распределение;в то время как мы можем получить условное распределение P(Y|X) только из моделей дискриминативного алгоритма (или мы можем сказать, что они полезны только для распознавания метки Y), и поэтому это называется дискриминативной моделью.Дискриминационная модель не предполагает, что X независимы с учетом Y($X_i \perp X_{-i} | Y$) и, следовательно, обычно более эффективна для расчета этого условного распределения.