Interpretabilità delle reti neurali

Interpretabilità delle reti neurali

Condividi con i tuoi amici...

L’interpretabilità dell’AI si riferisce alla capacità di comprendere e spiegare il funzionamento interno di modelli di intelligenza artificiale, in particolare le reti neurali. Questo concetto è cruciale per poter avere fiducia nei modelli di AI, assicurare la loro sicurezza e prevedere il loro comportamento in situazioni diverse.

A differenza di altre creazioni umane come le auto, le reti neurali non sono progettate direttamente ma attraverso algoritmi di apprendimento che le addestrano. Questo rende difficile decomporre e capire il loro funzionamento interno, perché non sono composte da parti facilmente identificabili e comprensibili.

All’interno di un modello linguistico, le attivazioni neurali non seguono schemi prevedibili e rappresentano spesso molti concetti simultaneamente. Ogni attivazione è densa, attivandosi per ogni input, mentre i concetti del mondo reale sono generalmente sparsi e contestuali.

Nelle reti neurali, soprattutto nei modelli di linguaggio come GPT-4, il termine “attivazione densa” si riferisce al fenomeno per cui ogni unità nel modello tende ad attivarsi per ogni input, indipendentemente dal contenuto specifico dell’input. Questo significa che, quando un modello processa un dato, molte (se non tutte) le unità del modello generano un segnale di attivazione.

Nel mondo reale, i concetti sono generalmente “sparsi” e “contestuali”. Questo significa che solo un piccolo sottoinsieme di tutti i possibili concetti è rilevante o attivato in un dato contesto. Ad esempio se stai leggendo un articolo di notizie sportive, i concetti rilevanti saranno probabilmente relativi agli sport, alle squadre e agli atleti. Non saranno rilevanti, ad esempio, concetti riguardanti la cucina o la biologia.

I concetti sono attivati in base al contesto. Nello stesso articolo sportivo, diversi concetti potrebbero essere attivati a seconda di specifiche frasi o paragrafi (come “goal”, “partita”, “campionato”).

Le attivazioni dense nei modelli di rete neurale complicano l’interpretazione e la comprensione del funzionamento interno del modello.

Quando ogni unità è attiva per ogni input, è difficile discernere quali unità sono responsabili per la produzione di una specifica uscita o per la rappresentazione di un particolare concetto.

Sparse Autoencoders

Gli sparse autoencoders cercano di risolvere questo problema riducendo il numero di attivazioni simultanee, identificando solo un piccolo sottoinsieme di unità (o feature) che sono cruciali per produrre un determinato output. Questo porta a pattern di attivazione più “sparsi”, che sono più simili a come funzionano i concetti nel mondo reale, rendendo più facile l’interpretazione umana.

Leggi come, per esempio, OpenAI utilizza questo approccio per migliorare l’interpretabilità dei modelli

Extracting Concepts from GPT-4

La visualizzazione delle features è una tecnica utilizzata per verificare e comprendere l’interpretabilità delle caratteristiche (features) identificate all’interno di un modello di intelligenza artificiale, come un modello linguistico basato su reti neurali. Questa tecnica aiuta i ricercatori a determinare se le features identificate dal modello sono comprensibili e interpretabili per gli esseri umani.

Le features sono pattern di attivazione all’interno della rete neurale che rappresentano concetti o unità informative specifiche. Per verificare se una feature è interpretabile, è necessario visualizzare esempi concreti in cui questa feature si attiva.

Durante l’addestramento del modello, vengono identificate diverse features che si attivano in risposta a specifici input. Queste features rappresentano concetti o pattern rilevanti che il modello ha appreso.

Una volta identificate le features, si selezionano documenti, frasi o parti di testo in cui queste features si attivano fortemente. Questo significa trovare esempi di testo dove il modello mostra un’alta attivazione per una specifica feature.

I documenti o le frasi selezionate vengono visualizzati insieme alle corrispondenti attivazioni delle feature. Questo permette ai ricercatori di osservare direttamente come e dove una specifica feature viene attivata nel contesto del testo.

Immaginiamo che il modello abbia una feature che si attiva per concetti relativi alla “felicità”. Per verificare l’interpretabilità di questa feature, i ricercatori selezionano frasi o documenti in cui questa feature si attiva maggiormente, come ad esempio:

