La possibilità di ridurre le dimensioni di un file potendolo poi ricostruire completamente è una di quelle tecniche che utilizziamo quotidianamente, spesso senza rendercene conto, e che semplificano moltissimo il nostro utilizzo delle tecnologie informatiche.
Ci sono due circostanze in particolare in cui apprezziamo la possibilità di comprimere file, cartelle e interi dischi:
- quando vogliamo risparmiare lo spazio in un dispositivo di backup, come un disco rigido esterno
- quando vogliamo risparmiare il tempo di trasmissione di un file lungo un canale di comunicazione, per esempio una connessione internet.
Breve storia della compressione dei dati
Le tecniche di compressione dei dati che non fanno perdere informazione (la cosiddetta compressione lossless) risalgono agli albori dell’informatica e trovano il loro riferimento nella cosiddetta “teoria dell’informazione”, un’applicazione del calcolo delle probabilità allo studio della trasmissione dei dati. Negli anni Quaranta il suo inventore, il grande matematico e ingegnere statunitense Claude Shannon, la chiamava “teoria matematica della comunicazione”, che consisteva nello stabilire i requisiti per una trasmissione di dati lungo un canale fisico di comunicazione, quindi soggetto a disturbi e interferenze, in modo da assicurarsi che il messaggio giungesse nella sua integrità.
Nello studiare questo problema di completezza del dato, Shannon dovette stabilire cosa fosse il contenuto del messaggio trasmesso e formulò il concetto matematico di informazione misurata in bit. Quella stessa teoria consentiva quindi di studiare le tecniche di codifica dell’informazione contenuta in un messaggio in codici più compatti, tali da consentire la ricostruzione del messaggio stesso. Dunque la compressione dei dati.
Compressione uguale perdita di dati?
Molti algoritmi di compressione che usiamo quotidianamente, quando comprimono un messaggio ne perdono alcune informazioni, secondo un compromesso che attribuisce più o meno valore al rapporto “quantità di informazione/riduzione delle risorse da trattare”: per esempio tutti usiamo video e audio in mp4 e mp3, che sono formati nei quali l’informazione è compressa e campionata, in modo da consentirne una ricostruzione parziale, ma tale da mantenere il contenuto essenziale del messaggio originale. Chiaramente un orecchio esperto riconosce, per esempio, la differenza fra l’audio originale e la compressione mp3 di un concerto per pianoforte, ma per i brani pop o per i podcast, nei quali la purezza del suono e la distinzione delle diverse armoniche che, sovrapposte, lo compongono non sono essenziali: non a caso, infatti, è il formato più diffuso su Internet, dato che per far transitare in rete un audio è necessario scambiare messaggi molto lunghi. Anche il formato pdf è già compresso e infatti, se proviamo a zipparlo, il guadagno di spazio è risibile.
A maggior ragione i formati video sono sempre sottoposti a compressione, che campiona il segnale in modo da non trasmetterlo nella sua interezza ma eliminando delle parti considerate “trascurabili”. Tecniche analoghe consentono di filtrare un segnale per eliminarne il rumore di fondo, o per esaltarne alcune caratteristiche e reprimerne altre: alcuni apparecchi acustici, per esempio, tagliano delle frequenze che sono fastidiose per chi soffre di certe malattie dell’apparato uditivo e sviluppa un’emicrania in qualsiasi locale pubblico a causa dei rumori di fondo, che normalmente il nostro orecchio e il nostro cervello riescono a filtrare e ignorare.
Perché, a dirla tutta, anche noi comprimiamo le informazioni, in vario modo e per vari motivi: fin da piccoli, a ben vedere, ce lo hanno insegnato. Quando dovevamo, alle scuole elementari, fare i “riassunti” di un testo ci veniva chiesto di farne una compressione (non lossless, ma che perdeva alcune parti del messaggio originario) per estrarne il contenuto fondamentale di informazione e trascurare il resto.
Compressione chiama comprensione: e il machine learning?
È significativo che una tale abilità sia collegata alla capacità di comprensione di un testo, come a dire che comprimere implica il saper comprendere e che quindi la compressione necessita della comprensione. In tempi nei quali le abilità della mente umana sono sempre più riprodotte, imitate e potenziate dai software, non stupisce che la compressione dei dati sia utilizzata anche per la loro comprensione: per esempio si utilizza la compressione per il data mining, l’estrazione di informazioni “nascoste” ma importanti da insiemi di dati.
Diversi studi basati su una teoria che combina la teoria di Shannon con la calcolabilità di Turing, la cosiddetta “teoria algoritmica dell’informazione”, o complessità di Kolmogorov (il geniale matematico russo che ha assiomatizzato il calcolo delle probabilità), hanno creato algoritmi per mezzo dei quali, comprimendo dati e poi confrontando i codici risultanti dalla compressione secondo metriche più o meno semplici e facilmente calcolabili, è possibile classificare i dati in modo del tutto analogo a quanto fanno gli algoritmi di machine learning come le reti neurali.
Tecniche di questo tipo funzionano bene con sequenze di simboli di un certo alfabeto, come i testi nelle lingue umane o anche il DNA, che, semplificando, è un testo costruito mettendo in sequenza quattro caratteri (le basi A, C, G e T). Il genoma completo di un essere umano richiede circa 3 Gigabyte per essere memorizzato. Tuttavia, per confrontare porzioni di DNA e capire meglio come certi geni attivano determinate proteine, si confrontano DNA diversi, comprimendoli secondo algoritmi di compressione lossless specificatamente pensati per il DNA, riuscendo così a ottenere risultati di clustering interessanti.
Tecniche analoghe sono applicate a stringhe che rappresentano non necessariamente testi in una lingua, ma informazioni estratte da immagini o video, e in molti casi si riesce a classificare queste informazioni semplicemente comprimendole e applicando delle formule di correlazione semplici, che utilizzano soltanto la lunghezza del file compresso e non il dato compresso in sé.
Qual è la chiave degli algoritmi e delle tecniche di analisi dei dati?
Questa sorprendente correlazione fra il significato e il contenuto di informazioni di un dato e la lunghezza del dato compresso è spiegabile dalle teorie che abbiamo menzionato e fornisce quindi uno strumento di classificazione e clustering che, per esempio rispetto alle reti neurali , ha l’invidiabile caratteristica di sapere perché funziona e di non dipendere da parametri di configurazione, che devono essere calibrati sulla base dei casi specifici.
D’altra parte il nostro cervello, del quale una rete neurale è un modello ipersemplificato, sembra funzionare in modo diverso: una rete neurale per imparare a distinguere cani da gatti, per esempio, deve essere addestrata con milioni di esempi. Ma un bambino di tre anni sa distinguere un cane da un gatto senza averne visti così tanti. Se chiediamo a un bimbo di disegnare un gatto, fornirà un disegno molto schematico nel quale però ci saranno dei caratteri distintivi come i baffi o la coda, che in qualche modo catturano e caratterizzano l’informazione “essere gatto”. In altri termini, il bambino, con quel disegno, comprime l’oggetto che ha in mente eliminando le informazioni non essenziali e mantenendo soltanto quelle distintive, in modo che noi possiamo comprendere l’oggetto che ha in mente guardando il messaggio compresso.
Forse nel rapporto fra compressione e comprensione (che in fondo sono quasi la stessa parola nella nostra lingua!) si trova una delle chiavi degli algoritmi e delle tecniche di analisi dei dati degli anni a venire, prossime al modo umano di trattare le informazioni, non nell’architettura dell’algoritmo ma nella sostanza di come elabora i dati e fornisce le proprie risposte agli stimoli dell’ambiente. Per finire, se questo articolo vi è sembrato interessante: provate a farne un riassunto!
Paolo Caressa