В чем разница между генеративным и дискриминационным алгоритмом?


587

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


4
Этот документ (на который также указывает anguyen8 ниже) является хорошим: cs229.stanford.edu/notes/cs229-notes2.pdf
GuSuku

5
Смотрите также тот же вопрос на stats.SE: Генеративный против Дискриминационный
Ленар Хойт

Для простого и наглядного ответа нажмите здесь stackoverflow.com/a/52412379/7160346
Ravi G

Ответы:


840

Допустим, у вас есть входные данные, 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)пар.

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


48
Спасибо за статью. Автор в настоящее время является профессором в Стэнфорде и имеет замечательные ресурсы по адресу stanford.edu/class/cs229/materials.html
unj2

26
Хорошее объяснение также Эндрю Нг здесь
clyfe

39
При взгляде на матрицы обратите внимание, что в первой записи все записи суммируются до 1,0, а во второй - в каждой строке до одной. Это ускорит просвещение (и уменьшит путаницу)
Максим Хесин

5
Замечание Эндрю Нга здесь также очень полезно: cs229.stanford.edu/notes/cs229-notes2.pdf
anh_ng8

1
«Именно поэтому алгоритмы, которые моделируют это непосредственно, называют дискриминационными алгоритмами», все еще не уверен, почему p(y|x)подразумевает, что алгоритмы, которые моделируют это, называют «дискриминационными моделями».
nbro

291

А генеративный алгоритм модель , как данные были получены для того , чтобы классифицировать сигнал. Он задает вопрос: исходя из предположений моего поколения, какая категория, скорее всего, будет генерировать этот сигнал?

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


6
Этот ответ смущает меня. Оба класса алгоритмов относятся к классу контролируемых алгоритмов обучения, которые изучают модель маркированных обучающих данных, чтобы получить функцию, которая предсказывает другие данные. Различающий алгоритм, который вы описываете, звучит так, как будто он не создает модель, это правильно? Я был бы рад, если бы вы могли усилить свой ответ в этом отношении.
Ленар Хойт

42
@mcb Генеративный алгоритм моделирует, как данные «генерировались», поэтому вы спрашиваете его: «Какова вероятность того, что тот или иной класс сгенерировал этот экземпляр?» и выберите тот с лучшей вероятностью. Дискриминационный алгоритм использует данные для создания границы решения, поэтому вы спрашиваете его: «На какой стороне границы решения находится этот экземпляр?» Таким образом, он не создает модель того, как были сгенерированы данные, он создает модель того, как, по его мнению, выглядит граница между классами.
Энтони

1
Таким образом, порождающая модель, такая как Наивный Байес, не имеет границы решения?
sheetal_158

4
Таким образом, генеративные модели кажутся лучше интерпретируемыми?
Candic3

157

Представьте, что ваша задача - классифицировать речь по языку.

Вы можете сделать это:

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

или

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

Первый - это генеративный подход, а второй - дискриминационный .

Проверьте эту ссылку для более подробной информации: http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf .


2
Разве это не наоборот? Учитывая, что вы выучили язык, вы работаете с условным распределением, и поэтому это должен быть дискриминационный подход?
Лондонский парень

Я думаю, что все наоборот, после прочтения ответов ниже - Пример из лекционных заметок CS299 от Ghrua
Mitali Cyrus

132

На практике модели используются следующим образом.

В дискриминационных моделях , чтобы предсказать метку yиз обучающего примера x, вы должны оценить:

введите описание изображения здесь

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

Теперь, используя правило Байеса, заменим введите описание изображения здесьв уравнении на введите описание изображения здесь. Так как вы просто интересуетесь arg max , вы можете уничтожить знаменатель, который будет одинаковым для всех y. Итак, вы остались с

введите описание изображения здесь

это уравнение, которое вы используете в порождающих моделях .

В то время как в первом случае вы имели условное распределение вероятностей p(y|x) , которое моделируется границей между классами, во втором вы имели совместное распределение вероятностей p(x, y) , так p(x | y) p(y) = p(x, y), что явно моделирует реальное распределение каждого класса .

