Dall’Active Inference all’architettura di una AI

Dall’Active Inference all’architettura di una AI

Condividi con i tuoi amici...

Dall’Active Inference all’architettura di una AI: modelli generativi, discriminativi, encoder-decoder, apprendimento, inferenza e previsione

L’Active Inference parte da una difficoltà elementare ma fondamentale: un agente non conosce direttamente lo stato reale del mondo. Conosce soltanto ciò che i suoi sensori gli permettono di osservare.

Un robot non riceve direttamente la propria posizione nello spazio: riceve immagini, distanze misurate da un lidar, accelerazioni, velocità delle ruote. Un medico non osserva direttamente una malattia: osserva sintomi, immagini diagnostiche e valori di laboratorio. Un sistema economico non osserva direttamente uno “stato dell’economia”: dispone di serie temporali, prezzi, volumi e indicatori.

La distinzione fondamentale è quindi:

\[ \boxed{ \text{stato nascosto del sistema} \neq \text{osservazione disponibile} } \]

Indicheremo lo stato nascosto con \(s\) e l’osservazione con \(o\).

Il problema centrale dell’agente diventa:

\[ \boxed{ p(s\mid o) } \]

cioè:

data l’osservazione che ho ricevuto, quali stati del mondo sono plausibili e con quale probabilità?

Da questa domanda nasce un collegamento molto naturale fra Active Inference, statistica bayesiana e architetture dell’intelligenza artificiale. In particolare, emergono due possibili strategie: costruire una macchina che impari direttamente \(p(s\mid o)\), oppure costruire un modello di come gli stati producono osservazioni e utilizzare quel modello per risalire agli stati nascosti.

Sono, rispettivamente, le prospettive discriminativa e generativa.

1. Stato reale, osservazione e stato interno del modello

Prima di parlare di reti neurali è utile distinguere tre livelli.

  1. Lo stato fisico del sistema: ciò che realmente accade nel mondo.
  2. L’osservazione: il segnale che arriva ai sensori.
  3. Lo stato latente del modello: la rappresentazione interna utilizzata dalla AI per spiegare l’osservazione.

Supponiamo, per esempio, che un robot si muova in una stanza. Il suo stato fisico potrebbe essere:

\[ s_t^{\mathrm{real}} = (x_t,y_t,\theta_t,v_t). \]

Il robot non riceve direttamente questi numeri. Riceve:

\[ o_t= (\text{camera},\text{lidar},\text{IMU},\text{encoder delle ruote}). \]

Una rete neurale può allora costruire una rappresentazione interna:

\[ z_t\in\mathbb R^d. \]

Questo \(z_t\) può rappresentare, esplicitamente o implicitamente, informazioni su posizione, orientamento, ostacoli, oggetti e dinamica.

È importante notare che:

\[ z_t \neq s_t^{\mathrm{real}} \]

in senso necessariamente letterale.

Lo stato latente è una variabile del modello. È utile se permette di spiegare le osservazioni, prevedere il futuro e scegliere azioni appropriate.

2. Il problema bayesiano dell’Active Inference

Supponiamo di possedere un modello che specifica:

\[ p(s) \]

e:

\[ p(o\mid s). \]

Il primo è il prior: descrive quali stati riteniamo plausibili prima di ricevere l’osservazione.

Il secondo è la likelihood: descrive quali osservazioni ci aspettiamo se il sistema si trova nello stato \(s\).

Possiamo quindi costruire:

\[ \boxed{ p(o,s)=p(o\mid s)p(s) } \]

che costituisce il modello generativo congiunto.

L’inferenza bayesiana permette di invertire il processo:

\[ \boxed{ p(s\mid o) = \frac{p(o\mid s)p(s)} {p(o)} } \]

dove:

\[ p(o) = \int p(o,s)\,ds. \]

In un modello discreto:

\[ p(o) = \sum_s p(o,s). \]

Il problema è che nei modelli complessi questo integrale o questa somma possono diventare enormemente costosi.

3. Due strategie dell’intelligenza artificiale

A questo punto possiamo affrontare lo stesso problema in due modi molto differenti.

Approccio discriminativo

Possiamo imparare direttamente:

\[ \boxed{ q_\phi(s\mid o) } \]

cioè costruire una rete che trasformi un’osservazione nella distribuzione degli stati plausibili.

La direzione è:

\[ \boxed{ o\longrightarrow s } \]

Approccio generativo

Possiamo invece imparare:

\[ \boxed{ p_\theta(o\mid s) } \]

e:

\[ p(s). \]

La direzione primaria diventa:

\[ \boxed{ s\longrightarrow o. } \]

Successivamente usiamo Bayes per effettuare il percorso inverso.

La differenza può essere riassunta così:

Discriminativo Generativo
\(q(s\mid o)\) \(p(o,s)\)
osservazione → stato stato → osservazione
riconoscere modellare come vengono prodotti i dati
frontiera decisionale distribuzione dei dati
tipicamente più diretto tipicamente più ricco ma più impegnativo

4. Un esempio: cane o gatto

Supponiamo di avere immagini \(o\) e una variabile:

\[ s\in\{\text{cane},\text{gatto}\}. \]

Un modello discriminativo cerca direttamente:

\[ p(s\mid o). \]

Deve imparare quali caratteristiche permettono di separare efficacemente le due categorie.

Se per un errore nel dataset quasi tutti i cani indossassero un collare e quasi nessun gatto lo indossasse, una rete discriminativa potrebbe scoprire che la presenza del collare è una caratteristica estremamente efficace per la classificazione.

Non è obbligata a costruire una descrizione completa di ciò che rende un animale un cane.

Un modello generativo cerca invece di rappresentare:

\[ p(o\mid s=\text{cane}) \]

e:

\[ p(o\mid s=\text{gatto}). \]

La domanda diventa:

se lo stato fosse “cane”, quali immagini mi aspetterei di osservare?

e analogamente per il gatto.

Il problema generativo è quindi generalmente più ricco del semplice problema di separazione delle classi.

5. Perché l’Active Inference richiede un modello generativo

Se il nostro unico obiettivo fosse classificare un dato potremmo accontentarci di:

\[ q(s\mid o). \]

Ma un agente deve affrontare domande più complesse:

  • che cosa dovrei osservare se la mia ipotesi fosse corretta?
  • che cosa potrebbe accadere fra pochi secondi?
  • che cosa osserverei se compissi una determinata azione?
  • quale osservazione potrebbe permettermi di distinguere due ipotesi?
  • quali conseguenze potrebbe avere una sequenza di azioni?

Per rispondere a queste domande serve poter far funzionare il modello in avanti:

\[ s\rightarrow o. \]

E, nel caso dinamico:

\[ s_t,a_t \rightarrow s_{t+1} \rightarrow o_{t+1}. \]

Un modello generativo costituisce quindi qualcosa di molto simile a un modello interno del mondo.

6. Il modello discriminativo può però rendere l’inferenza molto più veloce

Potremmo utilizzare soltanto:

\[ p_\theta(o\mid s)p(s) \]

e calcolare ogni volta:

\[ p_\theta(s\mid o) = \frac{ p_\theta(o\mid s)p(s) }{ \int p_\theta(o\mid s)p(s)\,ds }. \]

Ma questo calcolo può risultare proibitivo.

Introduciamo allora una rete:

\[ \boxed{ q_\phi(s\mid o) \approx p_\theta(s\mid o). } \]

Otteniamo così una combinazione molto potente:

\[ \boxed{ \text{modello generativo} + \text{rete di inferenza} } \]

Il modello generativo descrive come potrebbero essere prodotti i dati.

La rete di inferenza impara invece il percorso inverso:

\[ o\rightarrow s. \]

È il principio dell’amortized inference: invece di risolvere un nuovo problema di ottimizzazione da zero per ogni osservazione, addestriamo una rete affinché impari a produrre rapidamente una buona approssimazione del posterior.

