Per favore, aiutami a capire la differenza tra un algoritmo generativo e uno discriminatorio , tenendo presente che sono solo un principiante.
Per favore, aiutami a capire la differenza tra un algoritmo generativo e uno discriminatorio , tenendo presente che sono solo un principiante.
Risposte:
Supponiamo che tu abbia dati di input x
e desideri classificarli in etichette y
. Un modello generativo apprende la distribuzione di probabilità congiuntap(x,y)
e un modello discriminante apprende la distribuzione di probabilità condizionalep(y|x)
- che dovresti leggere come "la probabilità di y
dare x
" .
Ecco un esempio davvero semplice. Supponiamo di avere i seguenti dati nel modulo (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 impieghi qualche minuto a fissare queste due matrici, capirai la differenza tra le due distribuzioni di probabilità.
La distribuzione p(y|x)
è la distribuzione naturale per classificare un dato esempio x
in una classe y
, motivo per cui gli algoritmi che lo modellano direttamente sono chiamati algoritmi discriminatori. Modello di algoritmi generativi p(x,y)
, che possono essere trasformati p(y|x)
applicando la regola di Bayes e quindi utilizzati per la classificazione. Tuttavia, la distribuzione p(x,y)
può essere utilizzata anche per altri scopi. Ad esempio, è possibile utilizzare p(x,y)
per generare(x,y)
coppie probabili .
Dalla descrizione sopra, potresti pensare che i modelli generativi siano più generalmente utili e quindi migliori, ma non è così semplice. Questo articolo è un riferimento molto popolare in materia di classificatori discriminatori e generativi, ma è piuttosto pesante. L'essenza generale è che i modelli discriminatori generalmente superano i modelli generativi nei compiti di classificazione.
p(y|x)
cui gli algoritmi che lo modellano sono chiamati "modelli discriminatori".
Un algoritmo generativo modella il modo in cui i dati sono stati generati per classificare un segnale. Pone la domanda: in base ai presupposti della mia generazione, quale categoria ha più probabilità di generare questo segnale?
Un algoritmo discriminatorio non si preoccupa di come sono stati generati i dati, ma semplicemente classifica un determinato segnale.
Immagina che il tuo compito sia quello di classificare un discorso in una lingua.
Puoi farlo sia:
o
Il primo è l' approccio generativo e il secondo è l' approccio discriminatorio .
Controllare questo riferimento per maggiori dettagli: http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf .
In pratica, i modelli sono usati come segue.
Nei modelli discriminatori , per prevedere l'etichetta y
dall'esempio di formazione x
, è necessario valutare:
che sceglie semplicemente quale sia la classe più probabile da y
considerare x
. È come se stessimo cercando di modellare il confine decisionale tra le classi . Questo comportamento è molto chiaro nelle reti neurali, dove i pesi calcolati possono essere visti come una curva a forma complessa che isola gli elementi di una classe nello spazio.
Ora, usando la regola di Bayes, sostituiamo il nell'equazione con . Dato che sei solo interessato all'arg max , puoi cancellare il denominatore, che sarà lo stesso per tutti y
. Quindi, ti rimane
quale è l'equazione che usi nei modelli generativi .
Mentre nel primo caso avevi la distribuzione di probabilità condizionale p(y|x)
, che modellava il confine tra le classi, nel secondo avevi la distribuzione di probabilità congiunta p(x, y)
, da allora p(x | y) p(y) = p(x, y)
, che modella esplicitamente la distribuzione effettiva di ogni classe .
Con la funzione di distribuzione di probabilità congiunta, data a y
, puoi calcolare ("generare") i rispettivi x
. Per questo motivo, sono chiamati modelli "generativi".
Ecco la parte più importante delle note di CS299 (di Andrew Ng) relative all'argomento, che mi aiuta davvero a capire la differenza tra algoritmi di apprendimento discriminativo e generativo .
Supponiamo di avere due classi di animali, elephant ( y = 1
) e dog ( y = 0
). E x è il vettore caratteristica degli animali.
Dato un set di addestramento, un algoritmo come la regressione logistica o l'algoritmo perceptron (fondamentalmente) cerca di trovare una linea retta - cioè un confine decisionale - che separa elefanti e cani. Quindi, per classificare un nuovo animale come elefante o cane, controlla da che parte del confine decisionale cade e fa la sua previsione di conseguenza. Chiamiamo questi algoritmi di apprendimento discriminante .
Ecco un approccio diverso. Innanzitutto, guardando gli elefanti, possiamo costruire un modello di come sono gli elefanti. Quindi, guardando i cani, possiamo costruire un modello separato di come sono i cani. Infine, per classificare un nuovo animale, possiamo abbinare il nuovo animale al modello di elefante e abbinarlo al modello di cane, per vedere se il nuovo animale assomiglia più agli elefanti o più ai cani che avevamo visto nel set di addestramento . Chiamiamo questi algoritmi di apprendimento generativo .
In generale, esiste una pratica nella comunità dell'apprendimento automatico per non imparare qualcosa che non si desidera. Ad esempio, si consideri un problema di classificazione in cui il proprio obiettivo è quello di assegnare etichette y a un dato input x. Se usiamo il modello generativo
p(x,y)=p(y|x).p(x)
dobbiamo modellare p (x) che è irrilevante per l'attività in corso. Limitazioni pratiche come la scarsità dei dati ci costringeranno a modellare p(x)
con alcune assunzioni di indipendenza deboli. Pertanto, utilizziamo intuitivamente modelli discriminatori per la classificazione.
Un ulteriore punto informativo che va bene con la risposta di StompChicken sopra.
La differenza fondamentale tra modelli discriminatori e modelli generativi è:
I modelli discriminatori apprendono il confine (duro o morbido) tra le classi
I modelli generativi modellano la distribuzione di singole classi
Modificare:
Un modello generativo è quello che può generare dati . Modella sia le funzionalità che la classe (ovvero i dati completi).
Se modelliamo P(x,y)
: posso usare questa distribuzione di probabilità per generare punti dati - e quindi tutti i modelli di algoritmi P(x,y)
sono generativi.
Per esempio. di modelli generativi
Modelli Naive Bayes P(c)
e P(d|c)
- dov'è c
la classe ed d
è il vettore delle caratteristiche.
Anche, P(c,d) = P(c) * P(d|c)
Quindi, Naive Bayes in alcuni modelli di forma, P(c,d)
Bayes Net
Markov Nets
Un modello discriminante è quello che può essere utilizzato solo per discriminare / classificare i punti dati . In P(y|x)
questi casi devi solo modellare (ad es. Probabilità di classe dato il vettore di funzione).
Per esempio. di modelli discriminatori:
regressione logistica
Reti neurali
Campi casuali condizionali
In generale, i modelli generativi devono modellare molto più dei modelli discriminatori e quindi a volte non sono così efficaci. È un dato di fatto, la maggior parte degli algoritmi di apprendimento non supervisionato (non sicuro se tutti) come il clustering ecc. Possono essere chiamati generativi, poiché modellano P(d)
(e non ci sono classi: P)
PS: parte della risposta è presa dalla fonte
Molte delle risposte qui si basano sulla definizione matematica ampiamente usata [1]:
- I modelli discriminatori apprendono direttamente la distribuzione predittiva condizionale
p(y|x)
.- I modelli generativi apprendono la distribuzione congiunta
p(x,y)
(o meglio,p(x|y)
ep(y)
).
- La distribuzione predittiva
p(y|x)
può essere ottenuta con la regola di Bayes.
Sebbene molto utile, questa definizione ristretta assume l'impostazione supervisionata ed è meno utile quando si esaminano metodi non supervisionati o semi-supervisionati. Inoltre, non si applica a molti approcci contemporanei per la modellazione generativa profonda . Ad esempio, ora abbiamo modelli generativi impliciti, ad esempio reti generative contraddittorie (GAN), che sono basate sul campionamento e non modellano nemmeno esplicitamente la densità di probabilità p(x)
(invece apprendono una misura di divergenza tramite la rete dei discriminatori). Ma li chiamiamo "modelli generativi" poiché vengono utilizzati per generare campioni (10) ad alta dimensione.
Una definizione più ampia e fondamentale [2] sembra ugualmente adatta a questa domanda generale:
- I modelli discriminatori apprendono il confine tra le classi.
- Quindi possono discriminare tra diversi tipi di istanze di dati.
- I modelli generativi apprendono la distribuzione dei dati.
- Quindi possono generare nuove istanze di dati.
Anche così, questa domanda implica in qualche modo una falsa dicotomia [3]. La "dicotomia" generativa-discriminatoria è in effetti uno spettro che si può persino interpolare uniformemente tra [4].
Di conseguenza, questa distinzione diventa arbitraria e confusa, specialmente quando molti modelli popolari non rientrano ordinatamente nell'uno o nell'altro [5,6], o in realtà sono modelli ibridi (combinazioni di modelli classicamente "discriminatori" e "generativi") .
Tuttavia è ancora una distinzione molto utile e comune da fare. Possiamo elencare alcuni esempi chiari di modelli generativi e discriminatori, sia canonici che recenti:
C'è anche un sacco di lavoro interessante che esamina in profondità il divario generativo-discriminatorio [7] e lo spettro [4,8], e persino trasformando i modelli discriminatori in modelli generativi [9].
Alla fine, le definizioni sono in continua evoluzione, specialmente in questo campo in rapida crescita :) È meglio prenderle con un pizzico di sale e forse anche ridefinirle per te e gli altri.
Tutte le risposte precedenti sono fantastiche e vorrei inserire un altro punto.
Dai modelli di algoritmo generativo, possiamo derivare qualsiasi distribuzione; mentre possiamo solo ottenere la distribuzione condizionale P (Y | X) dai modelli di algoritmo discriminativo (o possiamo dire che sono utili solo per discriminare l'etichetta di Y), ed è per questo che si chiama modello discriminativo. Il modello discriminativo non presuppone che le X siano indipendenti dato Y ($ X_i \ perp X _ {- i} | Y $) e quindi di solito è più potente per calcolare quella distribuzione condizionale.
I miei due centesimi: gli approcci discriminatori evidenziano le differenze Gli approcci generativi non si concentrano sulle differenze; provano a costruire un modello rappresentativo della classe. C'è una sovrapposizione tra i due. Idealmente entrambi gli approcci dovrebbero essere usati: uno sarà utile per trovare somiglianze e l'altro sarà utile per trovare dis-somiglianze.
Un modello di algoritmo generativo imparerà completamente dai dati di addestramento e predirà la risposta.
Un lavoro di algoritmo discriminatorio è solo quello di classificare o differenziare tra i 2 risultati.
Questo articolo mi ha aiutato molto nella comprensione del concetto.
In sintesi,
Un buon materiale di lettura: probabilità condizionata , PDF congiunto