В чем разница между генеративным и дискриминационным алгоритмом?
Пожалуйста, помогите мне понять разницу между порождающим и дискриминационным алгоритмом, помня, что я только начинающий.
10 ответов
Допустим, у вас есть входные данные 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
, Как будто мы пытались смоделировать границу принятия решения между классами. Это поведение очень четко видно в нейронных сетях, где вычисленные веса можно рассматривать как сложную форму кривой, изолирующей элементы класса в пространстве.
Теперь, используя правило Байеса, давайте заменим в уравнении , Так как вы просто интересуетесь arg max, вы можете стереть знаменатель, который будет одинаковым для всех 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)
с некоторыми слабыми предположениями о независимости. Поэтому мы интуитивно используем дискриминационные модели для классификации.
Краткий ответ
Многие ответы здесь основаны на широко используемом математическом определении [1]:
- Дискриминационные модели напрямую изучают условное прогнозирующее распределение
p(y|x)
.- Генеративные модели изучают совместное распределение
p(x,y)
(или скорее,p(x|y)
а такжеp(y)
).
- Прогнозирующее распространение
p(y|x)
можно получить с помощью правила Байеса.
Несмотря на то, что это узкое определение очень полезно, оно предполагает контролируемую настройку и менее удобно при изучении неконтролируемых или полууправляемых методов. Это также не применимо ко многим современным подходам к глубокому генеративному моделированию. Например, теперь у нас есть неявные генеративные модели, например Generative Adversarial Networks (GAN), которые основаны на выборке и даже не моделируют явно плотность вероятности.p(x)
(вместо изучения меры дивергенции через дискриминаторную сеть). Но мы называем их "генеративными моделями", поскольку они используются для генерации (многомерных [10]) выборок.
Более широкое и более фундаментальное определение [2] кажется одинаково подходящим для этого общего вопроса:
- Дискриминационные модели изучают границы между классами.
- Таким образом, они могут различать разные типы экземпляров данных.
- Генеративные модели изучают распределение данных.
- Таким образом, они могут создавать новые экземпляры данных.
Внимательнее
Тем не менее, этот вопрос подразумевает некоторую ложную дихотомию [3]. Генеративно-дискриминативная "дихотомия" на самом деле представляет собой спектр, который можно даже плавно интерполировать между [4].
Как следствие, это различие становится произвольным и сбивающим с толку, особенно когда многие популярные модели не попадают точно в ту или иную [5,6] или фактически являются гибридными моделями (комбинациями классически "дискриминативных" и "генеративных" моделей)..
Тем не менее, это очень полезное и распространенное различие. Мы можем перечислить несколько четких примеров генеративных и дискриминационных моделей, как канонических, так и недавних:
- Генеративные: наивный байесовский алгоритм, скрытое распределение Дирихле (LDA), генеративные состязательные сети (GAN), вариационные автоэнкодеры (VAE), нормализующие потоки.
- Дискриминационный: машина опорных векторов (SVM), логистическая регрессия, самые глубокие нейронные сети.
Существует также много интересных работ, в которых глубоко исследуются генеративно-дискриминативное разделение [7] и спектр [4,8], и даже по преобразованию дискриминативных моделей в генеративные модели [9].
В конце концов, определения постоянно развиваются, особенно в этой быстрорастущей области:) Лучше всего относиться к ним с долей скепсиса и, возможно, даже пересмотреть их для себя и других.
Источники
- Возможно, происходит из "Машинного обучения - дискриминативного и генеративного" (Тони Джебара, 2004).
- Ускоренный курс машинного обучения от Google
- Генеративно-дискриминационная ошибка
- "Принципиальные гибриды генеративных и дискриминационных моделей" (Lasserre et al., 2006)
- вопрос @shimao
- Ответ Бину Джасима
- Сравнение логистической регрессии и наивного Байеса:
- https://www.microsoft.com/en-us/research/wp-content/uploads/2016/04/DengJaitly2015-ch1-2.pdf
- "Ваш классификатор - это тайная энергетическая модель" (Grathwohl et al., 2019)
- Stanford CS236 отмечает: Технически вероятностная дискриминативная модель также является генеративной моделью меток, обусловленных данными. Однако термин "генеративные модели" обычно используется для данных большой размерности.
Дополнительный информативный пункт, который хорошо согласуется с ответом 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: часть ответа взята из источника
Модель генеративного алгоритма будет полностью извлекать уроки из обучающих данных и прогнозировать реакцию.
Дискриминирующий алгоритм работы состоит в том, чтобы просто классифицировать или дифференцировать 2 результата.
Все предыдущие ответы великолепны, и я хотел бы отметить еще один момент.
Из моделей генеративного алгоритма мы можем получить любое распределение; в то время как мы можем получить только условное распределение P(Y|X) из моделей дискриминативного алгоритма (или мы можем сказать, что они полезны только для различения метки Y), и поэтому это называется дискриминативной моделью. Дискриминантная модель не предполагает, что X являются независимыми с учетом Y($X_i \perp X_{-i} | Y$) и, следовательно, обычно более эффективны для вычисления этого условного распределения.
Эта статья очень помогла мне понять концепцию.
В итоге,
- Обе модели являются вероятностными, то есть обе используют вероятность (если быть точным, условную вероятность) для вычисления классов неизвестных данных.
- Генеративные классификаторы применяют Совместную теорему PDF и Байеса к набору данных и вычисляют условную вероятность, используя значения из них.
- Дискриминационные классификаторы напрямую находят условную вероятность в наборе данных.
Хороший материал для чтения: условная вероятность, Joint PDF
Мои два цента: дискриминационные подходы подчеркивают различия Генеративные подходы не фокусируются на различиях; они пытаются построить модель, которая является представителем класса. Между ними есть совпадение. В идеале следует использовать оба подхода: один будет полезен для нахождения сходства, а другой будет полезен для нахождения несходства.