Oggi è una giornata meravigliosa, mi sento davvero felice!”
“La vittoria della squadra ha portato gioia a tutti i tifosi.”

LIME (Local Interpretable Model-agnostic Explanations)

LIME (Local Interpretable Model-agnostic Explanations) è una metodologia che spiega le previsioni di qualsiasi modello di apprendimento automatico approssimandole con un modello interpretabile localmente.

Questo sistema crea perturbazioni dell’input e osserva come cambia la previsione. Costruisce quindi un modello lineare interpretabile basato sulle perturbazioni per spiegare la previsione locale.

Esempio

Immaginiamo una rete neurale addestrata per prevedere il prezzo di una casa basata su input come la dimensione, il numero di camere e la posizione. Per interpretare il modello:

  • Identifichiamo features chiave come “dimensione della casa” e “quartiere”.
  • Le analisi delle features importanti mostrano che la “posizione” ha un impatto maggiore sul prezzo rispetto ad altre features.
  • visualizziamo come la “dimensione della casa” e il “numero di camere” influenzano i prezzi.
  • Generiamo spiegazioni locali per specifiche previsioni, mostrando come variazioni di input specifici cambiano l’output.
  • Attribuiamo quantitativamente l’importanza di ciascuna feature nelle predizioni.

Relazioni matematiche

Abbiamo già mostrato che il teorema di approssimazione universale (Cybenko) fornisce una solida base teorica alle capacità di una rete neurale di approssimare un’ampia classe di funzioni matematiche.

Leggi l’articolo sul teorema di Cybenko
Il teorema di approssimazione universale

Quello che una rete fa è prevedere y a partire da x caso per caso senza mostrare esplicitamente la relazione matematica esatta tra input e output come farebbe una funzione matematica tradizionale. Le reti neurali apprendono le relazioni tra input e output attraverso il training su dati, catturando pattern e correlazioni complessi che possono non essere facilmente espressi con equazioni matematiche semplici.

Le reti neurali funzionano come “scatole nere” dove le relazioni apprese sono distribuite attraverso molti pesi e bias nelle varie unità (neuroni) del modello. Queste relazioni non sono esplicitamente codificate in una forma che sia facilmente comprensibile o interpretabile.

Di conseguenza:

Non si può estrarre direttamente una formula matematica che descriva esattamente come l’output viene generato dagli input.

Le informazioni sono distribuite attraverso numerosi neuroni e strati, rendendo difficile tracciare il contributo specifico di ciascun input all’output finale.

Dal punto di vista analitico, ciò che una rete neurale produce è essenzialmente una funzione composta di funzioni di attivazione (come le sigmoidi, ReLU, ecc.) e combinazioni lineari (polinomi di primo grado) dei pesi e bias. Questo può sembrare limitato rispetto alla capacità di cogliere la complessità delle relazioni reali. Tuttavia, ci sono diversi aspetti che permettono alle reti neurali di rappresentare e approssimare in modo efficace funzioni complesse.

Capacità di approssimazione delle reti neurali

Le reti neurali profonde (deep neural networks) costruiscono funzioni complesse attraverso la composizione di funzioni più semplici. Ogni strato della rete prende come input l’output dello strato precedente e applica una trasformazione non lineare seguita da una combinazione lineare.

Come abbiamo anticipato, il Teorema di Approssimazione Universale afferma che una rete neurale con almeno uno strato nascosto può approssimare qualsiasi funzione continua su un intervallo chiuso e limitato, a condizione di avere un numero sufficiente di neuroni. Questo teorema si estende a reti più profonde, che possono approssimare funzioni con maggiore efficienza e meno neuroni complessivi rispetto a una rete con un solo strato nascosto.

Sebbene le reti neurali siano potenti strumenti di approssimazione, l’interpretabilità delle relazioni apprese può essere difficile. La rappresentazione delle relazioni in termini di funzioni composte di sigmoidi e combinazioni lineari non è sempre intuitiva o facilmente comprensibile.

Variabili latenti