7. Perché compare la Variational Free Energy

Vogliamo che:

\[ q_\phi(s\mid o) \]

sia vicina a:

\[ p_\theta(s\mid o). \]

Potremmo misurare la differenza con:

\[ D_{\mathrm{KL}} \left[ q_\phi(s\mid o) \Vert p_\theta(s\mid o) \right]. \]

Ma il posterior contiene l’evidenza:

\[ p_\theta(o) = \int p_\theta(o,s)\,ds. \]

Introduciamo quindi:

\[ \boxed{ F = \mathbb E_{q_\phi(s\mid o)} \left[ \ln q_\phi(s\mid o) – \ln p_\theta(o,s) \right]. } \]

Utilizzando Bayes:

\[ p_\theta(o,s) = p_\theta(s\mid o)p_\theta(o), \]

otteniamo:

\[ \boxed{ F = D_{\mathrm{KL}} \left[ q_\phi(s\mid o) \Vert p_\theta(s\mid o) \right] – \ln p_\theta(o). } \]

Durante l’inferenza \(o\) è fissato, quindi:

\[ -\ln p_\theta(o) \]

è costante rispetto a \(q\).

Perciò:

\[ \boxed{ \arg\min_q F = \arg\min_q D_{\mathrm{KL}} [q\Vert p(s\mid o)]. } \]

La Variational Free Energy permette quindi di avvicinare la rete di inferenza al posterior senza dover calcolare esplicitamente la normalizzazione del posterior.

8. Dal principio matematico all’architettura della rete

Le equazioni precedenti suggeriscono direttamente una possibile architettura.

Abbiamo bisogno di un componente capace di trasformare:

\[ o\rightarrow q_\phi(s\mid o) \]

e di un componente capace di trasformare:

\[ s\rightarrow p_\theta(o\mid s). \]

Queste due funzioni corrispondono naturalmente ai concetti di:

\[ \boxed{\text{encoder}} \]

e:

\[ \boxed{\text{decoder}}. \]

9. Che cosa fa un encoder?

L’encoder riceve dati ad alta dimensionalità:

\[ o \]

e li trasforma in una rappresentazione interna:

\[ z. \]

Possiamo scrivere:

\[ z=f_\phi(o). \]

Nel caso probabilistico l’encoder non produce necessariamente un singolo punto. Può produrre i parametri di una distribuzione:

\[ \mu_\phi(o) \]

e:

\[ \Sigma_\phi(o). \]

Definiamo allora:

\[ \boxed{ q_\phi(s\mid o) = \mathcal N \left( s; \mu_\phi(o), \Sigma_\phi(o) \right). } \]

L’encoder sta dicendo:

date queste osservazioni, penso che lo stato nascosto sia probabilmente in questa regione dello spazio degli stati, con questa incertezza.

10. Che cosa fa un decoder?

Il decoder svolge il percorso opposto.

Riceve:

\[ s \]

e costruisce una previsione delle osservazioni:

\[ \hat o. \]

Nel caso probabilistico rappresenta:

\[ \boxed{ p_\theta(o\mid s). } \]

Per esempio:

\[ p_\theta(o\mid s) = \mathcal N \left( o; g_\theta(s), \Sigma_o \right). \]

La funzione:

\[ g_\theta(s) \]

rappresenta ciò che il modello si aspetta di osservare quando lo stato nascosto è \(s\).

11. Autoencoder e Variational Autoencoder

Un autoencoder classico realizza:

\[ o \longrightarrow z \longrightarrow \hat o. \]

L’encoder comprime:

\[ z=f_\phi(o), \]

mentre il decoder ricostruisce:

\[ \hat o=g_\theta(z). \]

L’addestramento cerca di ridurre:

\[ L_{\mathrm{rec}} = d(o,\hat o). \]

Il Variational Autoencoder introduce invece una rappresentazione probabilistica:

\[ q_\phi(s\mid o). \]

Il modello generativo è:

\[ p_\theta(o,s) = p_\theta(o\mid s)p(s). \]

L’ELBO assume la forma:

\[ \boxed{ \mathcal L_{\mathrm{ELBO}} = \mathbb E_{q_\phi(s\mid o)} [ \ln p_\theta(o\mid s) ] – D_{\mathrm{KL}} [ q_\phi(s\mid o) \Vert p(s) ]. } \]

Poiché:

\[ F=-\mathcal L_{\mathrm{ELBO}}, \]

massimizzare l’ELBO equivale a minimizzare la Variational Free Energy.

12. Encoder-decoder quando i dati sono sequenze

Il problema diventa ancora più interessante quando l’osservazione non è un singolo dato, ma una sequenza:

\[ o_1,o_2,\ldots,o_T. \]

Pensiamo a:

  • una frase;
  • una sequenza audio;
  • un video;
  • misure di un robot;
  • una serie finanziaria;
  • un segnale biologico.

L’encoder deve allora sintetizzare non soltanto l’osservazione presente, ma anche il suo contesto temporale.

Una soluzione classica consiste nell’utilizzare una RNN, una GRU o una LSTM.

13. Encoder RNN

Una rete ricorrente aggiorna a ogni passo uno stato nascosto:

\[ \boxed{ h_t = f_\phi(o_t,h_{t-1}). } \]

Lo stato:

\[ h_t \]

contiene una sintesi della storia:

\[ o_1,\ldots,o_t. \]

Dopo aver letto tutta la sequenza:

\[ h_T \]

può essere utilizzato come vettore di contesto:

\[ c=h_T. \]

Abbiamo quindi:

\[ (o_1,o_2,\ldots,o_T) \longrightarrow c. \]

Una sequenza di lunghezza variabile viene trasformata in una rappresentazione di dimensione fissa.

14. Decoder RNN

Il decoder riceve il vettore di contesto e genera una nuova sequenza.

Possiamo scrivere:

\[ h^{(d)}_k = g_\theta \left( h^{(d)}_{k-1}, y_{k-1}, c \right). \]

Successivamente:

