Cross-entropy: la funzione che permette ai modelli di AI di migliorarsi.

Cross-entropy: la funzione che permette ai modelli di AI di migliorarsi.

Condividi con i tuoi amici...

Immagina di avere due cesti, uno pieno di mele e l’altro di arance. Ogni volta che vedi un frutto, devi decidere se è una mela e quindi va messo nel cesto delle mele, oppure se è un’arancia e va nel cesto delle arance. Un modello di classificazione come quello della regressione logistica è come un gioco che ti aiuta a fare questa scelta. Questo gioco, però, non ti dice subito “questa è una mela” o “questa è un’arancia”, ma invece ti dà un indizio su quanto è probabile che il frutto sia una mela o un’arancia, usando un numero tra 0 e 1. Se il gioco ti dice 0, significa che è completamente sicuro che il frutto sia un’arancia; se ti dice 1, è completamente sicuro che sia una mela. Un numero come 0.5 significa che il gioco è indeciso.

Ora, per capire quanto stai giocando bene, usiamo qualcosa chiamato “cross entropy“, che funziona un po’ come un punteggio. Questo punteggio ci dice quanto bene stai indovinando dove vanno i frutti, basandosi su quanto sei sicuro delle tue scelte. Se sei molto sicuro della tua scelta e indovini, ottieni un punteggio basso, che è buono. Ma se sei molto sicuro e sbagli, il tuo punteggio sarà alto, il che è cattivo. L’idea è quella di avere un punteggio il più basso possibile, il che significa che stai facendo un ottimo lavoro nel distinguere le mele dalle arance.

Ad esempio, se il gioco indica che un frutto ha il 90% di possibilità di essere una mela e tu lo metti nel cesto delle mele, e il frutto è effettivamente una mela, allora ottieni un punteggio basso come ricompensa. Ma se per te c’è un’alta probabilità che il frutto sia una mela e tu lo metti nel cesto delle mele ma poi scopri che è un’arancia, riceveresti un punteggio molto alto, che indica un errore.

In sostanza, i modelli di classificazione come quello della regressione logistica aiutano a decidere se un frutto è una mela o un’arancia basandosi su indizi numerici, e la cross entropy ci aiuta a capire quanto bene stiamo facendo nel gioco, cercando di migliorare e fare meno errori possibile.

La cross-entropy nella teoria dell’informazione

La cross-entropy è un concetto fondamentale nell’ambito dell’informazione e dell’apprendimento automatico, in particolare nelle applicazioni di classificazione. Originariamente derivata dalla teoria dell’informazione, la cross-entropy misura la quantità di informazione necessaria per identificare un evento da una serie di possibilità, quando si utilizzano previsioni basate su una distribuzione di probabilità specifica.

la cross-entropy ha le sue radici nella teoria dell’informazione, introdotta da Claude Shannon negli anni ’40. Shannon definì l’entropia H(X) come una misura dell’incertezza o della sorpresa associata all’esito di una variabile casuale X.

La cross-entropy estende questo concetto per misurare non solo l’incertezza intrinseca di una distribuzione di probabilità, ma anche l’inefficienza nell’assumere che la distribuzione sia diversa da quella vera.

Ricordiamo come è definita l’entropia nella teoria dell’informazione
Leggi l’articolo L’entropia nella teoria dell’informazione

Data una vera distribuzione di probabilità p e una distribuzione di probabilità predetta q su un insieme di eventi, la cross-entropy tra p e q è definita come:

dove la somma è su tutti gli esiti possibili x, p(x) è la probabilità vera dell’esito x, e q(x) è la probabilità predetta dell’esito x.

Attenzione! Più avanti al posto di x si userà k per indicare la variabile aleatoria delle distribuzioni di probabilità che coinciderà con l’indice di classe.

Questa formula valuta quanto efficacemente la distribuzione predetta q rappresenta la vera distribuzione degli eventi p. Il concetto chiave qui è che la cross-entropy non misura solo l’incertezza intrinseca degli eventi (come fa l’entropia), ma misura anche l’inefficienza introdotta quando si utilizza una distribuzione predetta q per rappresentare o “codificare” gli eventi rispetto alla distribuzione vera p.

L’inefficienza, in questo contesto, si riferisce alla quantità aggiuntiva di sorpresa o incertezza generata quando si assume erroneamente che la distribuzione degli eventi segua q invece di p. Se q corrisponde perfettamente a p, la cross-entropy è uguale all’entropia di p, indicando che non c’è inefficienza: la distribuzione predetta cattura perfettamente l’incertezza intrinseca degli eventi. Tuttavia, quando q devia da p, la cross-entropy aumenta, riflettendo l’inefficienza o il costo aggiuntivo in termini di informazione persa o sorpresa inaspettata dovuta a previsioni imprecise.

Approfondimento