С помощью функции совместного распределения вероятностей, учитывая y, вы можете вычислить («сгенерировать») ее значение x. По этой причине их называют «генеративными» моделями.


3
Исходя из этого, не равны ли порождающая и дискриминационная модели применительно к одному и тому же распределению? Почему тогда разница в поведении классификации? Или они просто равны в этом контексте максимального правдоподобия?
Себастьян Граф

Чтобы сказать, равны они или нет, нам нужно сначала определить, что мы подразумеваем под этим. Есть много общего, но самым сильным отличием является используемая стратегия: смоделируйте распределение (генеративное) против предсказания класса, независимо от распределения (дискриминационное) - подумайте о KNN на секунду для примера.
Сол Берардо

90

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

Предположим, у нас есть два класса животных, слон ( y = 1) и собака ( y = 0). И х - это вектор признаков животных.

При наличии обучающего набора алгоритм, такой как логистическая регрессия или алгоритм персептрона (в основном), пытается найти прямую линию, то есть границу решения, которая разделяет слонов и собак. Затем, чтобы классифицировать новое животное как слона или собаку, он проверяет, на какую сторону границы решения он попадает, и соответственно делает свой прогноз. Мы называем это дискриминационным алгоритмом обучения .

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


33

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

p(x,y)=p(y|x).p(x)

мы должны смоделировать p (x), который не имеет отношения к поставленной задаче. Практические ограничения, такие как разбросанность данных, заставят нас моделировать p(x)с некоторыми слабыми предположениями о независимости. Поэтому мы интуитивно используем дискриминационные модели для классификации.



22

Дополнительный информативный пункт, который хорошо сочетается с ответом 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)

PS: часть ответа взята из источника


8

Краткий ответ

Многие из ответов здесь основаны на широко используемом математическом определении [1]:

  • Дискриминативные модели непосредственно изучают условное предиктивное распределение p(y|x).
  • Генеративные модели учатся совместному распределению p(x,y)(точнее, p(x|y)и p(y)).
    • Прогнозирующее распределение p(y|x)может быть получено с помощью правила Байеса.

Хотя это узкое определение очень полезно, оно предполагает контролируемую настройку и менее удобно при изучении неконтролируемых или полуконтролируемых методов. Это также не относится ко многим современным подходам к глубокому генеративному моделированию . Например, теперь у нас есть неявные генеративные модели, например, Генерирующие состязательные сети (GAN), которые основаны на выборке и даже не моделируют явно плотность вероятности p(x)(вместо этого изучают меру расхождения через сеть дискриминатора). Но мы называем их «порождающими моделями», поскольку они используются для генерации (многомерных [10]) выборок.

Более широкое и более фундаментальное определение [2] кажется одинаково подходящим для этого общего вопроса:

  • Дискриминационные модели изучают границу между классами.
    • Таким образом, они могут различать различные типы экземпляров данных.
  • Генеративные модели изучают распределение данных.
    • Таким образом, они могут генерировать новые экземпляры данных.

От http://primo.ai/index.php?title=Discriminative_vs._Generative Источник изображения


Пристальный взгляд

Тем не менее, этот вопрос подразумевает некоторую ложную дихотомию [3]. Генеративно-дискриминационная «дихотомия» на самом деле представляет собой спектр, который можно даже плавно интерполировать между [4].

Как следствие, это различие становится произвольным и запутанным, особенно когда многие популярные модели не подпадают под ту или иную [5,6] или фактически являются гибридными моделями (комбинации классически «дискриминационных» и «порождающих» моделей) ,

Тем не менее, это все еще очень полезное и распространенное различие. Мы можем перечислить некоторые четкие примеры порождающих и дискриминационных моделей, как канонических, так и недавних:

  • Генеративные: Наивный Байес, скрытое распределение Дирихле (LDA), Генеративные состязательные сети (GAN), Вариационные автоэнкодеры (VAE), нормализующие потоки.
  • Дискриминационный: опорная векторная машина (SVM), логистическая регрессия, самые глубокие нейронные сети.