\[ p(y_k\mid y_{ A ogni passo il decoder utilizza:

  • la rappresentazione prodotta dall’encoder;
  • il proprio stato precedente;
  • l’output precedente.

La generazione avviene quindi ricorsivamente:

\[ y_1 \rightarrow y_2 \rightarrow y_3 \rightarrow\cdots. \]

15. Il problema del singolo vettore di contesto

Se la sequenza è molto lunga può essere difficile comprimere tutta l’informazione in:

\[ c=h_T. \]

Il vettore di contesto rischia di diventare un collo di bottiglia.

Il meccanismo di attenzione permette al decoder di accedere direttamente ai diversi stati prodotti dall’encoder:

\[ h_1,h_2,\ldots,h_T. \]

A ogni passo di decodifica calcola pesi:

\[ \alpha_{k,t} \]

e costruisce:

\[ \boxed{ c_k = \sum_t \alpha_{k,t}h_t. } \]

In questo modo il decoder non deve ricordare tutto attraverso un solo vettore: può selezionare dinamicamente le parti della sequenza più rilevanti.

16. Da encoder-decoder a belief state

L’idea dell’encoder temporale è particolarmente importante nell’Active Inference.

Un agente non dovrebbe inferire:

\[ p(s_t\mid o_t) \]

utilizzando soltanto l’ultima osservazione, quando dispone di una storia completa.

La quantità corretta è più simile a:

\[ \boxed{ p(s_t\mid o_{1:t},a_{1:t-1}). } \]

L’encoder temporale può sintetizzare:

\[ (o_1,a_1,o_2,a_2,\ldots,o_t) \]

in uno stato interno:

\[ h_t. \]

Da questo stato possiamo ricavare:

\[ \mu_t=f_\mu(h_t), \] \[ \Sigma_t=f_\Sigma(h_t), \]

e quindi:

\[ \boxed{ q_\phi(s_t\mid o_{\leq t},a_{ Lo stato nascosto della RNN e lo stato probabilistico \(s_t\) non sono necessariamente la stessa cosa.

Possiamo interpretare \(h_t\) come memoria computazionale della rete e \(q(s_t)\) come la credenza probabilistica esplicita prodotta dalla rete.

17. Una possibile architettura per la percezione di un robot

Supponiamo che il robot disponga di telecamera, lidar e IMU.

Possiamo avere:

CAMERA ──→ CNN / Vision Transformer ─┐
                                     │
LIDAR ───→ encoder dedicato ─────────┼──→ FUSION ──→ RNN/GRU/Transformer
                                     │                       │
IMU ─────→ MLP ──────────────────────┘                       ↓
                                                        belief state
                                                        q(s_t)

L’output potrebbe essere:

\[ \mu_t= (\mu_x,\mu_y,\mu_\theta,\mu_v) \]

e una matrice di covarianza:

\[ \Sigma_t. \]

Quindi:

\[ q(s_t) = \mathcal N(\mu_t,\Sigma_t). \]

La rete non restituisce soltanto:

“il robot è qui”.

Restituisce:

“sulla base di tutto ciò che ho osservato, questa è la distribuzione delle posizioni che ritengo plausibili”.

18. Il modello osservativo: prevedere ciò che i sensori dovrebbero vedere

Parallelamente possiamo costruire:

\[ \boxed{ p_\theta(o_t\mid s_t). } \]

Lo stato inferito viene passato a uno o più decoder.

                     s_t
                      │
        ┌─────────────┼─────────────┐
        ↓             ↓             ↓
 camera decoder   lidar decoder   IMU decoder
        ↓             ↓             ↓
   camera attesa  lidar atteso   IMU attesa

Possiamo quindi confrontare:

\[ o_t \]

con:

\[ \hat o_t. \]

La differenza:

\[ \epsilon_t = o_t-\hat o_t \]

costituisce un prediction error.

19. Perché il prediction error è utile per l’inferenza

Supponiamo che:

\[ o = g_\theta(s)+\varepsilon \]

con:

\[ \varepsilon \sim \mathcal N(0,\Sigma_o). \]

La likelihood è:

\[ p(o\mid s) = \mathcal N (o;g_\theta(s),\Sigma_o). \]

Il negativo della log-likelihood contiene:

\[ \boxed{ \frac{1}{2} (o-g_\theta(s))^T \Sigma_o^{-1} (o-g_\theta(s)). } \]

Definendo la precisione:

\[ \Pi_o=\Sigma_o^{-1}, \]

otteniamo un prediction error pesato per l’affidabilità della misura.

Un sensore molto rumoroso possiede grande varianza e quindi piccola precisione. Il suo errore deve influenzare meno la credenza.

20. Amortized inference e inferenza iterativa

Esistono almeno due modi di utilizzare la rete per ottenere \(q(s\mid o)\).

Amortized inference

Una rete produce immediatamente:

\[ q_\phi(s\mid o). \]

La procedura è:

\[ o \rightarrow \text{encoder} \rightarrow q_\phi(s\mid o). \]

È molto veloce.

Inferenza iterativa

Possiamo invece partire da:

\[ q_0(s) \]

e correggerla ripetutamente:

\[ q_0 \rightarrow q_1 \rightarrow q_2 \rightarrow \cdots \rightarrow q^*. \]

Se parametrizziamo la credenza tramite \(\mu\):

\[ \boxed{ \mu^{(k+1)} = \mu^{(k)} – \eta \frac{\partial F}{\partial\mu}. } \]

Il modello generativo viene usato continuamente per confrontare previsioni e osservazioni.

21. Le due strategie possono essere combinate

Un sistema pratico può utilizzare:

\[ \boxed{ \text{encoder rapido} + \text{raffinamento mediante modello generativo}. } \]

Per esempio:

osservazione
     ↓
encoder
     ↓
q_0(s)
     ↓
decoder / modello generativo
     ↓
prediction error
     ↓
aggiornamento della credenza
     ↓
q_1(s)
     ↓
nuova previsione
     ↓
...
     ↓
q*(s)

L’encoder evita di partire da zero.

Il raffinamento iterativo utilizza invece la coerenza con il modello generativo per correggere eventuali errori dell’encoder.

22. Apprendimento e inferenza non sono la stessa cosa

Questa è una distinzione essenziale.

Consideriamo:

\[ q_\phi(s\mid o) \]

e:

\[ p_\theta(o\mid s). \]

Qui:

\[ \phi,\theta \]

sono i parametri delle reti.

Lo stato:

\[ s \]

è invece una variabile latente relativa a una particolare osservazione.

Durante l’apprendimento modifichiamo:

\[ \boxed{ \theta,\phi. } \]

Durante l’inferenza, normalmente manteniamo i parametri appresi fissi e determiniamo:

\[ \boxed{ q(s\mid o). } \]

23. La fase di apprendimento

Supponiamo di avere un dataset:

\[ \mathcal D= \{o^{(1)},o^{(2)},\ldots,o^{(N)}\}. \]

Durante il training passiamo molti esempi attraverso la rete.

L’encoder produce:

\[ q_\phi(s\mid o). \]

Il decoder cerca di spiegare:

\[ p_\theta(o\mid s). \]

La funzione obiettivo può essere la free energy:

\[ F(\theta,\phi;o). \]

Aggiorniamo:

\[ \boxed{ \phi \leftarrow \phi – \eta_\phi \nabla_\phi F } \]

e:

\[ \boxed{ \theta \leftarrow \theta – \eta_\theta \nabla_\theta F. } \]

Il processo viene ripetuto su molti dati.

24. Che cosa apprende \(\phi\)?

I parametri:

\[ \phi \]

appartengono all’encoder o alla rete di inferenza.

Imparano a trasformare:

\[ o \rightarrow q_\phi(s\mid o). \]

In altre parole, imparano:

come riconoscere rapidamente quali stati nascosti sono plausibili a partire dai dati.

Questa è la componente più vicina all’approccio discriminativo.

25. Che cosa apprende \(\theta\)?

I parametri:

\[ \theta \]

appartengono al modello generativo.

Imparano:

\[ p_\theta(o\mid s) \]

e, nei modelli dinamici:

\[ p_\theta(s_{t+1}\mid s_t,a_t). \]

In altre parole, imparano:

come gli stati producono osservazioni e come il sistema evolve nel tempo.

Questa è la componente propriamente generativa del world model.

26. La fase di inferenza

Una volta completato il training, arriva una nuova osservazione:

\[ o^*. \]

I pesi:

\[ \theta,\phi \]

possono rimanere fissi.

L’encoder produce:

\[ \boxed{ q_\phi(s\mid o^*). } \]

Questa operazione può richiedere una sola forward pass.

La differenza fondamentale è quindi:

Apprendimento Inferenza
modifica i pesi della rete usa i pesi già appresi
\(\theta,\phi\) cambiano \(\theta,\phi\) normalmente restano fissi
avviene su molti esempi avviene su un’osservazione o una sequenza corrente
impara il modello stima lo stato
scala temporale lenta scala temporale rapida

27. Inferenza online e apprendimento online possono comunque coesistere

La distinzione non significa che una AI debba smettere completamente di imparare durante l’utilizzo.

Possiamo avere contemporaneamente:

\[ \boxed{ \text{inferenza rapida sugli stati} } \]

e:

\[ \boxed{ \text{apprendimento più lento dei parametri}. } \]

A ogni istante:

\[ o_t \rightarrow q(s_t) \]

può avvenire rapidamente.

Su una scala temporale più lunga:

\[ \theta_t \rightarrow \theta_{t+1} \]

può adattare il modello quando il mondo cambia.

È importante tuttavia distinguere concettualmente i due processi anche quando avvengono nello stesso sistema.

28. Un agente dinamico deve imparare anche una legge di transizione

Finora abbiamo considerato:

\[ p(o_t\mid s_t). \]

Per prevedere il futuro serve un secondo modello:

\[ \boxed{ p(s_{t+1}\mid s_t,a_t). } \]

Questo è il modello dinamico o transition model.

Descrive:

dato lo stato attuale e l’azione compiuta, quali stati sono plausibili all’istante successivo?

29. Un modello dinamico deterministico

Nel caso più semplice possiamo scrivere:

\[ s_{t+1} = f_\theta(s_t,a_t). \]

La rete produce un singolo stato futuro.

Per esempio:

stato attuale s_t ──┐
                     ├──→ dynamics network ──→ stato futuro s_(t+1)
azione a_t ──────────┘

Questo modello è semplice, ma non rappresenta l’incertezza.

30. Un modello dinamico probabilistico

Una formulazione più generale è:

\[ \boxed{ p_\theta(s_{t+1}\mid s_t,a_t). } \]

Per esempio:

\[ p_\theta(s_{t+1}\mid s_t,a_t) = \mathcal N \left( s_{t+1}; \mu_\theta(s_t,a_t), \Sigma_\theta(s_t,a_t) \right). \]

La rete produce quindi:

\[ \mu_{t+1} \]

e:

\[ \Sigma_{t+1}. \]

Non dice:

“questo sarà certamente il prossimo stato”.

Dice:

“questa è la distribuzione degli stati futuri che considero plausibili”.

31. Prevedere \(s_{t+1}\) partendo da una credenza incerta

Il sistema non conosce necessariamente \(s_t\). Possiede:

\[ q(s_t). \]

La distribuzione predittiva corretta è:

\[ \boxed{ q(s_{t+1}\mid a_t) = \int p_\theta(s_{t+1}\mid s_t,a_t) q(s_t)\,ds_t. } \]

Questa formula è importante.

L’incertezza sullo stato presente viene propagata attraverso il modello dinamico.

Quindi una AI probabilistica non propaga semplicemente un punto:

\[ s_t\rightarrow s_{t+1}. \]

Propaga:

\[ \boxed{ \text{una distribuzione} \rightarrow \text{un’altra distribuzione}. } \]

32. Il caso discreto dell’Active Inference

Se gli stati sono discreti possiamo rappresentare il modello dinamico mediante una matrice:

\[ \boxed{ B^{(a)}_{ij} = p(s_{t+1}=i\mid s_t=j,a_t=a). } \]

Se:

\[ q(s_t) \]

è un vettore di probabilità, la previsione diventa:

\[ \boxed{ q(s_{t+1}) = B^{(a_t)} q(s_t). } \]

Il modello osservativo può essere rappresentato da:

\[ \boxed{ A_{ij} = p(o_t=i\mid s_t=j). } \]

La previsione delle future osservazioni è quindi:

\[ \boxed{ q(o_{t+1}) = Aq(s_{t+1}). } \]

La sequenza completa è:

\[ \boxed{ q(s_t) \xrightarrow{B^{(a_t)}} q(s_{t+1}) \xrightarrow{A} q(o_{t+1}). } \]

33. Il significato di una simulazione interna

La relazione precedente consente a un agente di chiedere:

se compissi l’azione \(a_t\), in quali stati potrei trovarmi e quali osservazioni potrei ricevere?

Questa simulazione avviene senza eseguire immediatamente l’azione nel mondo.

È un embrione di pianificazione:

\[ \text{stato creduto} \rightarrow \text{azione ipotetica} \rightarrow \text{stato futuro} \rightarrow \text{osservazione futura}. \]

34. Previsioni a più passi

Possiamo ripetere la previsione:

\[ q(s_t) \rightarrow q(s_{t+1}) \rightarrow q(s_{t+2}) \rightarrow q(s_{t+3}). \]

Data una politica:

\[ \pi= (a_t,a_{t+1},a_{t+2}), \]

otteniamo:

\[ q(s_{t+1}\mid\pi), \] \[ q(s_{t+2}\mid\pi), \] \[ q(s_{t+3}\mid\pi). \]

E tramite il modello osservativo:

\[ q(o_{t+1}\mid\pi), \] \[ q(o_{t+2}\mid\pi), \] \[ q(o_{t+3}\mid\pi). \]

Questa sequenza viene spesso chiamata rollout.

35. Rollout nello spazio latente

Un vantaggio importante dei world models è che non è sempre necessario prevedere direttamente ogni pixel del futuro.

Una fotografia può contenere milioni di numeri:

\[ o_t\in\mathbb R^{1920\times1080\times3}. \]

Lo stato latente potrebbe invece essere:

\[ s_t\in\mathbb R^{64}. \]

Possiamo simulare:

\[ s_t \rightarrow s_{t+1} \rightarrow s_{t+2} \rightarrow s_{t+3} \]

nello spazio latente.

Solo quando serve possiamo decodificare:

\[ s_{t+k} \rightarrow \hat o_{t+k}. \]

La previsione diventa quindi computazionalmente molto più compatta.

36. Perché è importante prevedere distribuzioni e non soltanto medie

Immaginiamo un pedone fermo davanti a un’automobile.

Due futuri possono essere plausibili:

\[ p(\text{attraversa})=0.55, \] \[ p(\text{rimane fermo})=0.45. \]

Una regressione deterministica potrebbe produrre una traiettoria media che non corrisponde a nessuno dei due comportamenti reali.

Un modello probabilistico mantiene invece due modalità:

\[ \boxed{ \text{futuro A} \quad\text{oppure}\quad \text{futuro B}. } \]

Questa capacità è cruciale quando il futuro è intrinsecamente ambiguo.

37. Come si possono produrre molti futuri?

Una tecnica semplice consiste nel campionamento.

Partiamo da:

\[ s_t^{(i)} \sim q(s_t). \]

Per ciascun campione generiamo:

\[ s_{t+1}^{(i)} \sim p_\theta(s_{t+1}\mid s_t^{(i)},a_t). \]

Poi:

\[ s_{t+2}^{(i)} \sim p_\theta (s_{t+2}\mid s_{t+1}^{(i)},a_{t+1}). \]

Otteniamo un insieme di traiettorie:

\[ \{ s_{t:t+H}^{(1)}, s_{t:t+H}^{(2)}, \ldots, s_{t:t+H}^{(N)} \}. \]

Questo insieme approssima la distribuzione dei futuri possibili.

38. RNN, GRU, LSTM e previsione temporale

Il dynamics model può essere implementato mediante una rete ricorrente.

Per esempio:

\[ h_{t+1} = f_\theta (h_t,s_t,a_t). \]

Successivamente:

\[ p(s_{t+1}\mid h_{t+1}) = \mathcal N (\mu_{t+1},\Sigma_{t+1}). \]

Una GRU o una LSTM è utile quando la dinamica futura dipende da una storia più lunga di quella rappresentabile dal solo stato corrente.

Per esempio, una palla osservata in una singola immagine non contiene direttamente informazione sufficiente per conoscerne la velocità.

Una sequenza di immagini:

\[ o_{t-3},o_{t-2},o_{t-1},o_t \]

permette invece alla rete ricorrente di inferire movimento e direzione.

39. Transformer come alternativa alle RNN

Lo stesso principio non richiede necessariamente una RNN.

Possiamo costruire una sequenza di rappresentazioni:

\[ e_1,e_2,\ldots,e_t \]

e utilizzare un Transformer.

L’attenzione consente al modello di utilizzare direttamente informazioni provenienti da tempi differenti.

In questo caso il belief state può essere prodotto da:

\[ h_t = \mathrm{Transformer} (o_{\leq t},a_{ Poi:

\[ q_\phi(s_t\mid h_t). \]

La logica probabilistica non cambia.

Cambiano soltanto le funzioni neurali utilizzate per parametrizzare le distribuzioni.

40. L’architettura generale di un world model

Possiamo ora assemblare i componenti.

                         MONDO
                           │
                           ↓
                    osservazione o_t
                           │
                           ↓
               ┌─────────────────────┐
               │ SENSOR ENCODERS     │
               │ CNN / MLP / audio   │
               └──────────┬──────────┘
                          │
                          ↓
               ┌─────────────────────┐
               │ TEMPORAL ENCODER    │
               │ RNN / GRU / LSTM / │
               │ Transformer         │
               └──────────┬──────────┘
                          │
                          ↓
                  belief q(s_t)
                          │
          ┌───────────────┴───────────────┐
          │                               │
          ↓                               ↓
 ┌─────────────────┐           ┌────────────────────┐
 │ OBSERVATION     │           │ DYNAMICS MODEL     │
 │ MODEL           │           │                    │
 │ p(o_t | s_t)    │           │ p(s_t+1|s_t,a_t)  │
 └────────┬────────┘           └──────────┬─────────┘
          │                               │
          ↓                               ↓
 predicted sensors                  future beliefs
          │                               │
          ↓                               ↓
 prediction errors                  future rollout
                                          │
                                          ↓
                                       PLANNER
                                          │
                                          ↓
                                        action
                                          │
                                          ↓
                                         MONDO

41. Dove sono il modello discriminativo e quello generativo?

Nello schema precedente possiamo identificarli con precisione.

Componente discriminativa/inferenziale

\[ \boxed{ q_\phi(s_t\mid o_{\leq t},a_{ Essa trasforma le osservazioni nella credenza sugli stati.

Componente generativa

\[ \boxed{ p_\theta(o_t\mid s_t) } \]

e:

\[ \boxed{ p_\theta(s_{t+1}\mid s_t,a_t). } \]

Questi modelli spiegano come vengono prodotte le osservazioni e come evolve il mondo.

L’architettura combina quindi entrambi gli approcci anziché considerarli necessariamente alternativi.

42. Il modello generativo temporale completo

Una fattorizzazione possibile è:

\[ \boxed{ p(o_{1:T},s_{1:T}\mid a_{1:T-1}) = p(s_1) \prod_{t=1}^{T} p(o_t\mid s_t) \prod_{t=1}^{T-1} p(s_{t+1}\mid s_t,a_t). } \]

Questa equazione contiene tre ingredienti fondamentali.

Prior iniziale

\[ p(s_1). \]

Observation model

\[ p(o_t\mid s_t). \]

Transition model

\[ p(s_{t+1}\mid s_t,a_t). \]

Il modello descrive quindi una possibile “storia generativa”:

\[ s_1 \rightarrow o_1, \] \[ (s_1,a_1) \rightarrow s_2 \rightarrow o_2, \] \[ (s_2,a_2) \rightarrow s_3 \rightarrow o_3, \]

e così via.

43. L’inference network effettua il percorso inverso

Il mondo genera:

\[ s_t\rightarrow o_t. \]

La rete deve effettuare:

\[ o_t\rightarrow s_t. \]

Nel caso temporale:

\[ \boxed{ q_\phi (s_t\mid o_{1:t},a_{1:t-1}). } \]

Abbiamo quindi due direzioni complementari:

\[ \boxed{ \text{generazione: } s\rightarrow o } \]

e:

\[ \boxed{ \text{riconoscimento: } o\rightarrow s. } \]

44. Il rapporto con il filtro di Kalman

Questa struttura non nasce con il deep learning.

Il filtro di Kalman utilizza un modello dinamico:

\[ s_{t+1} = As_t+Ba_t+w_t \]

e un modello osservativo:

\[ o_t = Cs_t+v_t. \]

Mantiene una distribuzione:

\[ p(s_t\mid o_{1:t}) = \mathcal N(\mu_t,\Sigma_t). \]

Il ciclo contiene due fasi.

Prediction

\[ p(s_t\mid o_{1:t-1}). \]

Update

\[ p(s_t\mid o_{1:t}). \]

Una rete neurale probabilistica può essere vista, in un certo senso, come una generalizzazione molto più flessibile di questa struttura a sistemi non lineari e osservazioni ad altissima dimensionalità.

45. Prediction e inference sono operazioni differenti

È utile distinguere anche questi due concetti.

Inference

Riceviamo un dato:

\[ o_t \]

e aggiorniamo:

\[ q(s_t\mid o_{\leq t}). \]

Domanda:

qual è lo stato attuale?

Prediction

Partiamo dalla credenza corrente:

\[ q(s_t) \]

e la propaghiamo:

\[ q(s_{t+1}\mid a_t). \]

Domanda:

quale sarà probabilmente il prossimo stato?

Quando arriva la nuova osservazione \(o_{t+1}\), la previsione viene corretta.

Il ciclo è quindi:

\[ \boxed{ \text{inferenza} \rightarrow \text{predizione} \rightarrow \text{osservazione} \rightarrow \text{correzione} \rightarrow \text{nuova predizione}. } \]

46. Un esempio completo: robot nel corridoio

Supponiamo che un robot creda:

\[ q(s_t) = \begin{cases} 0.6 & \text{zona centrale}\\ 0.3 & \text{zona finestra}\\ 0.1 & \text{zona porta}. \end{cases} \]

Il robot considera l’azione:

\[ a_t=\text{vai a destra}. \]

Il transition model produce:

\[ q(s_{t+1}) = B^{(\mathrm{destra})}q(s_t). \]

Supponiamo di ottenere:

\[ q(s_{t+1}) = \begin{cases} 0.15 & \text{zona centrale}\\ 0.75 & \text{zona finestra}\\ 0.10 & \text{zona porta}. \end{cases} \]

Il modello osservativo prevede quindi:

\[ q(o_{t+1}) = Aq(s_{t+1}). \]

Per esempio:

\[ p(\text{molta luce})=0.7. \]

Il robot può quindi prevedere:

se vado a destra, è molto probabile che mi trovi vicino alla finestra e che osservi molta luce.

47. La nuova osservazione corregge la previsione

Supponiamo che il robot esegua davvero l’azione e riceva:

\[ o_{t+1}=\text{buio}. \]

Questa osservazione era poco probabile sotto l’ipotesi “zona finestra”.

Il sistema aggiorna allora:

\[ q(s_{t+1}) \]

utilizzando la nuova likelihood.

La previsione non viene quindi trattata come una verità.

È una credenza anticipatoria destinata a essere continuamente corretta dall’evidenza sensoriale.

48. Perché questa architettura è più di un semplice predittore

Una rete standard potrebbe imparare direttamente:

\[ o_t \rightarrow o_{t+1}. \]

Un world model compie invece:

\[ o_t \rightarrow q(s_t) \rightarrow q(s_{t+1}) \rightarrow q(o_{t+1}). \]

Introduce esplicitamente uno stato latente.

Questo può risultare utile perché molte osservazioni differenti possono essere spiegate dallo stesso stato sottostante e perché lo stato può avere una dinamica più semplice dell’intero spazio sensoriale.

49. Immaginare azioni diverse

Un agente non deve prevedere soltanto ciò che avverrà continuando passivamente.

Può confrontare:

\[ a^{(1)}, a^{(2)}, a^{(3)}. \]

Per ciascuna azione simula:

\[ q(s_{t+1}\mid a^{(i)}). \]

Poi può simulare sequenze:

\[ \pi_1=(a_1,a_2,a_3), \] \[ \pi_2=(a’_1,a’_2,a’_3). \]

Ottiene così distribuzioni differenti sui futuri:

\[ q(s_{t:t+H}\mid\pi_1) \]

e:

\[ q(s_{t:t+H}\mid\pi_2). \]

50. Dal world model all’Active Inference

Il world model permette di immaginare i futuri.

L’Active Inference aggiunge un criterio per decidere quali futuri siano preferibili.

Possiamo rappresentare preferenze sugli outcome:

\[ p_{\mathrm{pref}}(o). \]

Un outcome molto desiderato possiede:

\[ p_{\mathrm{pref}}(o) \]

elevata.

Il suo costo informazionale:

\[ -\ln p_{\mathrm{pref}}(o) \]

è quindi basso.

51. Expected Free Energy e pianificazione

Per una politica futura \(\pi\), l’Active Inference introduce l’Expected Free Energy:

\[ G(\pi). \]

Schematicamente essa permette di combinare:

\[ \boxed{ \text{valore pragmatico} + \text{valore epistemico}. } \]

Il valore pragmatico riguarda la compatibilità dei futuri con le preferenze.

Il valore epistemico riguarda la quantità di informazione che ci aspettiamo di ottenere.

Una politica può quindi essere desiderabile perché:

  • porta a un risultato preferito;
  • oppure permette di comprendere meglio lo stato del mondo;
  • oppure entrambe le cose.

52. Un esempio di valore epistemico

Supponiamo che un robot non sappia se un corridoio continui a sinistra oppure a destra.

Può immediatamente scegliere una direzione, oppure spostarsi di pochi centimetri per utilizzare una telecamera laterale.

La seconda azione può non avvicinarlo direttamente alla destinazione.

Ma può produrre un’osservazione molto informativa:

\[ o_{\mathrm{info}}. \]

Dopo l’osservazione:

\[ q(s\mid o_{\mathrm{info}}) \]

può essere molto più concentrata della credenza precedente.

L’information gain può essere espresso tramite:

\[ D_{\mathrm{KL}} \left[ q(s\mid o,\pi) \Vert q(s\mid\pi) \right]. \]

L’azione ha quindi valore non perché produce immediatamente una ricompensa, ma perché riduce una specifica incertezza sul mondo.

53. Architettura completa di un agente Active Inference

                         AMBIENTE
                            │
                            ↓
                      osservazione o_t
                            │
                            ↓
                  ┌─────────────────┐
                  │ SENSOR ENCODERS │
                  └────────┬────────┘
                           ↓
                  ┌─────────────────┐
                  │ TEMPORAL MODEL  │
                  │ RNN / LSTM /    │
                  │ GRU / Transformer
                  └────────┬────────┘
                           ↓
                      q(s_t)
                    belief state
                           │
          ┌────────────────┼────────────────┐
          │                │                │
          ↓                ↓                ↓
  observation model   dynamics model   preference model
   p(o_t | s_t)       p(s'|s,a)        p_pref(o)
          │                │                │
          │                ↓                │
          │          rollout futuri         │
          │                │                │
          └────────────────┼────────────────┘
                           ↓
                     policy evaluator
                         G(pi)
                           ↓
                        q(pi)
                           ↓
                         azione
                           ↓
                        AMBIENTE

Una possibile distribuzione sulle politiche è:

\[ \boxed{ q(\pi) \propto p(\pi) e^{-\gamma G(\pi)}. } \]

Politiche con Expected Free Energy minore ricevono probabilità maggiore.

54. Dove avviene l’apprendimento nell’architettura completa?

Diverse parti del sistema possono essere apprese.

Encoder

\[ q_\phi(s_t\mid o_{\leq t}). \]

Impara a riconoscere gli stati plausibili.

Observation model

\[ p_{\theta_o}(o_t\mid s_t). \]

Impara come gli stati producono dati sensoriali.

Dynamics model

\[ p_{\theta_d}(s_{t+1}\mid s_t,a_t). \]

Impara come evolve il sistema.

Preferenze

Possono essere imposte dal progettista oppure, in alcuni modelli, apprese.

Durante il training possiamo quindi aggiornare:

\[ \phi,\theta_o,\theta_d. \]

55. Dove avviene l’inferenza?

Durante l’utilizzo normale del sistema, arrivano continuamente nuove osservazioni:

\[ o_1,o_2,o_3,\ldots. \]

A ogni istante il sistema aggiorna:

\[ \boxed{ q(s_t\mid o_{\leq t},a_{ Questo è il livello più rapido.

Possiamo descrivere il ciclo come:

\[ q(s_{t-1}) \] \[ \downarrow \] \[ \text{predizione dinamica} \] \[ \downarrow \] \[ q^-(s_t) \] \[ \downarrow \] \[ o_t \] \[ \downarrow \] \[ \text{aggiornamento bayesiano/variazionale} \] \[ \downarrow \] \[ q(s_t). \]

Il simbolo:

\[ q^-(s_t) \]

può essere letto come credenza predetta prima di incorporare la nuova osservazione.

56. Tre scale temporali differenti

In un agente complesso possiamo quindi distinguere tre processi.

1. Inferenza sul presente

\[ o_t \rightarrow q(s_t). \]

Avviene continuamente.

2. Predizione e pianificazione

\[ q(s_t) \rightarrow q(s_{t+1:t+H}\mid\pi). \]

Avviene per valutare futuri possibili.

3. Apprendimento

\[ \theta,\phi \rightarrow \theta’,\phi’. \]

Modifica progressivamente il modello sulla base dell’esperienza.

57. Perché la distinzione fra queste tre operazioni è importante?

Dire genericamente:

“la rete impara che il robot è vicino alla finestra”

può creare confusione.

Se i pesi della rete sono già addestrati e arriva una nuova immagine, la rete non sta necessariamente imparando.

Sta effettuando inferenza:

\[ o_t \rightarrow q(s_t). \]

Se utilizza \(q(s_t)\) per ottenere:

\[ q(s_{t+1}), \]

sta effettuando predizione.

Se modifica:

\[ \theta,\phi, \]

sta effettuando apprendimento.

58. Un parallelo con la cognizione

Senza pretendere che l’analogia sia una descrizione completa del cervello, possiamo utilizzarla intuitivamente.

Se vediamo rapidamente un oggetto, riconoscerlo come una tazza assomiglia a un’operazione di inferenza:

\[ o\rightarrow q(s\mid o). \]

Sapere che inclinando la tazza l’acqua potrebbe cadere richiede un modello dinamico:

\[ p(s_{t+1}\mid s_t,a_t). \]

Immaginare visivamente la tazza inclinata richiede anche un modello generativo:

\[ p(o_{t+1}\mid s_{t+1}). \]

Imparare dopo molte esperienze che un particolare materiale è fragile corrisponde invece a una modifica più lenta del modello.

59. Un LLM e un world model non sono necessariamente la stessa cosa

Un language model autoregressivo standard rappresenta principalmente una distribuzione:

\[ p(x_{t+1}\mid x_{\leq t}). \]

Predice il prossimo token sulla base del contesto.

Le sue rappresentazioni interne:

\[ h_t \]

possono contenere una grande quantità di informazione latente, ma normalmente non viene imposto esplicitamente che:

\[ h_t \]

sia una distribuzione bayesiana sullo stato fisico del mondo.

Un agente multimodale potrebbe invece utilizzare un LLM o un Transformer come uno dei componenti di un’architettura più ampia:

immagini ──┐
audio ─────┼──→ encoder multimodale ──→ belief state
testo ─────┘                              │
                                         ↓
                                     world model
                                         │
                                         ↓
                                       planner
                                         │
                                         ↓
                                       azione

60. Discriminativo e generativo non devono essere considerati nemici

È forse questo il punto architetturale più importante.

Una contrapposizione semplice potrebbe suggerire:

\[ \text{generativo} \quad\text{contro}\quad \text{discriminativo}. \]

Per un agente complesso è spesso più utile pensare:

\[ \boxed{ \text{generativo} + \text{discriminativo}. } \]

Il modello discriminativo fornisce:

\[ o\rightarrow q(s\mid o) \]

rapidamente.

Il modello generativo fornisce:

\[ s\rightarrow o \]

e:

\[ (s,a)\rightarrow s’. \]

Uno riconosce rapidamente.

L’altro permette di spiegare, prevedere e simulare.

61. Da classificatore a world model

Possiamo immaginare una progressione di complessità.

Livello 1: classificatore discriminativo

\[ \boxed{ o\rightarrow q(s\mid o) } \]

Sa riconoscere.

Livello 2: modello generativo statico

\[ \boxed{ p(o\mid s)p(s) } \]

Sa modellare la relazione fra causa nascosta e osservazione.

Livello 3: modello latente bidirezionale

\[ \boxed{ q(s\mid o) + p(o\mid s). } \]

Sa inferire e ricostruire/generare.

Livello 4: world model dinamico

\[ \boxed{ q(s_t\mid o_{\leq t}) + p(o_t\mid s_t) + p(s_{t+1}\mid s_t,a_t). } \]

Sa inferire e prevedere.

Livello 5: agente Active Inference

Aggiungiamo preferenze e pianificazione:

\[ \boxed{ p_{\mathrm{pref}}(o) + G(\pi). } \]

L’agente può inferire, simulare, valutare e agire.

62. Il punto fondamentale: una AI non deve necessariamente predire direttamente il dato futuro

Possiamo costruire:

\[ o_t \rightarrow o_{t+1}. \]

Ma un modello più strutturato può fare:

\[ \boxed{ o_t \rightarrow q(s_t) \rightarrow q(s_{t+1}) \rightarrow q(o_{t+1}). } \]

Questo introduce una teoria interna del processo.

L’osservazione viene interpretata attraverso uno stato latente.

Lo stato latente evolve secondo un modello dinamico.

Le osservazioni future vengono generate dallo stato previsto.

63. Perché questo può aiutare nella generalizzazione

Immaginiamo un robot che abbia imparato soltanto:

\[ o\rightarrow a. \]

A una particolare immagine associa immediatamente un’azione.

Se cambia l’illuminazione o una parte dello scenario, la correlazione potrebbe non essere più valida.

Un modello strutturato tenta invece di inferire:

\[ o\rightarrow s, \]

e successivamente decide sulla base dello stato.

Se la rappresentazione latente riesce a catturare aspetti più invarianti della scena, il comportamento può risultare meno dipendente da caratteristiche superficiali del dato sensoriale.

Naturalmente ciò non è automatico: dipende dal modello, dai dati e dall’addestramento.

64. Ma un modello generativo non è automaticamente “più intelligente”

Un modello generativo deve spesso affrontare un problema più difficile.

Un classificatore può ignorare una grande quantità di informazione che non serve a distinguere le classi.

Un modello che cerca di descrivere:

\[ p(o,s) \]

deve rappresentare una struttura molto più ricca.

Questo può richiedere:

  • più capacità del modello;
  • più dati;
  • più calcolo;
  • un modello probabilistico appropriato;
  • metodi di inferenza più sofisticati.

La scelta fra modello discriminativo e generativo dipende quindi dal problema.

65. Quando un discriminativo può essere sufficiente

Se dobbiamo soltanto stabilire:

\[ \text{spam} \quad\text{o}\quad \text{non spam}, \]

e disponiamo di moltissimi esempi etichettati, una rete discriminativa può essere la soluzione più semplice ed efficace.

Non è sempre necessario costruire un modello completo del processo che genera tutti i messaggi.

66. Quando un world model diventa particolarmente utile

Un modello generativo dinamico è invece molto interessante quando dobbiamo:

  • operare con osservazioni parziali;
  • prevedere scenari futuri;
  • simulare azioni alternative;
  • gestire dati mancanti;
  • quantificare incertezza;
  • esplorare per ottenere informazione;
  • fare pianificazione;
  • controllare un sistema dinamico.

Sono precisamente i problemi centrali per un agente autonomo.

67. Dati mancanti e modello generativo

Supponiamo che:

\[ o= (o_{\mathrm{camera}}, o_{\mathrm{lidar}}, o_{\mathrm{audio}}). \]

La telecamera smette di funzionare.

Un modello generativo con struttura congiunta può ancora inferire:

\[ p(s\mid o_{\mathrm{lidar}},o_{\mathrm{audio}}). \]

Può persino stimare:

\[ p( o_{\mathrm{camera}} \mid o_{\mathrm{lidar}}, o_{\mathrm{audio}} ). \]

Il modello possiede infatti una rappresentazione delle relazioni probabilistiche fra le diverse variabili.

68. Prediction error e apprendimento del modello

Il prediction error non serve soltanto per correggere lo stato inferito.

Se sistematicamente:

\[ \hat o_t \neq o_t, \]

potrebbe esserci un errore nel modello stesso.

Possiamo allora aggiornare:

\[ \theta. \]

Esistono quindi due modi diversi di ridurre l’errore.

Cambiare la credenza

\[ q(s)\rightarrow q'(s). \]

Cambiare il modello

\[ \theta\rightarrow\theta’. \]

Il primo è inferenza.

Il secondo è apprendimento.

69. Nell’Active Inference esiste anche una terza possibilità: agire

Se la previsione e l’osservazione non coincidono, un agente embodied possiede anche una terza possibilità:

\[ a\rightarrow a’. \]

L’azione cambia il mondo e quindi cambia le osservazioni future.

Possiamo quindi avere:

\[ \boxed{ \text{errore} \rightarrow \begin{cases} \text{aggiorna la credenza}\\ \text{aggiorna il modello}\\ \text{agisci sul mondo}. \end{cases} } \]

È questa la caratteristica che trasforma un modello puramente percettivo in un agente.

70. Un esempio intuitivo: cercare una tazza

Crediamo che una tazza sia sul tavolo:

\[ q(s=\text{tazza sul tavolo})=0.8. \]

Guardiamo davanti a noi e non la vediamo.

Possiamo:

  1. ridurre la probabilità dell’ipotesi;
  2. considerare che l’illuminazione o l’angolazione rendano l’osservazione poco affidabile;
  3. girare la testa per ottenere un’osservazione migliore.

L’ultimo comportamento utilizza attivamente la percezione per risolvere l’incertezza.

71. Dalla rete all’equazione e dall’equazione alla rete

È utile vedere che la teoria probabilistica non specifica necessariamente una particolare architettura neurale.

L’equazione:

\[ q_\phi(s_t\mid o_{\leq t}) \]

dice quale distribuzione vogliamo rappresentare.

Possiamo parametrizzarla con:

  • una MLP;
  • una CNN;
  • una RNN;
  • una LSTM;
  • una GRU;
  • un Transformer;
  • una combinazione multimodale.

Analogamente:

\[ p_\theta(o_t\mid s_t) \]

può essere parametrizzata con un decoder convoluzionale, un Transformer, una rete autoregressiva o altri modelli.

La probabilità definisce il ruolo matematico.

La rete neurale definisce come quel ruolo viene implementato computazionalmente.

72. Il modello matematico precede idealmente la scelta dell’architettura

Un modo utile di progettare una AI è quindi chiedersi prima:

  1. Quali sono gli stati nascosti \(s\)?
  2. Quali sono le osservazioni \(o\)?
  3. Quali azioni \(a\) sono possibili?
  4. Come dipendono le osservazioni dagli stati?
  5. Come evolve lo stato nel tempo?
  6. Quale incertezza vogliamo rappresentare?
  7. Quali futuri devono essere valutati?

Solo successivamente chiediamo quale rete sia più adatta.

Per immagini potremmo usare una CNN o un Vision Transformer.

Per serie temporali una GRU, una LSTM o un Transformer.

Per output visivi un decoder convoluzionale.

Per sequenze linguistiche un decoder autoregressivo.

73. Schema concettuale completo

Possiamo ora riassumere l’intero percorso.

\[ \boxed{ \begin{aligned} &\text{1. Il mondo possiede uno stato }s_t \\[4pt] &\downarrow \\[4pt] &\text{2. Lo stato genera osservazioni }o_t \\[4pt] &p(o_t\mid s_t) \\[6pt] &\downarrow \\[4pt] &\text{3. L’agente riceve }o_t \text{ ma non conosce }s_t \\[6pt] &\downarrow \\[4pt] &\text{4. Deve inferire} \\[4pt] &p(s_t\mid o_{\leq t}) \\[6pt] &\downarrow \\[4pt] &\text{5. Una rete discriminativa approssima} \\[4pt] &q_\phi(s_t\mid o_{\leq t}) \\[6pt] &\downarrow \\[4pt] &\text{6. Un modello generativo rappresenta} \\[4pt] &p_\theta(o_t\mid s_t) \\[6pt] &\downarrow \\[4pt] &\text{7. Un dynamics model rappresenta} \\[4pt] &p_\theta(s_{t+1}\mid s_t,a_t) \\[6pt] &\downarrow \\[4pt] &\text{8. Il sistema può prevedere} \\[4pt] &q(s_{t+1}),q(s_{t+2}),\ldots \\[6pt] &\downarrow \\[4pt] &\text{9. Può prevedere anche osservazioni future} \\[4pt] &q(o_{t+1}),q(o_{t+2}),\ldots \\[6pt] &\downarrow \\[4pt] &\text{10. Può simulare politiche alternative} \\[4pt] &q(s_{t:t+H}\mid\pi) \\[6pt] &\downarrow \\[4pt] &\text{11. Active Inference valuta le politiche} \\[4pt] &G(\pi) \\[6pt] &\downarrow \\[4pt] &\text{12. L’agente seleziona un’azione} \\[4pt] &a_t \\[6pt] &\downarrow \\[4pt] &\text{13. L’azione modifica il mondo} \\[4pt] &\downarrow \\[4pt] &\text{14. Arriva una nuova osservazione e il ciclo ricomincia.} \end{aligned} } \]

74. Schema architetturale finale

                         ┌──────────────────────┐
                         │      AMBIENTE        │
                         └──────────┬───────────┘
                                    │
                               osservazione
                                    │
                                    ↓
                         ┌──────────────────────┐
                         │   SENSOR ENCODERS    │
                         │ CNN / MLP / audio    │
                         └──────────┬───────────┘
                                    │
                                    ↓
                         ┌──────────────────────┐
                         │ TEMPORAL ENCODER     │
                         │ RNN / GRU / LSTM /   │
                         │ Transformer          │
                         └──────────┬───────────┘
                                    │
                                    ↓
                             q_phi(s_t | o)
                              BELIEF STATE
                                    │
                   ┌────────────────┼────────────────┐
                   │                │                │
                   ↓                ↓                ↓
          ┌────────────────┐ ┌───────────────┐ ┌──────────────┐
          │ OBSERVATION    │ │ DYNAMICS      │ │ PREFERENCES  │
          │ MODEL          │ │ MODEL         │ │              │
          │ p(o|s)         │ │ p(s'|s,a)     │ │ p_pref(o)    │
          └───────┬────────┘ └───────┬───────┘ └──────┬───────┘
                  │                  │                │
                  ↓                  ↓                │
             predictions       future rollouts       │
                  │                  │                │
                  └──────────────────┼────────────────┘
                                     ↓
                           ┌─────────────────────┐
                           │ POLICY EVALUATION   │
                           │        G(pi)        │
                           └──────────┬──────────┘
                                      ↓
                                  q(pi)
                                      ↓
                                   azione
                                      │
                                      ↓
                         ┌──────────────────────┐
                         │      AMBIENTE        │
                         └──────────────────────┘

75. Conclusione

Il punto di partenza dell’Active Inference è un problema di conoscenza: l’agente non dispone direttamente dello stato del mondo.

Dispone di osservazioni e deve risalire agli stati nascosti:

\[ \boxed{ p(s\mid o). } \]

Una prima soluzione consiste nell’addestrare direttamente una rete:

\[ q_\phi(s\mid o). \]

È la prospettiva discriminativa: imparare il percorso dall’osservazione alla risposta.

Una seconda soluzione consiste nel costruire:

\[ p_\theta(o,s) = p_\theta(o\mid s)p(s). \]

È la prospettiva generativa: rappresentare come gli stati possono produrre i dati.

Nei sistemi più interessanti i due approcci possono essere combinati.

L’encoder svolge la funzione di inferenza:

\[ o\rightarrow q(s\mid o). \]

Il decoder svolge parte della funzione generativa:

\[ s\rightarrow p(o\mid s). \]

Nei dati sequenziali, RNN, GRU, LSTM o Transformer possono integrare una storia di osservazioni e costruire un belief state temporale:

\[ q(s_t\mid o_{\leq t},a_{ Per prevedere il futuro occorre poi un modello dinamico:

\[ p(s_{t+1}\mid s_t,a_t). \]

La credenza corrente viene propagata:

\[ q(s_t) \rightarrow q(s_{t+1}) \rightarrow q(s_{t+2}) \rightarrow\cdots. \]

Il modello osservativo può trasformare questi stati futuri in osservazioni previste:

\[ q(s_{t+k}) \rightarrow q(o_{t+k}). \]

L’agente può così simulare internamente le conseguenze di azioni non ancora eseguite.

L’Active Inference aggiunge infine una teoria della scelta: diverse politiche vengono valutate in base ai futuri che rendono probabili, tenendo conto sia degli outcome preferiti sia del valore informativo delle osservazioni che potrebbero produrre.

All’interno di questa architettura è essenziale mantenere distinte tre operazioni.

L’apprendimento modifica i parametri del modello:

\[ \theta,\phi. \]

L’inferenza utilizza il modello appreso per determinare la credenza sullo stato corrente:

\[ q(s_t). \]

La predizione propaga quella credenza nel futuro:

\[ q(s_{t+1:t+H}\mid\pi). \]

La relazione fra teoria probabilistica e architettura neurale diventa quindi particolarmente chiara:

\[ \boxed{ \begin{array}{rcl} q_\phi(s\mid o) &\longleftrightarrow& \text{encoder / inference network} \\[6pt] p_\theta(o\mid s) &\longleftrightarrow& \text{decoder / observation model} \\[6pt] p_\theta(s_{t+1}\mid s_t,a_t) &\longleftrightarrow& \text{RNN / GRU / LSTM / Transformer dinamico} \\[6pt] q(s_t) &\longleftrightarrow& \text{belief state} \\[6pt] G(\pi) &\longleftrightarrow& \text{valutazione dei futuri e delle politiche}. \end{array} } \]

Il passaggio decisivo è così quello che conduce dalla semplice classificazione alla costruzione di un modello del mondo.

Un classificatore cerca soprattutto di rispondere:

“dato ciò che vedo, quale risposta devo produrre?”

Un agente dotato di world model cerca invece di rispondere anche:

“quale stato potrebbe aver prodotto ciò che vedo, che cosa dovrei osservare se la mia ipotesi fosse vera, come potrebbe evolvere quello stato e che cosa accadrebbe se intervenissi sul mondo in modi differenti?”

In questa prospettiva, encoder, decoder, modelli dinamici e reti temporali non sono componenti tecnici aggiunti arbitrariamente alla teoria dell’Active Inference. Sono possibili implementazioni neurali delle diverse distribuzioni richieste dal modello probabilistico.

L’encoder implementa l’inversione rapida dal dato allo stato. Il decoder implementa la direzione generativa dallo stato al dato. Il modello dinamico permette allo stato di evolvere nel tempo. Il planner utilizza queste dinamiche per costruire futuri possibili. L’Active Inference utilizza infine tali futuri per scegliere quali azioni rendano probabili osservazioni desiderabili e informative.

Il filo comune può essere condensato nella sequenza:

\[ \boxed{ \text{osservare} \rightarrow \text{inferire} \rightarrow \text{prevedere} \rightarrow \text{immaginare alternative} \rightarrow \text{agire} \rightarrow \text{osservare nuovamente}. } \]

L’apprendimento rende progressivamente migliore il modello che sostiene questo ciclo; l’inferenza utilizza quel modello nel presente; la previsione lo utilizza per esplorare il futuro.

Riferimenti e approfondimenti