Nelle reti neurali possono esistere variabili nascoste o latenti, simili a come il tempo può essere una variabile nascosta nelle equazioni di una traiettoria. Queste variabili latenti rappresentano concetti o caratteristiche apprese durante il training che non sono esplicitamente presenti negli input ma sono cruciali per la predizione degli output.

Esempio delle Traiettorie

Se abbiamo una funzione y=f(x) che descrive una relazione tra y e x, e sappiamo che entrambe x e y dipendono da un parametro t (ad esempio il tempo), allora f(x) può nascondere informazioni cruciali sulla dipendenza da t. Questo concetto si traduce nelle reti neurali quando non consideriamo un attributo o una proprietà importante al momento di definire gli input del modello.

Supponiamo di avere una situazione dove x e y sono funzioni del tempo t:

x=x(t)
y=y(t)

La relazione y=f(x) descrive la dipendenza di y da x senza esplicitamente considerare il parametro t. Tuttavia, questa relazione potrebbe nascondere informazioni importanti su come x e y evolvono nel tempo.

Il parametro t è cruciale perché fornisce il contesto dinamico per la relazione tra x e y. Senza considerare t, possiamo perdere dettagli importanti sulla natura temporale della relazione

Quando si trascura una proprietà

Nelle reti neurali, se non consideriamo un attributo o una proprietà importante come input, possiamo perdere informazioni essenziali per il modello. Questo può portare a una rappresentazione incompleta o inaccurata delle relazioni sottostanti.

Supponiamo di avere un modello di rete neurale che predice la temperatura y in una stanza basata sulla posizione di un termostato x. La temperatura e la posizione del termostato sono entrambe funzioni del tempo t:

x(t)=posizione del termostato nel tempo
y(t)=temperatura nel tempo

Se modelliamo semplicemente y=f(x), possiamo trascurare come la posizione del termostato e la temperatura cambiano nel tempo. La relazione temporale potrebbe essere cruciale per una previsione accurata.

Includere il tempo come attributo può migliorare significativamente le predizioni:
Input alla rete neurale: [x(t),t]
Output: y(t)

Se non includiamo il tempo:
Input alla rete neurale: [x]
Output: y

In questo caso, possiamo perdere informazioni importanti su come x e y cambiano nel tempo.

In particolare, in situazioni dove le variabili dipendono dal tempo o da altri parametri nascosti, è importante includere questi parametri per catturare le relazioni fondamentali e dinamiche tra le variabili. Questo approccio migliora l’accuratezza e l’interpretabilità dei modelli di apprendimento automatico.

Oltre al tempo, ci sono molti altri esempi in cui trascurare un attributo o una proprietà importante può compromettere la capacità di una rete neurale di generalizzare correttamente. Ecco alcuni esempi in vari contesti:

  1. Predizione del Prezzo delle Case

Immagina di addestrare una rete neurale per predire il prezzo delle case basata su variabili come la dimensione della casa (x1​) e il numero di camere da letto (x2​)

La posizione geografica (x3​) trascurata è un fattore cruciale nel determinare il prezzo delle case. Case con caratteristiche identiche possono avere prezzi molto diversi a seconda della loro ubicazione.
Conseguenze:

Se il modello non considera la posizione geografica, potrebbe fare predizioni inaccurate perché ignora le variazioni di prezzo significative dovute alla localizzazione.

  1. Diagnosi Medica

Una rete neurale viene addestrata per diagnosticare una malattia basata su sintomi come febbre (x1​), tosse (x2) e mal di testa (x3​).

Il fattore genetico o storia familiare (x4​) trascurato è un attributo importante che può influenzare la predisposizione a determinate malattie.
Conseguenze:

Senza considerare i fattori genetici, la rete neurale potrebbe mancare di predire correttamente alcune malattie ereditarie o sottovalutare il rischio per pazienti con una storia familiare significativa. Ad esempio, la probabilità di sviluppare determinate condizioni cardiache può essere molto più alta per qualcuno con una storia familiare rispetto a qualcuno senza tale storia, anche se presentano gli stessi sintomi.

  1. Raccomandazioni di Prodotti

Un sistema di raccomandazione utilizza una rete neurale per suggerire nuovi prodotti ai clienti basandosi su dati come il comportamento di acquisto passato (x1) e le recensioni dei prodotti (x2​).

