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

StackOverflow https://stackoverflow.com/questions/879432

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Вы можете сделать это одним из следующих способов:

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

или

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

Первый из них порождающий подход, а второй – дискриминационный подход.

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

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

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

enter image description here

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

Теперь, используя правило Байеса, заменим enter image description here в уравнении enter image description here.Поскольку вас просто интересует аргумент макс., можно вычеркнуть знаменатель, он будет одинаковым для всех y.Итак, у вас осталось

enter image description here

какое уравнение вы используете в генеративные модели.

Хотя в первом случае у вас было условное распределение вероятностей 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)

ПС:Часть ответа взята из источник

Различные модели суммированы в таблице ниже:enter image description here

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top