Por favor, ajude-me a entender a diferença entre um algoritmo generativo e um discriminativo , tendo em mente que sou apenas iniciante.
Por favor, ajude-me a entender a diferença entre um algoritmo generativo e um discriminativo , tendo em mente que sou apenas iniciante.
Respostas:
Digamos que você tenha dados de entrada x
e queira classificá-los em rótulos y
. Um modelo generativo aprende a distribuição de probabilidade conjuntap(x,y)
e um modelo discriminativo aprende a distribuição de probabilidade condicionalp(y|x)
- que você deve ler como "a probabilidade de um y
dado x
" .
Aqui está um exemplo muito simples. Suponha que você tenha os seguintes dados no formulário (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
Se você demorar alguns minutos para olhar para essas duas matrizes, entenderá a diferença entre as duas distribuições de probabilidade.
A distribuição p(y|x)
é a distribuição natural para classificar um determinado exemplo x
em uma classe y
, e é por isso que os algoritmos que modelam isso diretamente são chamados de algoritmos discriminativos. Modelo de algoritmos generativos p(x,y)
, que pode ser transformado p(y|x)
pela aplicação da regra de Bayes e depois usado para classificação. No entanto, a distribuição p(x,y)
também pode ser usada para outros fins. Por exemplo, você pode usar p(x,y)
para gerar(x,y)
pares prováveis .
A partir da descrição acima, você pode estar pensando que os modelos generativos são geralmente mais úteis e, portanto, melhores, mas não é tão simples assim. Este artigo é uma referência muito popular sobre classificadores discriminativos versus geradores, mas é bastante pesado. A essência geral é que os modelos discriminativos geralmente superam os modelos generativos nas tarefas de classificação.
p(y|x)
que os algoritmos que modelam isso são chamados de "modelos discriminativos".
Um algoritmo generativo modela como os dados foram gerados para categorizar um sinal. Ele faz a pergunta: com base nas minhas suposições de geração, qual categoria é mais provável de gerar esse sinal?
Um algoritmo discriminativo não se importa com a forma como os dados foram gerados, simplesmente categoriza um determinado sinal.
Imagine que sua tarefa é classificar um discurso em um idioma.
Você pode fazer isso:
ou
O primeiro é a abordagem generativa e o segundo é a abordagem discriminativa .
Verifique esta referência para obter mais detalhes: http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf .
Na prática, os modelos são usados da seguinte maneira.
Em modelos discriminativos , para prever o rótulo y
do exemplo de treinamento x
, você deve avaliar:
que apenas escolhe qual é a classe mais provável y
considerando x
. É como se estivéssemos tentando modelar o limite de decisão entre as classes . Esse comportamento é muito claro nas redes neurais, onde os pesos computados podem ser vistos como uma curva de forma complexa que isola os elementos de uma classe no espaço.
Agora, usando a regra de Bayes, vamos substituir o na equação por . Como você está interessado apenas no arg max , pode apagar o denominador, que será o mesmo para todos y
. Então, você fica com
qual é a equação que você usa em modelos generativos .
Enquanto no primeiro caso, você tinha a distribuição de probabilidade condicional p(y|x)
, que modelava o limite entre as classes, no segundo, a distribuição de probabilidade conjunta p(x, y)
, pois p(x | y) p(y) = p(x, y)
, que modela explicitamente a distribuição real de cada classe .
Com a função de distribuição de probabilidade conjunta, dada a y
, você pode calcular ("gerar") seus respectivos x
. Por esse motivo, eles são chamados de modelos "generativos".
Aqui está a parte mais importante das notas de aula do CS299 (de Andrew Ng) relacionadas ao tópico, o que realmente me ajuda a entender a diferença entre algoritmos de aprendizado discriminativos e generativos .
Suponha que tenhamos duas classes de animais, elefante ( y = 1
) e cachorro ( y = 0
). E x é o vetor de característica dos animais.
Dado um conjunto de treinamento, um algoritmo como a regressão logística ou o perceptron (basicamente) tenta encontrar uma linha reta - isto é, um limite de decisão - que separa os elefantes e os cães. Então, para classificar um novo animal como um elefante ou um cachorro, ele verifica de que lado do limite de decisão ele cai e faz sua previsão de acordo. Chamamos isso de algoritmo discriminatório de aprendizado .
Aqui está uma abordagem diferente. Primeiro, olhando para os elefantes, podemos construir um modelo de como os elefantes se parecem. Então, olhando para os cães, podemos construir um modelo separado da aparência dos cães. Finalmente, para classificar um novo animal, podemos combinar o novo animal com o modelo de elefante e com o modelo de cachorro, para ver se o novo animal se parece mais com os elefantes ou mais com os cães que vimos no conjunto de treinamento . Chamamos isso de algoritmo de aprendizado generativo .
Geralmente, existe uma prática na comunidade de aprendizado de máquina para não aprender algo que você não deseja. Por exemplo, considere um problema de classificação em que o objetivo é atribuir rótulos y a uma determinada entrada x. Se usarmos modelo generativo
p(x,y)=p(y|x).p(x)
temos que modelar p (x) que é irrelevante para a tarefa em questão. Limitações práticas, como a escassez de dados, nos forçará a modelar p(x)
com algumas suposições de independência fracas. Portanto, usamos intuitivamente modelos discriminativos para classificação.
Um ponto informativo adicional que combina bem com a resposta de StompChicken acima.
A diferença fundamental entre modelos discriminativos e modelos generativos é:
Modelos discriminativos aprendem a fronteira (rígida ou flexível) entre classes
Modelos generativos modelam a distribuição de classes individuais
Editar:
Um modelo generativo é aquele que pode gerar dados . Ele modela os recursos e a classe (ou seja, os dados completos).
Se modelarmos P(x,y)
: eu posso usar essa distribuição de probabilidade para gerar pontos de dados - e, portanto, toda modelagem de algoritmos P(x,y)
é generativa.
Por exemplo. de modelos generativos
Modelos ingênuos de Bayes P(c)
e P(d|c)
- onde c
está a classe e d
o vetor de característica.
Além disso, P(c,d) = P(c) * P(d|c)
Portanto, Naive Bayes, em alguns modelos, P(c,d)
Bayes Net
Redes de Markov
Um modelo discriminativo é aquele que só pode ser usado para discriminar / classificar os pontos de dados . Você só precisa modelar P(y|x)
nesses casos (ou seja, probabilidade de classe, dado o vetor de recurso).
Por exemplo. de modelos discriminativos:
regressão logística
Redes neurais
Campos aleatórios condicionais
Em geral, os modelos generativos precisam modelar muito mais do que os modelos discriminativos e, portanto, às vezes não são tão eficazes. Por uma questão de fato, a maioria (não tenho certeza se todos) de algoritmos de aprendizado não supervisionado, como clustering etc, pode ser chamada de generativa, uma vez que modelam P(d)
(e não há classes: P)
PS: Parte da resposta é retirada da fonte
Muitas das respostas aqui se baseiam na definição matemática amplamente usada [1]:
- Modelos discriminativos aprendem diretamente a distribuição preditiva condicional
p(y|x)
.- Modelos generativos aprendem a distribuição conjunta
p(x,y)
(ou melhor,p(x|y)
ep(y)
).
- A distribuição preditiva
p(y|x)
pode ser obtida com a regra de Bayes.
Embora muito útil, essa definição restrita assume a configuração supervisionada e é menos útil ao examinar métodos não supervisionados ou semi-supervisionados. Também não se aplica a muitas abordagens contemporâneas para modelagem generativa profunda . Por exemplo, agora temos modelos generativos implícitos, por exemplo, Redes Adversares Generativas (GANs), que são baseadas em amostragem e nem modelam explicitamente a densidade de probabilidade p(x)
(em vez disso, aprendemos uma medida de divergência por meio da rede discriminadora). Mas nós os chamamos de "modelos generativos", pois são usados para gerar amostras (de alta dimensão [10]).
Uma definição mais ampla e mais fundamental [2] parece igualmente adequada para esta questão geral:
- Modelos discriminativos aprendem a fronteira entre classes.
- Para que eles possam discriminar entre diferentes tipos de instâncias de dados.
- Modelos generativos aprendem a distribuição de dados.
- Para que eles possam gerar novas instâncias de dados.
Mesmo assim, essa questão implica uma espécie de falsa dicotomia [3]. A "dicotomia" generativa-discriminativa é de fato um espectro que você pode interpolar suavemente entre [4].
Como conseqüência, essa distinção se torna arbitrária e confusa, especialmente quando muitos modelos populares não se enquadram perfeitamente em um ou outro [5,6], ou são de fato modelos híbridos (combinações de modelos classicamente "discriminativos" e "generativos"). .
No entanto, ainda é uma distinção altamente útil e comum de se fazer. Podemos listar alguns exemplos claros de modelos generativos e discriminativos, tanto canônicos quanto recentes:
Também há muitos trabalhos interessantes que examinam profundamente a divisão discriminativa-generativa [7] e o espectro [4,8] e até mesmo transformam modelos discriminativos em modelos generativos [9].
No final, as definições estão em constante evolução, especialmente neste campo em rápido crescimento :) É melhor levá-las com uma pitada de sal e talvez até redefini-las para você e para os outros.
Todas as respostas anteriores são ótimas e eu gostaria de acrescentar mais um ponto.
A partir de modelos de algoritmos generativos, podemos derivar qualquer distribuição; embora apenas possamos obter a distribuição condicional P (Y | X) a partir dos modelos de algoritmos discriminativos (ou podemos dizer que eles são úteis apenas para discriminar o rótulo de Y), e é por isso que é chamada de modelo discriminativo. O modelo discriminativo não assume que os X são independentes, dado o Y ($ X_i \ perp X _ {- i} | Y $) e, portanto, geralmente é mais poderoso para calcular essa distribuição condicional.
Meus dois centavos: Abordagens discriminatórias destacam diferenças Abordagens generativas não se concentram nas diferenças; eles tentam construir um modelo que é representativo da classe. Há uma sobreposição entre os dois. Idealmente, ambas as abordagens devem ser usadas: uma será útil para encontrar semelhanças e a outra será útil para encontrar desar semelhanças.
Um modelo de algoritmo generativo aprenderá completamente com os dados de treinamento e preverá a resposta.
Um trabalho de algoritmo discriminativo é apenas para classificar ou diferenciar entre os dois resultados.
Este artigo me ajudou muito na compreensão do conceito.
Em suma,
Algum bom material de leitura: probabilidade condicional , PDF em conjunto