Il contesto sociale (x3) trascurato, come le connessioni sociali e le raccomandazioni dei amici, può influenzare fortemente le decisioni di acquisto.

Ignorare il contesto sociale potrebbe portare a raccomandazioni meno pertinenti. Ad esempio, un cliente potrebbe essere più incline ad acquistare un prodotto perché è stato consigliato da un amico di cui si fida, indipendentemente dal proprio comportamento di acquisto passato o dalle recensioni generali del prodotto.

  1. Analisi del Sentimento

Una rete neurale viene addestrata per analizzare il sentimento di recensioni di prodotti basandosi su caratteristiche come la frequenza delle parole positive (x1​) e negative (x2).

Il contesto linguistico (x3) trascurato o sarcarmo può essere cruciale per comprendere correttamente il sentimento. Parole che sono generalmente positive o negative possono assumere significati diversi a seconda del contesto.
Conseguenze:

Se il modello non considera il contesto linguistico, può interpretare erroneamente il sentimento. Ad esempio, “Il prodotto è fantastico… se vuoi sprecare i tuoi soldi” ha parole positive ma un sentimento negativo.

  1. Classificazione di Immagini

Una rete neurale viene addestrata per classificare immagini di animali basandosi su caratteristiche visive come colore (x1​) e forma (x2​).

Informazioni sullo sfondo (x3​) trascurate possono essere rilevanti. Ad esempio, un animale specifico potrebbe essere più probabilmente visto in un certo tipo di ambiente.
Conseguenze:

Se non si considera lo sfondo, la rete potrebbe fare errori di classificazione. Ad esempio, potrebbe classificare erroneamente un delfino come un pesce se non considera che i delfini sono generalmente visti in mare aperto mentre i pesci possono essere visti in diversi tipi di ambienti acquatici.

Questi esempi illustrano come trascurare un attributo cruciale può compromettere la capacità di una rete neurale di generalizzare correttamente. Identificare e includere tutti gli attributi rilevanti è fondamentale per costruire modelli accurati e robusti che possano catturare le vere relazioni sottostanti nei dati.

Tecniche per scoprire relazioni

Autoencoder: Possono essere utilizzati per scoprire rappresentazioni latenti nei dati, cercando di comprimere l’input in un codice più piccolo (rappresentazione latente) e poi ricostruirlo.

Analisi delle Attivazioni: Studiare le attivazioni interne della rete può rivelare come certe feature latenti influenzano le predizioni.

Modelli Interpretabili: Combinare reti neurali con modelli interpretabili (come alberi decisionali) può aiutare a estrarre relazioni più chiare.

Gli alberi delle decisioni possono essere utilizzati per rendere più interpretabile una rete neurale attraverso diverse tecniche e approcci, spesso combinando i punti di forza di entrambe le metodologie.

Per un approfondimento sugli alberi delle decisioni leggi l’articolo
L’albero delle decisioni e il machine learning

Un approccio comune consiste nell’addestrare un albero delle decisioni sui risultati delle predizioni della rete neurale. Questo può essere fatto utilizzando il dataset di input originale e le predizioni della rete neurale come etichette di output per l’albero delle decisioni.

Si addestra la rete neurale sul dataset originale. Poi si impiega la rete neurale per generare predizioni sul dataset di addestramento o su un dataset separato di validazione. Si utilizzano le predizioni della rete neurale come target per addestrare un albero delle decisioni con gli stessi input originali.

L’albero delle decisioni risultante può essere ispezionato per comprendere quali feature e soglie sono importanti per le predizioni, fornendo una rappresentazione interpretabile delle decisioni della rete neurale.

Immagina una rete neurale addestrata per predire il rischio di default di un prestito bancario basato su variabili come il reddito, il debito, l’età, ecc.

La rete neurale è addestrata con i dati storici.
Utilizzi la rete neurale per generare predizioni sui dati di training.
Utilizzi queste predizioni come target per addestrare un albero delle decisioni.
L’albero delle decisioni potrebbe mostrare che i fattori più importanti per predire il rischio di default sono il rapporto debito/reddito e l’età, con soglie specifiche che indicano quando il rischio aumenta.