Tecniche d’inferenza approssimata

Introduciamo il nuovo concetto di inferenza approssimata, contrapposto rispetto all’inferenza trattata fin’ora—l’inferenza esatta—che presenta un costo computazionale molto elevato.

Probabilistic sampling

Esempio: estraendo 20 volte una pallina dalla vasca in figura, dove vengono riportate le percentuali esatte dei colori delle palline

saremo in grado di approssimare la distribuzione di probabilità del colore delle palline, trovando per esempio

{\bf\widehat{P}}=\left\langle\dfrac{8}{20},\,\dfrac{5}{20},\,\dfrac{7}{20}\right\rangle=\langle0.4,\,0.25,\,0.35\rangle

Che approssima piuttosto bene l’effettiva distribuzione di probabilità del problema.

Tratteremo le seguenti classi di algoritmi di probabilistic sampling e le relative tecniche indicate di fianco:

  • Direct sampling: prior sampling, rejection sampling, likelihood weighting
  • Markov Chain Monte Carlo (MCMC): gibbs sampling

Prior sampling (esempi a priori)

Il prior sampling (esempi a priori) viene utilizzato per generare degli esempi dalla distribuzione di probabilità di un problema. Ripetendo tale procedimento N volte si arriverà a una definizione empirica della probabilità dei singoli eventi. Questa tecnica si affida sul fatto che la distribuzione di probabilità utilizzata sia sensata.

Esempio: ipotizzando di avere una rete come in figura, con le relative CPT

E struttura topologica

[\text{Cloudy, Sprinkler, Rain, GrassWet}]

Dopo aver generato N esempi dalla distribuzione di probabilità della rete, possiamo aspettarci che la probabilità P(c,\,\neg s,\,r,\,g) sarà pari a

[\text{True, False, True, True}]

Circa il 32.4\% delle volte, infatti si ha

\begin{aligned}
P(c,\,\neg s,\,r,\,g)&=P(g \mid r,\,\neg s)P(r \mid c)P(\neg s\mid c)P(c)\\

&=0.9\cdot 0.8\cdot (1-0.1)\cdot 0.5\\

&=0.324
\end{aligned}

Esercizio: trovare la probabilità associata alla generazione seguente

[\text{True, True, True, False}]
Soluzione

Stiamo cercando la probabilità P(c,\,s,\,r,\,\neg g), che possiamo calcolare dalle CPT, ed è pari a

\begin{aligned}
P(c,\,s,\,r,\,\neg g)&=P(\neg g\mid r,\,s)P(r\mid c)P(s\mid c)P(c)\\

&=(1-0.95)\cdot0.8\cdot0.1\cdot0.5\\

&=0.002
\end{aligned}

Rejection sampling (esempi rifiutati)

Assumiamo di avere delle informazioni (evidence) {\bf e} sul problema e vogliamo calcolare {\bf P}(X \mid {\bf e}). L’idea di base parte da quella del prior sampling, generando anche in questo caso una lista di esempi, ma considerando questa volta soltanto gli esempi che non contraddiscono le informazioni che già abbiamo, rifiutando (rejecting) tutti gli altri che non sono consistenti con tali informazioni.

Esempio: supponiamo di voler trovare la distribuzione di probabilità {\bf P}(\text{Rain}\mid\text{Sprinkler=true}) basandoci su 100 esempi. Da tali esempi sappiamo che 73/100 volte è uscito \text{Sprinkler=False}, mentre delle restanti 27 sappiamo che 8/100 hanno \text{Rain=True}, mentre le altre 19/100 volte è uscito \text{Rain=False}. Stimare la distribuzione di probabilità richiesta.

Soluzione

Poiché vogliamo verificare quante volte piove, dato che \text{Sprinkler=True}, tutti gli esempi in cui \text{Sprinkler=False} verranno rifiutati, di fatto non utilizzandoli nel calcolo.

A questo punto dobbiamo dunque calcolare la probabilità per i diversi valori di \text{Rain}. Supponiamo dapprima \text{Rain}=\text{True}. Sappiamo ora che tale risultato è uscito 8 volte.

Supponendo ora \text{Rain}=\text{False} sappiamo invece che tale risultato è uscito 19 volte. Possiamo dunque esprimere la probabilità richiesta nel modo seguente

{\bf P}(\text{Rain}\mid\text{Sprinkler=true})=\alpha\langle8,\,19\rangle

Da cui è poi necessario trovare il valore di \alpha per normalizzare l’intervallo di probabilità

\alpha=\dfrac{1}{8+19}\approx0.037\Rightarrow 0.037\langle8,\,19\rangle=\langle0.296,\,0.703\rangle

Nota: la somma tra le probabilità non è esattamente unitaria a causa dell’approssimazione del valore di \alpha.