Существует также много интересных работ, глубоко исследующих порождающе-дискриминационный разрыв [7] и спектр [4,8], и даже превращающих дискриминационные модели в порождающие модели [9].

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


источники

  1. Возможно, происходит из "Машинного обучения - дискриминационного и генеративного" (Тони Джебара, 2004).
  2. Ускоренный курс по машинному обучению от Google
  3. Генеративно-дискриминационная ошибка
  4. «Принципиальные гибриды генеративных и дискриминационных моделей» (Lasserre et al., 2006)
  5. вопрос @ shimao
  6. Бину Ясим ответ
  7. Сравнивая логистическую регрессию и наивный байесовский:
  8. https://www.microsoft.com/en-us/research/wp-content/uploads/2016/04/DengJaitly2015-ch1-2.pdf
  9. «Ваш классификатор является тайной моделью, основанной на энергии» (Grathwohl et al., 2019)
  10. Stanford CS236 отмечает : Технически вероятностная дискриминационная модель также является генеративной моделью меток, обусловленных данными. Однако термин «генеративные модели» обычно зарезервирован для данных большого размера.

1
Это действительно должно иметь больше голосов. Ваш был единственный ответ, который затронул идею "ложной дихотомии", которую я нашел. Мой вопрос похож на этот: stats.stackexchange.com/questions/408421/…
Антонио Луис Сомбра

1

Все предыдущие ответы великолепны, и я хотел бы добавить еще один момент.

Из моделей генеративного алгоритма мы можем получить любое распределение; в то время как мы можем получить только условное распределение P (Y | X) из моделей дискриминирующего алгоритма (или мы можем сказать, что они полезны только для распознавания метки Y), и именно поэтому оно называется дискриминационной моделью. Дискриминативная модель не предполагает, что X независимы, учитывая Y ($ X_i \ perp X _ {- i} | Y $), и, следовательно, обычно более эффективны для вычисления этого условного распределения.


0

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


0

Модель генеративного алгоритма будет полностью извлекать уроки из обучающих данных и прогнозировать реакцию.

Дискриминирующий алгоритм работы состоит в том, чтобы просто классифицировать или дифференцировать 2 результата.


То, что я получаю, это генеративная модель, основанная на контролируемом обучении, в то время как дискриминационная модель основана на обучении без учителя. Я прав?
Васим Ахмад Наим

@WaseemAhmadNaeem Вроде как, но вроде нет. y всегда является целью и требуется как часть входных данных, поэтому оба контролируются. Генерация кажется неконтролируемой, потому что первый шаг - получить полное распределение (во всех переменных, не считая y особенным). Если вы остановились там и не относитесь к y как к особенному, то эта часть сама по себе не контролируется.
Митч

@ Митч, могу я попросить тебя поделиться бумагой / заметками / ссылкой на разницу между ними? на самом деле я немного смущен этой концепцией. Заранее спасибо
Васим Ахмад Наим

@WaseemAhmadNaeem Поиск в Cross Validated.SE (сайт stats / ML SE), в частности, Генеративные или Дискриминационные или Генеративные против дискриминационных моделей в байесовском контексте . Элементарные примеры Наивный Байес является генеративным, Логистическая регрессия - дискриминационной. Больше примеров обоих .
Митч

0

Эта статья мне очень помогла в понимании концепции.

В итоге,

  • Обе являются вероятностными моделями, то есть обе они используют вероятность ( точнее условную вероятность ) для вычисления классов для неизвестных данных.
  • Генеративные классификаторы применяют объединенную теорему PDF и Байеса к набору данных и вычисляют условную вероятность, используя значения из них.
  • Дискриминационные классификаторы напрямую находят условную вероятность в наборе данных

Хороший материал для чтения: условная вероятность , совместный PDF

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.