Quando una variabile target è influenzata da più fonti di informazione, è fondamentale (e tuttavia non banale) capire come ciascuna fonte contribuisce all’informazione complessiva fornita.
In questo articolo inizierò con il concetto base di sorpresa, poi procederò a spiegare come l’entropia consista nella quantità media di sorpresa distribuita su una variabile casuale, e questo ci fornisce le condizioni per definire l’informazione reciproca. Successivamente, parlerò di scomposizione parziale delle informazioni per i casi in cui disponiamo di più fonti di informazione.
Forse uno dei modi più intuitivi per definire l’entropia dal punto di vista dell’informazione è parlare prima di essa sorpresa. La misura della sorpresa funziona proprio come ci aspettiamo: gli eventi meno probabili sono più sorprendenti, mentre gli eventi più probabili sono meno sorprendenti. La definizione matematica che racchiude queste proprietà è quella riportata di seguito:
Possiamo vedere dal grafico nella Figura 1 che questa definizione è piuttosto correlata alle proprietà di cui abbiamo parlato. Quando un evento ha un’alta probabilità che si verifichi (p più vicino a 1), la sorpresa è prossima allo zero. D’altra parte, se un evento ha una probabilità molto bassa che si verifichi, la sua sorpresa diventa arbitrariamente grande.
Ora, cosa c’entra l’entropia con la sorpresa? Ebbene, l’entropia è la sorpresa media su tutti i valori di una variabile casuale. Pertanto, se abbiamo una variabile casuale X e l’insieme di tutti i possibili risultati di X è chiamato A_X (lo chiamiamo “alfabeto di X”), allora l’entropia H è definita come:
Grande. Ora che abbiamo legato l’entropia alla sorpresa, possiamo comprendere un’utile interpretazione dell’entropia:
EL’ntropia è una misura dell’ignoranza.
Come può essere? Lo spiegherò con un esempio stupido. Immagina di dover sostenere un esame finale di fisica. All’interno del linguaggio che abbiamo sviluppato finora, possiamo considerare il test come una variabile casuale con un certo alfabeto di possibili domande. Supponiamo ora due scenari:
- Hai studiato duramente per questo esame e sai che tipo di domande ci saranno nell’esame, quindi in medianon sarai così sorpreso dal tuo esame.
- Non hai studiato davvero e non sai quale tipo di domande ci saranno nell’esame, quindi il tuo livello di sorpresa sarà piuttosto alto durante l’esame.
Quindi, quando la tua sorpresa media è maggiore, coincide perfettamente con lo scenario in cui non hai così tante informazioni.
Da un punto di vista tecnico, le distribuzioni con più picchi (ad esempio, distribuzioni in cui è più probabile che si verifichino determinati valori rispetto ad altri) hanno un’entropia inferiore rispetto a quelle più disperse, dove ogni evento ha all’incirca la stessa probabilità di verificarsi. Ecco perché diciamo che la distribuzione con la massima entropia è la distribuzione uniforme, dove qualsiasi valore può verificarsi con la stessa probabilità.
Ora che abbiamo stabilito una misura della sorpresa media su un sistema descritto da una variabile casuale (questa è l’entropia), possiamo creare il collegamento dell’entropia con l’informazione.
Poiché l’entropia è una misura dell’ignoranza su alcuni sistemi, la sua mancanza rappresenta… informazione. In questo senso, è abbastanza naturale creare una misura chiamata informazione reciproca: misura le informazioni che ottieni una volta che conosci alcune informazioni sul sistema:
Questa definizione dice: prendi la sorpresa media di una variabile casuale X, poi prendi la sorpresa media della variabile casuale X, ma ora considera che conosciamo il risultato di un’altra variabile casuale Y. Sottrai la prima per la seconda e saprai come tanto ignoranza hai rimosso dal tuo sistema X sapendo di Y.
Torniamo al nostro stupido esempio: supponiamo che tu non sappia quali domande verranno poste nel tuo test, e questa è X. Supponiamo ora che un tuo amico abbia fatto un test dallo stesso insegnante, sullo stesso argomento, uno settimana prima del test. Ti dice tutto quello il suo test coperto (che sembra essere un’altra variabile casuale Y). La cosa più plausibile da dire è che la tua ignoranza rispetto al test è diminuita, il che significa che il tuo test X e il test Y del tuo amico condividono informazioni.
Nella Figura 2 c’è un diagramma di Venn carino e comprensibile che mostra la relazione tra le entropie e le informazioni condivise tra una coppia di variabili X e Y.
Finora abbiamo parlato solo di casi in cui abbiamo una caratteristica X e una variabile target Y, ma è abbastanza ovvio che questo non si generalizza bene. Quindi, ora immaginiamo di avere una variabile casuale Y (diciamo, una variabile obiettivo di un modello di classificazione) e di voler conoscere la quantità di informazioni fornite da ciascuna delle n caratteristiche del modello X_1, X_2, …, X_n. Si potrebbe dire che è sufficiente calcolare la mutua informazione condivisa da X_1 e Y, poi da X_2 e Y e così via. Ebbene, nel mondo reale, le nostre caratteristiche possono interagire tra loro e creare relazioni non banali, e se vogliamo avere un quadro coerente dobbiamo tenere conto di queste interazioni.
Prendiamo il caso in cui abbiamo due segnali di input X_1 e X_2 e vogliamo quantificare le informazioni reciproche tra queste due caratteristiche e una caratteristica target Y. Cioè, vogliamo calcolare I(Y; {X_1, X_2}). Il quadro della scomposizione parziale delle informazioni afferma che queste informazioni possono essere suddivise in quattro componenti non negative:
- Sin(Y; {X_1, X_2}): la sinergia delle due funzionalità. Si tratta di una quantità di informazioni su Y fornite esclusivamente dalle due funzionalità insieme.
- Rdn(Y; {X_1, X_2}): la Ridondanza delle due funzionalità. Questa quantità rappresenta l’informazione su Y che può essere spiegata solo con X_1 o X_2.
- Unq(Y; X_1) e Unq(Y; X_2): l’Informazione Unica, che misura l’informazione su Y che solo X_1 può spiegare per Unq(Y; X_1) o che solo X_2 può spiegare per Unq(Y; X_2).
Nota solo quello Unq(Y; X_1) e Unq(Y; X_2) corrispondono a uno scenario di nessuna interazione tra le funzionalità. Quindi, l’informazione reciproca IO(Y; {X_1, X_2}) può essere scomposto nelle sue quattro componenti:
IO(Y; {X_1, X_2}) = Sin(Y; {X_1, X_2}) + Rdn(Y; {X_1, X_2}) + Unq(Y; X_1) + Unq(Y;X_2)
Proprio come prima, possiamo disegnare un simpatico diagramma di Venn che riassume la dipendenza di queste quantità.
Ciascuno di questi termini è chiamato an atomo di informazione. Qualsiasi informazione non atomica può essere scomposta in parti atomiche, che non possono essere scomposte.
Sono stati Williams e Beer (1) i primi a proporre questo quadro (e a trovare un modo per calcolare le informazioni parziali). Si scopre che il calcolo di queste quantità non è banale e merita un articolo a parte. Esiste più di una misura di scomposizione parziale dell’informazione, e tutte seguono lo stesso processo: immaginano una misura che soddisfi una serie di caratteristiche piacevoli da avere e che sia coerente con ciò che ci aspettiamo accada con una certa quantità chiamata ” informazione”. Tutte queste misurazioni hanno punti forti e deboli e sono ben implementate dit
libreria, che verrà brevemente introdotta e utilizzata per fornire alcuni esempi nella sezione successiva.
Esempi di decomposizione di informazioni parziali e libreria dit
Per legare insieme questi concetti, vediamo alcuni esempi. IL dit
La biblioteca è un ottimo strumento per questi esperimenti quando si tratta di concetti di teoria dell’informazione. Si tratta di una lib che consiste nel creare distribuzioni di probabilità personalizzate e quindi eseguire misurazioni su di esse. Ci sono diverse funzionalità all’interno di questa libreria e possono essere trovate sul loro Github o presso l’ufficiale pagina della documentazione.
Per tutti gli esempi a venire, possiamo pensare a due funzionalità X_1 e X_2, entrambe binarie, e la variabile di destinazione Y è un’operazione booleana con le funzionalità. Tutte le forme di misurazione dell’informazione parziale saranno dovute a Williams e Beer (1), ma sono implementate anche altre forme proposte da altri autori dit
.
Informazioni uniche
Per questo esempio, immagina che la variabile di destinazione Y sia la porta AND. Si noti, dalla Fig. 4, che l’output è sempre uguale alla caratteristica X_1, il che rende la caratteristica X_2 completamente irrilevante.
Per questo motivo l’informazione che X_1 e X_2 forniscono su Y è tutta concentrata in X_1. Nel formalismo fin qui sviluppato possiamo dire che l’informazione su Y è unico a X_1.
In dit
libreria, possiamo crearla come:
import dit # importing dit library
from dit.pid import PID_WB # importing the PID measure we want to use# creating a probability distribution of AND gate
dist_unique = dit.Distribution(("000", "010", "101", "111"), (1/4, 1/4, 1/4, 1/4))
print(PID_WB(dist_unique))
"""
Out:
+--------+--------+--------+
| I_min | I_r | pi |
+--------+--------+--------+
| {0:1} | 1.0000 | 0.0000 |
| {0} | 1.0000 | 1.0000 |
| {1} | 0.0000 | 0.0000 |
| {0}{1} | 0.0000 | 0.0000 |
+--------+--------+--------+
"""
IL dit
la libreria codifica il tipo di informazioni come segue:
- {0:1}: l’informazione sinergica tra X_1 e X_2
- {0}: informazioni univoche fornite da X_1
- {1}: informazioni univoche fornite da X_2
- {0}{1}: informazioni ridondanti fornite da X_1 e X_2
Possiamo vedere dall’output che l’unica informazione parziale (la colonna “pi”) fornita proviene da X_1.
Informazioni ridondanti
Il prossimo esempio serve a mostrare le informazioni ridondanti. Qui, sia X_1, X_2 e Y sono uguali come mostrato in Fig. 5, quindi le informazioni ridondanti su Y fornite da X_1 e X_2 sono massime.
Utilizzando dit
il codice è così:
import dit # importing dit library
from dit.pid import PID_WB # importing the PID measure we want to use# creating a redundant probability distribution
dist_redundant = dit.Distribution(("000", "111"), (1/2, 1/2))
print(PID_WB(d_redundant))
"""
Out:
+--------+--------+--------+
| I_min | I_r | pi |
+--------+--------+--------+
| {0:1} | 1.0000 | 0.0000 |
| {0} | 1.0000 | 0.0000 |
| {1} | 1.0000 | 0.0000 |
| {0}{1} | 1.0000 | 1.0000 |
+--------+--------+--------+
"""
Come possiamo vedere, l’unica informazione su Y fornita da X_1 e X_2 è ridondante, ovvero fornita da entrambi.
Informazioni sinergiche
Un classico esempio di informazione sinergica è il cancello XOR. Lo schema per la porta XOR è mostrato in Fig. 6.
Nota da questa distribuzione che possiamo conoscere la variabile target Y solo dopo aver conosciuto sia X_1 che X_2. Non è possibile conoscere Y senza X_1 e X_2, semplicemente perché per ogni valore di X_1 abbiamo entrambi i valori di Y; e lo stesso vale per X_2. Il codice dentrodit
va:
import dit # importing dit library
from dit.pid import PID_WB # importing the PID measure we want to use# creating a probability distribution of XOR gate
dist_syn = dit.Distribution(("000", "011", "101", "110"), (1/4)*4)
print(dist_syn)
"""
Out:
+--------+--------+--------+
| I_min | I_r | pi |
+--------+--------+--------+
| {0:1} | 1.0000 | 1.0000 |
| {0} | 0.0000 | 0.0000 |
| {1} | 0.0000 | 0.0000 |
| {0}{1} | 0.0000 | 0.0000 |
+--------+--------+--------+
"""
Come previsto, l’unica informazione su Y trasmessa da X_1 e X_2 è {0:1}, che è l’informazione sinergica.
Infine, possiamo vedere che l’interazione tra le variabili può rappresentare una sfida difficile quando disponiamo solo di informazioni reciproche. È necessario che esista uno strumento per misurare le informazioni provenienti da più fonti (e possibilmente l’interazione tra queste fonti di informazione). Questo è un terreno perfetto per il framework PID (Partial Information Decomposition).
Di solito, le misurazioni in questo campo sono contorte e implicano una certa logica formale: questo può essere lasciato per un altro articolo approfondito su questo argomento, ma ora è sufficiente dire che questi strumenti non solo sono importanti, ma la loro necessità nasce naturalmente dall’approccio informativo .
(1) PL Williams e RD Birra, Scomposizione non negativa dell’informazione multivariata, arXiv prestampa arXiv:1004.25152010
(2) Shujian Yu, et al., Comprensione delle reti neurali convoluzionali con la teoria dell’informazione: un’esplorazione iniziale, arXiv prestampa arXiv:1804.06537v5, 2020
(3) AJ Gutknecht, M. Wibral e A. Makkeh, Bit e pezzi: comprendere la scomposizione delle informazioni dalle relazioni parte-tutto e dalla logica formale, arXiv prestampa arXiv:2008.09535v2, 2022
(4) James, RG, Ellison, CJ e Crutchfield, JP, dit: un pacchetto Python per la teoria dell’informazione discretaIl giornale del software open source, 2018
Fonte: towardsdatascience.com