Esercizio: Trovare la probabilità {\bf P}(\text{Rain}\mid\text{Cloudy=False}). Siamo a conoscenza dei seguenti dati su 100 esempi:

  • 90/100:\text{Cloudy=True}
  • 4/100:\text{Rain=True}
  • 6/100:\text{Rain=False}
Soluzione

Scartiamo tutti gli esempi in contraddizione con le informazioni che abbiamo. Ci rimane

{\bf P}(\text{Rain}\mid\text{Cloudy=False})=\alpha\langle4,\,6\rangle

Trovando \alpha=0.1 otteniamo poi

{\bf P}(\text{Rain}\mid\text{Cloudy=False})=\langle0.4,\,0.6\rangle

Likelihood weighting (pesato sulla probabilità)

Il problema che nasce dal rejection sampling è che, come visto negli esercizi, spesso molti degli esempi vengono semplicemente scartati senza essere utilizzati. Vogliamo dunque trovare un metodo per utilizzare anche tali esempi.

L’idea del likelihood weighting è dunque quella di generare degli esempi che siano in accordo che le informazioni disponibili. Per generare tali esempi dobbiamo dunque fissare i valori delle variabili evidence, cosicché la rete generi ulteriori esempi nei quali tali valori sulle quali stiamole variabili su cui non abbiamo alcuna informazione, e pesarli poi ognuno per la propria probabilità di verificarsi.

Esempio: considerando la seguente rete

Dove abbiamo fissato a \text{Vero} i valori di \text{Cloudy} e \text{GrassWet}. Considerando come ordine topologico delle variabili

[\text{Cloudy, Sprinkler, Rain, GrassWet}]

trovare la probabilità {\bf P}(\text{Rain} \mid c,\,g) assumendo {\bf P}(\text{Sprinkler}\mid c)=\text{Falso} e {\bf P}(\text{Rain}\mid c)=\text{Vero}.

Soluzione

La probabilità {\bf P}(\text{Rain} \mid c,\,g)={\bf P}(r \mid c,\,g) può essere scomposta in

{\bf P}(r \mid c,\,g)=P(g\mid r,\,s)\cancel{P(r\mid c)}\cancel{P(s\mid c)}P(c)

Poiché i valori r e s non sono stati fissati non li utilizziamo nel calcolo finale della probabilità.

Ci è stato inoltre detto che {\bf P}(\text{Sprinkler}\mid c)=\text{Falso} e {\bf P}(\text{Rain}\mid c)=\text{Vero}, la probabilità P(g\mid r,\,s) che dobbiamo utilizzare è in realtà

P(g \mid r,\,\neg s)=0.9

Poiché P(c)=0.5 il peso finale sarà dato da

w=0.9\cdot0.5=0.45

Che rappresenta la probabilità di ottenere

[\text{True, False, True, True}]

Esercizio: in riferimento al grafo dell’esempio precedente, considerando che sono stati generati 10 esempi diversi ed è stata ottenuta la seguente tabella dei pesi

Trovare le probabilità P(r\mid c,\,g) e P(\neg r,\mid c,\,g).

Soluzione

Per trovare P(r\mid c,\,g), avendo già i valori dei pesi, non ci resta che trovare i casi in cui \text{Rain=Vero}

\begin{aligned}
P(r\mid c,\,g)&=\dfrac{\displaystyle\sum_r w}{\displaystyle\sum w}\\[10pt]

&=\dfrac{0.45+0.475+0.45+0.45+0.45+0.475+0.45+0.45}{0.45+0.475+0.05+0.45+0.45+0.45+0.475+0.45+0.05+0.45}\\[10pt]

&\approx0.9733
\end{aligned}

Per quanto riguarda P(\neg r,\mid c,\,g) invece dobbiamo trovare i casi in cui \text{Rain=Falso}, ovvero

\begin{aligned}
P(\neg r\mid c,\,g)&=\dfrac{\displaystyle\sum_{\neg r} w}{\displaystyle\sum w}\\[10pt]

&=\dfrac{0.05+0.05}{0.45+0.475+0.05+0.45+0.45+0.45+0.475+0.45+0.05+0.45}\\[10pt]

&\approx0.0267
\end{aligned}

Gibbs sampling (esempi di Gibbs)

Iniziando da uno stato arbitrario, date delle informazioni (evidence) {\bf e}, l’algoritmo genera lo stato successivo tramite l’utilizzo di una variabile X_i non inclusa in {\bf e}, dato il suo Markov blanket.

Tale procedimento viene ripetuto più volte per cercare di approssimare la distribuzione di probabilità, mantenendo fissi i valori di {\bf e}.

Esempio:

Se hai trovato errori o informazioni mancanti scrivi a:
giacomo.dandria@esercizistem.com

Se hai trovato errori o informazioni mancanti scrivi a:
giacomo.dandria@esercizistem.com

Questa pagina è stata utile?
No
Torna in alto