Nella teoria dell’informazione di Claude Shannon, p(x) e q(x) rappresentano due distribuzioni di probabilità associate agli eventi generati da una sorgente di informazione. La teoria dell’informazione si occupa principalmente di quantificare, trasmettere e conservare l’informazione in modo efficiente.

La distribuzione vera p(x) rappresenta le probabilità reali degli eventi o dei messaggi prodotti da una sorgente di informazione. Questa distribuzione riflette come gli eventi si verificano naturalmente o sono distribuiti nel contesto di interesse.

La distribuzione predetta q(x), d’altra parte, rappresenta una stima o un modello delle probabilità degli eventi. Nella teoria dell’informazione, q(x) potrebbe essere usata per rappresentare la distribuzione di probabilità che un ricevitore (o un sistema di codifica) assume essere vera mentre decodifica i messaggi ricevuti.

Il legame tra queste distribuzioni di probabilità e la codifica dell’informazione risiede nel concetto di efficienza e nella minimizzazione della ridondanza durante la trasmissione dell’informazione. Shannon ha dimostrato che, per trasmettere l’informazione in modo più efficiente possibile (minimizzando la lunghezza media dei messaggi), il codice utilizzato dovrebbe riflettere la distribuzione vera degli eventi p(x).

Questo significa che gli eventi più probabili dovrebbero essere codificati con stringhe di bit più corte, mentre quelli meno probabili con stringhe più lunghe, un principio noto come codifica di Shannon-Fano o codifica di Huffman.

Per comprendere la relazione tra un linguaggio e la sua codifica leggi l’articolo
L’entropia nella teoria dell’informazione

H(p) misura l’incertezza media o la quantità di informazione prodotta da una sorgente di informazione. In termini di codifica, rappresenta la lunghezza media minima che un codice (per un dato insieme di simboli o eventi) dovrebbe avere per rappresentare l’informazione senza perdite. L’entropia fornisce quindi un limite inferiore alla lunghezza media dei messaggi codificati.

La cross-entropy H(p,q) misura la quantità media di bit necessari per codificare i dati generati dalla distribuzione vera p(x) utilizzando un codice ottimizzato per una distribuzione q(x).

Se q(x) non corrisponde esattamente a p(x), la cross-entropy sarà maggiore dell’entropia di p, indicando che si stanno usando più bit del minimo necessario per la codifica a causa dell’assunzione errata sulla distribuzione degli eventi. Questo riflette l’inefficienza nella codifica dell’informazione dovuta alla discrepanza tra la distribuzione assunta e quella reale.

La cross-entropy nel machine learning

Nell’apprendimento automatico, minimizzare la cross-entropy tra la distribuzione delle etichette vere e le probabilità predette da un modello significa ridurre l’inefficienza. Ciò equivale a migliorare l’accuratezza delle previsioni del modello, rendendole il più vicine possibile alla realtà osservata. Questo approccio è particolarmente potente nei problemi di classificazione, dove l’obiettivo è prevedere la distribuzione di probabilità corretta per ogni classe.

In particolare, nell’apprendimento supervisionato e nella classificazione, la cross-entropy è utilizzata come funzione di perdita (loss function) per addestrare i modelli. Per la classificazione binaria, come per esempio nella regressione logistica, la cross-entropy misura la distanza tra le distribuzioni vere e predette delle etichette di classe. Per la classificazione multiclasse, si utilizza una versione generalizzata della cross-entropy, che considera la probabilità assegnata dal modello a ciascuna classe per ogni osservazione.

In pratica la distribuzione vera p(x) si determina mediante l’osservazione e la determinazione delle frequenze con cui appaiono nella realtà i risultati x, mentre q(x) è la probabilità che appaia il risultato x predetta dal modello di machine learning, che utilizza, per esempio un algoritmo di regressione logistica.

L’uso della cross-entropy come funzione di perdita ha diversi vantaggi, in particolare è sensibile alle probabilità predette che sono errate ma vicine al valore corretto, permettendo una più fine regolazione dei parametri del modello durante l’addestramento. Affronta direttamente l’obiettivo di massimizzare l’accuratezza della previsione delle probabilità, che è centrale in molti compiti di classificazione.

La cross-entropy nel caso di un classificatore binario

Una distribuzione di Bernoulli è una distribuzione discreta che prende valore 1 con probabilità q e valore 0 con probabilità 1−q. La funzione di massa di probabilità (PMF) di una variabile casuale di Bernoulli y è data da:

Così che P(1) = q e P(0) = 1-q

Nel contesto della regressione logistica, per esempio, vogliamo trovare i parametri del nostro modello (ad esempio, i pesi w) che massimizzano la probabilità (o, equivalentemente, minimizzano l’espressione negativa del logaritmo della probabilità) delle etichette osservate date le caratteristiche degli input. Per un singolo esempio, la log-probabilità (log-likelihood) data la distribuzione di Bernoulli è data applicando il logaritmo ad entrambi i membri dell’equazione di prima e tenendo conto delle proprietà del logaritmo:

Dove q è la probabilità predetta che y=1 data l’osservazione x (input), calcolata come q=σ(wx + b) usando la funzione sigmoide (vedi lo schema in fondo).

La funzione di perdita (o funzione di costo) che vogliamo minimizzare è il negativo della log-probabilità media su tutte le osservazioni N, che è equivalente a massimizzare la log-likelihood:

Questa è esattamente la funzione di perdita logaritmica o log loss che abbiamo discusso prima.

In generale…

Abbiamo già visto che la cross-entropy tra due distribuzioni di probabilità discrete p e q su un insieme di eventi è definita come:

Nel contesto della classificazione binaria, p rappresenta la distribuzione vera delle etichette (con p1=y e p0=1−y in quanto x assume solo due valori corrispondenti alle due classi 0, 1), che è una distribuzione di probabilità “pura” su un insieme di classi possibili (in questo caso due classi), dove la probabilità è concentrata interamente in un unico punto (la classe di appartenenza) e q rappresenta la distribuzione predetta con q1=q e q0=1−q associate alle due classi.

Sostituendo queste distribuzioni nella definizione della cross-entropy, otteniamo:

che è proprio quella già mostrata nel paragrafo precedente cambiata di segno.

La cross-entropy in un classificatore multinomiale

La formula della cross-entropy nel caso di un problema che coinvolge più esiti potrebbe essere scritta anche in questo modo:

Nel caso in cui gli esiti riguardino l’appartenenza di una prova i ad una classe si può introdurre il vettore yi Ad esempio, se abbiamo tre classi e l’i-esimo esempio appartiene alla seconda classe, la rappresentazione di yi​ sarebbe [0,1,0]. Questa notazione consente di gestire i dati di output in modelli di classificazione multiclasse in modo molto strutturato e si adatta bene all’uso di funzioni di perdita come la cross-entropy, che possono confrontare direttamente la distribuzione prevista dal modello (ad esempio, le probabilità di appartenenza a ciascuna classe) con l’effettiva distribuzione di appartenenza rappresentata dalla codifica. Se stiamo lavorando su un problema di classificazione delle immagini con quattro possibili etichette (ad esempio, gatto, cane, cavallo, nessuno), e abbiamo un’immagine di un cane, l’etichetta per questa immagine potrebbe essere yi=[0,1,0,0], indicando che l’immagine appartiene alla classe “cane”.

Questo significa che per ogni esempio i, yik definisce una distribuzione di probabilità discreta dove tutta la massa di probabilità è concentrata sulla classe di appartenenza vera dell’esempio.
La formula della cross entropy per un problema di classificazione multiclasse diventa:

Dove:

N è il numero totale di esempi nel dataset.
K è il numero di classi.
yik è l’indicatore dell’appartenenza dell’esempio i alla classe k (1 se l’esempio i appartiene alla classe k, altrimenti 0).
qik è la probabilità predetta dal modello che l’esempio i appartenga alla classe k.

In questa formula, la somma interna su k calcola la cross-entropy per un singolo esempio i confrontando la distribuzione vera delle etichette yik con la distribuzione predetta qik​ per tutte le classi. La somma esterna su i poi somma queste entropie incrociate per tutti gli esempi nel dataset, fornendo una misura complessiva della performance del modello su tutto il dataset.

yik in sé non è una distribuzione di probabilità nel senso tradizionale di una funzione che assegna probabilità a un insieme di esiti in un spazio di probabilità. Piuttosto, yik assume valori di 0 o 1 e viene utilizzato per indicare se l’esempio i appartiene alla classe k in un contesto di classificazione. Tuttavia, quando consideriamo l’intero set di valori yik per un dato esempio i attraverso tutte le classi k, questo set di valori può essere interpretato come una distribuzione di probabilità discreta, dove tutta la “massa di probabilità” (vale a dire, il valore 1) è assegnata esclusivamente alla classe di appartenenza vera dell’esempio, e 0 alle altre classi.

Quando usiamo yik nella formula della cross-entropy:

ogni termine yiklog⁡(qik) contribuisce alla somma solo se yik=1 (cioè, per la classe vera dell’esempio i). Questo significa che stiamo calcolando il logaritmo della probabilità predetta qik assegnata dal modello alla classe vera e sommando questi valori (negativi, poiché stiamo prendendo il logaritmo di numeri tra 0 e 1) su tutti gli esempi e tutte le classi.

Questo calcolo misura quanto bene il modello predice la classe vera per ogni esempio nel dataset, penalizzando le previsioni errate o incerte più fortemente rispetto a quelle corrette e sicure.

SCHEMA RIASSUNTIVO

(Attenzione! Si usa ŷ invece di q per indicare la probabilità predetta dal modello)