Campionamento, aliasing, teorema di Nyquist
Come si rappresenta un segnale continuo con una sequenza finita di campioni senza perdere niente, perché bastano due campioni per periodo, cosa succede quando se ne prendono troppo pochi, e perché la stessa matematica governa l’audio in input a un modello, il pooling di una rete convoluzionale e i pesi a int4 di un LLM.
Perché questo capitolo
Sezione intitolata “Perché questo capitolo”Quindici punti su uno schermo. Li unisci con una linea morbida e ottieni una curva. Ma quella non è l’unica curva che passa per quei quindici punti: ne passano infinite. Allora come fa un lettore CD, che vede solo numeri salvati su un disco, a ricostruire l’unica forma d’onda giusta e a riprodurre esattamente la musica che era stata registrata?
La risposta è un teorema con un’affermazione che, la prima volta, sembra troppo bella per essere vera: sotto una condizione precisa — il segnale non contiene frequenze sopra una certa soglia — i campioni discreti contengono tutta l’informazione del segnale continuo, e la ricostruzione è esatta, non approssimata. Nessuna perdita. Questo è il teorema del campionamento di Nyquist-Shannon, ed è il ponte formale tra il mondo continuo della fisica e il mondo discreto dei computer.
Il capitolo che apre questa Parte, Segnali continui, discreti, sistemi lineari, ha già enunciato il teorema in una riga e ha promesso di tornarci. Questo è quel ritorno. Qui scaviamo nel perché del fattore due, vediamo cosa va storto quando si campiona troppo lentamente (l’aliasing, il fenomeno che fa girare le ruote dei carri all’indietro nei film), come si ricostruisce il continuo dal discreto, e dove finisce il campionamento e comincia un’operazione diversa e indipendente: la quantizzazione.
Non è teoria astratta per ingegneri elettronici. Ogni immagine e ogni clip audio che dai a un modello è un segnale campionato e quantizzato, nel senso letterale di questo capitolo. L’aliasing è un difetto reale e misurato delle reti convoluzionali. E la quantizzazione — discretizzare i valori in pochi livelli — è la stessa idea che oggi comprime i pesi di un modello da 16 bit a 4 bit per farlo entrare in una GPU. Tre fenomeni che sembrano scollegati, una sola matematica sotto.
C’è anche un guadagno diagnostico concreto. Quando un modello speech sbaglia su un input registrato male, o un classificatore vacilla per uno spostamento di un pixel, o un modello quantizzato perde accuratezza, la causa è spesso uno dei meccanismi di questo capitolo. Saperli riconoscere dice se il problema si può risolvere a valle (pre-processando, aumentando i bit) o se l’informazione è andata persa per sempre a monte. È la differenza tra perdere un’ora a ritoccare un dato recuperabile e capire subito che va riacquisito.
Contesto
Sezione intitolata “Contesto”Il problema da cui tutto nasce è l’incontro tra due mondi incompatibili. Il mondo fisico è continuo: la pressione dell’aria su un microfono esiste in ogni istante reale, la luce su una scena ha un valore in ogni punto, una tensione su un filo varia senza salti.
Un computer, invece, ha memoria finita e lavora con numeri discreti. Non può immagazzinare il valore di un segnale in ogni istante, perché gli istanti sono infiniti. Deve sceglierne alcuni, e poi cavarsela con quelli.
La domanda è quanto duramente questa scelta ci faccia pagare. Buttare via tutto ciò che sta tra un campione e l’altro sembra una perdita inevitabile. La scoperta controintuitiva è che, sotto la giusta condizione, non si perde niente.
Quella scoperta ha una storia singolare: è stata fatta almeno quattro volte, in modo indipendente, in tre Paesi e su un arco di trent’anni. È un caso da manuale di scoperta multipla, il fenomeno per cui la stessa idea matura simultaneamente in teste diverse perché i tempi sono maturi.
Edmund Taylor Whittaker (matematico britannico, 1873-1956), nel 1915, nel lavoro “On the Functions Which are Represented by the Expansions of the Interpolation Theory”, ottiene la formula di ricostruzione in chiave puramente matematica, come problema di interpolazione di funzioni, senza alcun riferimento a radio o telecomunicazioni.
Harry Nyquist (ingegnere svedese-americano dei Bell Laboratories, 1889-1976), nel 1928, in “Certain Topics in Telegraph Transmission Theory”, studiando la telegrafia mostra che attraverso un canale di banda si possono spingere fino a impulsi indipendenti al secondo. È la radice del fattore due, anche se Nyquist non affronta ancora il problema di campionare e ricostruire un segnale continuo.
Vladimir Kotelnikov (ingegnere sovietico, 1908-2005), nel 1933, in un lavoro presentato a una conferenza a Leningrado, enuncia il teorema in forma rigorosa, per segnali sia passa-basso sia passa-banda. Nella letteratura russa il teorema porta il suo nome. La sua è anche una storia di censura: nel 1936 prova a ripubblicare il risultato in una rivista più divulgativa, ma il comitato editoriale lo rifiuta, e il suo contributo resta sconosciuto fuori dall’Unione Sovietica per oltre un decennio.
Claude Shannon (matematico e ingegnere americano dei Bell Labs, 1916-2001), nel 1949, in “Communication in the Presence of Noise” (Proceedings of the IRE), dimostra il teorema in modo completo e lo inserisce nel quadro della teoria dell’informazione che aveva fondato l’anno prima. Curiosità: il manoscritto era pronto già nel 1940, ma la pubblicazione slittò di nove anni a causa della Seconda guerra mondiale.
Per via di queste scoperte indipendenti, il nome storiograficamente corretto è teorema di Whittaker-Kotelnikov-Shannon (WKS). Nell’uso anglofono prevale “Nyquist-Shannon”; in quello russo “Kotelnikov”. Useremo “Nyquist-Shannon” perché è il nome con cui chi lavora con l’AI lo incontrerà più spesso, ricordando che dietro c’è un coro, non un solista.
C’è una lezione in questa pluralità di scopritori, e non è solo aneddotica. Quando un risultato viene trovato indipendentemente da più persone in epoche e luoghi diversi, di solito significa che gli strumenti per arrivarci erano maturi e che il problema stava bussando alla porta di chiunque lavorasse vicino. Whittaker ci arriva dalla matematica pura dell’interpolazione; Nyquist e Shannon dalla pratica delle telecomunicazioni; Kotelnikov dalla stessa pressione ingegneristica, in un’altra lingua e dietro una cortina politica.
C’è anche un fatto storiografico che conta, e che useremo come modello più avanti. Il legame tra Nyquist e Shannon è una filiazione documentata: Shannon conosce e cita il lavoro di Nyquist, e ne dimostra il duale. Kotelnikov, invece, è una scoperta indipendente, non una filiazione: nessuno dei due conosceva il lavoro dell’altro al momento. Tenere distinte le due cose — chi ha ispirato chi, e chi è arrivato per conto suo — è esattamente il tipo di disciplina sulle classi di affermazioni che eviteremo di violare anche nel ponte verso l’AI.
Nella mappa di questa Parte, questo capitolo siede subito dopo l’introduzione e prima dei filtri-convoluzione (in preparazione, questa Parte): il campionamento è il primo passo concreto nel passaggio dal continuo al discreto, e l’idea di filtro anti-aliasing che incontreremo è una prima applicazione dei filtri. L’angolo spettrale del teorema (le copie dello spettro) si appoggerà a Fourier (fourier-intuizione, in preparazione, questa Parte), che qui possiamo solo anticipare.
L’intuizione
Sezione intitolata “L’intuizione”Prima di qualunque formula, conviene capire da dove esce il numero magico: due campioni per periodo della componente più veloce. Lo guardiamo da tre angoli diversi, perché ciascuno illumina un pezzo che gli altri lasciano in ombra.
Primo angolo: cresta e valle
Sezione intitolata “Primo angolo: cresta e valle”Immagina di voler raccontare un’altalena che oscilla, ma puoi guardarla solo a istantanee, a intervalli regolari. Quanto spesso devi fotografarla per non perderti il movimento?
Se la fotografi una volta per oscillazione completa, ogni foto la coglie nello stesso punto: sembra ferma. Hai perso tutto. Se la fotografi due volte per oscillazione, cogli almeno il punto più alto e il punto più basso: ora sai che sale e scende, e con che ampiezza. Due istantanee per ciclo sono il minimo per accorgerti che c’è un’oscillazione e con quale ritmo.
Questo è il fattore due. La componente più veloce di un segnale, quella di frequenza (in hertz, cioè cicli al secondo), ha un periodo di secondi. Catturarne almeno due punti per periodo significa prendere un campione ogni secondi: una frequenza di campionamento di campioni al secondo. Sotto questa soglia, l’oscillazione veloce ti scivola tra le dita.
Secondo angolo: i segnali sosia
Sezione intitolata “Secondo angolo: i segnali sosia”C’è un modo più rigoroso di vedere perché meno di due campioni per periodo non basta, e introduce direttamente il concetto chiave del capitolo.
Prendi una sinusoide veloce e campionala troppo poco. Disegna i punti che ottieni. Ora prova a far passare una sinusoide lenta per esattamente quegli stessi punti: ci riesci. Le due sinusoidi, una veloce e una lenta, producono la stessa identica sequenza di campioni. Sono sosia: rispetto a quel campionamento, sono indistinguibili.
Quando guardi solo i campioni, non hai modo di sapere quale delle due fosse l’originale. Anzi, di sinusoidi che passano per quei punti ce ne sono infinite, una per ogni “giro” in più che la sinusoide veloce può aver fatto tra un campione e l’altro senza che tu te ne accorga.
Mettiamo numeri sull’esempio dei sosia, perché vederli rende l’argomento incontestabile. Campiona a Hz, cioè otto volte al secondo. Una sinusoide a 1 Hz, letta a quei istanti, produce una certa sequenza di valori. Ora prendi una sinusoide a 9 Hz, dove .
A ogni istante di campionamento, la sinusoide a 9 Hz ha fatto un giro intero in più rispetto a quella a 1 Hz — e un giro intero la riporta esattamente nello stesso punto. Risultato: agli istanti di campionamento le due sinusoidi valgono lo stesso identico valore, e i campioni sono indistinguibili. La sinusoide a 9 Hz (sopra il limite di Nyquist, che qui è 4 Hz) si traveste da sinusoide a 1 Hz. Questo è il meccanismo dell’alias, ridotto a un conto che puoi verificare a mano.
Il teorema risolve l’ambiguità con un patto: se prometti che nel segnale non c’è nessuna frequenza sopra (metà della frequenza di campionamento), allora di tutte le sinusoidi sosia ne sopravvive una sola sotto quella soglia, ed è quella vera.
Il vincolo di banda limitata è ciò che rende l’inversione univoca. Senza quel vincolo, dai campioni non si torna indietro in modo unico: è il prezzo da pagare, e l’unico, per avere la garanzia di ricostruzione esatta.
Vale la pena fermarsi su quanto è forte questa promessa. Non stiamo dicendo che i campioni danno una buona approssimazione del segnale: stiamo dicendo che lo determinano esattamente, in ogni istante intermedio, compresi i punti dove non abbiamo guardato. Tutta l’informazione di una funzione continua — un’infinità di valori — sta dentro una sequenza numerabile di campioni. La condizione che lo permette è una sola, la banda limitata, ed è il vincolo che impedisce al segnale di nascondere oscillazioni veloci negli intervalli tra un campione e l’altro.
Terzo angolo: le copie dello spettro
Sezione intitolata “Terzo angolo: le copie dello spettro”Il terzo angolo è il più potente e il più astratto, e anticipa il capitolo su Fourier (fourier-intuizione, in preparazione, questa Parte). Lo presentiamo come immagine, non come dimostrazione: chi non ha ancora visto Fourier può prenderlo come una mappa da riempire dopo.
Nel capitolo introduttivo abbiamo visto il dominio della frequenza: ogni segnale si può descrivere non con la sua evoluzione nel tempo, ma con la ricetta delle frequenze che lo compongono — il suo spettro. Un segnale a banda limitata con banda ha uno spettro confinato in un intervallo: niente sopra .
Il fatto chiave, che renderemo formale altrove, è questo: campionare nel tempo equivale a fare copie dello spettro lungo l’asse delle frequenze, una copia ogni hertz. È come se l’operazione di campionamento prendesse lo spettro originale e lo timbrasse a ripetizione, spostato di , , , e così via.
Finché la banda è più stretta di , le copie restano separate, con un margine vuoto tra una e l’altra. Per recuperare l’originale basta isolare la copia centrale con un filtro che tenga solo le frequenze sotto . Ma se supera , le copie si toccano e si sovrappongono: le code di una copia entrano nel territorio della successiva, si sommano, e non c’è più modo di separarle. Quella sovrapposizione è l’aliasing, vista dal lato delle frequenze.
Questo angolo spiega anche, in un colpo, le altre due idee centrali del capitolo. Il filtro anti-aliasing è ciò che applichi prima di campionare per garantire che lo spettro stia davvero sotto , così le copie nasceranno già separate. Il filtro di ricostruzione è ciò che applichi dopo per buttare via tutte le copie tranne quella centrale e tornare al segnale originale. Lo stesso passa-basso a compare due volte: a monte per prevenire la sovrapposizione, a valle per ripulire le repliche. Tenere a mente questa simmetria, prevenire-poi-ricostruire, ordina tutto il resto del capitolo.
I tre angoli dicono la stessa cosa in tre lingue. Cresta-e-valle è l’intuizione fisica; i sosia sono l’argomento di unicità; le copie dello spettro sono il meccanismo formale. Il numero due esce identico da tutti e tre. Se uno solo dei tre ti convince, hai capito il teorema; gli altri due servono a non dimenticarlo.
La meccanica
Sezione intitolata “La meccanica”Il teorema, enunciato con cura
Sezione intitolata “Il teorema, enunciato con cura”Mettiamo i simboli. Un segnale a tempo continuo si campiona leggendolo a istanti equispaziati distanti secondi, il periodo di campionamento. La sequenza risultante è , dove è un indice intero.
Il numero di letture al secondo è la frequenza di campionamento , misurata in hertz. Campionare a 1 kHz significa leggere il segnale mille volte al secondo, con millisecondo tra una lettura e l’altra. Sono le due facce della stessa scelta: fissi il passo nel tempo, fissi la frequenza, e viceversa.
Il teorema di Nyquist-Shannon, nella formulazione di Shannon (1949):
Se non contiene frequenze superiori a hertz, allora è completamente determinato dai suoi campioni presi a istanti distanti meno di secondi.
In parole povere: se sai che il segnale è “calmo abbastanza” (nessuna frequenza sopra ) e lo campioni abbastanza in fretta (più di volte al secondo), i campioni discreti contengono tutta l’informazione, e il segnale continuo si ricostruisce esattamente.
Due nomi che si assomigliano e che è facile confondere, ma indicano cose diverse:
- La frequenza di Nyquist del segnale (in inglese Nyquist rate) è : la frequenza di campionamento minima che serve per quel segnale. È un attributo del segnale.
- Il limite di Nyquist del campionatore (in inglese Nyquist frequency) è : la frequenza massima rappresentabile data una certa . È un attributo del campionatore.
Lo stesso aggettivo “Nyquist” etichetta due quantità. Tienile distinte: una parte dal segnale e dice quanto in fretta devi campionare; l’altra parte dal campionatore e dice fin dove arrivi.
Un dettaglio che sembra pedante e invece conta: la disuguaglianza è stretta, , non . Al limite esatto , una sinusoide proprio alla frequenza limite può capitare di essere campionata sempre nei suoi attraversamenti dello zero: tutti i campioni valgono zero, e il segnale diventa indistinguibile dal silenzio.
È il motivo per cui in pratica si campiona sempre un po’ sopra il doppio della banda, mai esattamente al doppio. Il margine non è zelo accademico: è ciò che separa una ricostruzione garantita da un caso limite che fallisce in silenzio, letteralmente.
L’aliasing, in dettaglio
Sezione intitolata “L’aliasing, in dettaglio”Quando è troppo bassa, le frequenze sopra non spariscono: si ripiegano (in inglese fold) e ricompaiono travestite da frequenze più basse. Quella frequenza fantasma si chiama alias.
C’è una formula semplice per sapere dove finisce travestita una frequenza troppo alta. Una componente a frequenza appare come alias alla frequenza
dove è l’intero che porta il risultato dentro l’intervallo rappresentabile . Vediamola con numeri concreti. Campiona a Hz, quindi il limite di Nyquist è Hz.
- Una componente a Hz (sopra il limite) ricompare a Hz.
- Una a Hz ricompare a Hz.
- Una a Hz (sotto il limite) resta a Hz: nessun alias.
Il problema è che l’alias a Hz prodotto dalla componente a Hz si somma a un’eventuale componente vera a Hz, e diventa indistinguibile da essa.
È questa fusione il danno: non un disturbo che si sovrappone e che potresti sottrarre, ma due cose diverse che collassano nella stessa frequenza e diventano un’unica cosa. Da quel momento, guardando i campioni, non hai più modo di sapere quanta di quell’energia a 300 Hz fosse vera e quanta fosse l’alias di un’altra frequenza.
Da qui la differenza più importante del capitolo: l’aliasing non è rumore. Il rumore è una componente che si aggiunge al segnale e che, in linea di principio, si può attenuare. L’aliasing è una distorsione strutturale e irreversibile: una volta che le frequenze alte si sono travestite da basse e mescolate al segnale vero, occupano la stessa regione di frequenza del contenuto buono, e nessun filtro a valle può separarle. Per questo l’aliasing si previene, non si cura.
Il filtro anti-aliasing
Sezione intitolata “Il filtro anti-aliasing”La prevenzione ha un nome: filtro anti-aliasing. È un filtro passa-basso applicato al segnale continuo prima del campionamento, che taglia tutto ciò che sta sopra . Così, quando il campionatore legge, non c’è più nessuna frequenza alta che possa ripiegarsi.
Il prezzo è che butti via, volontariamente, la parte di segnale sopra . Ma è una perdita controllata e nota, scambiata con l’eliminazione di una corruzione incontrollata e irreversibile. È un buon affare quasi sempre.
Questo spiega un numero che molti hanno visto senza capirlo: i CD audio campionano a 44.1 kHz. L’orecchio umano arriva a circa 20 kHz, e il doppio è 40 kHz. Perché non campionare esattamente a 40 kHz? Perché un filtro anti-aliasing reale non taglia di netto a una frequenza: ha una banda di transizione in cui passa gradualmente da “lascia tutto” a “blocca tutto”. Il margine tra 40 e 44.1 kHz è lo spazio che si lascia al filtro per fare la sua transizione senza intaccare le frequenze udibili.
Qui si annida un compromesso ingegneristico ricorrente. Un filtro con banda di transizione strettissima (taglio quasi netto) lascerebbe campionare appena sopra , risparmiando memoria e banda; ma filtri così ripidi sono costosi, introducono distorsioni di fase e suonano peggio. Un filtro dolce è economico e pulito, ma richiede di campionare più in alto per lasciargli spazio.
La scelta della frequenza di campionamento, in pratica, non è solo “il doppio della banda”: è “il doppio della banda più il margine che il mio filtro esige”. È lo stesso tipo di trade-off implementativo che ricompare ovunque si debba scambiare qualità contro costo, e che ritroveremo, in chiave diversa, nello scegliere quanti bit dare a un peso quantizzato.
Il sovracampionamento spinto — campionare molto più del minimo — è la scappatoia moderna a questo dilemma. Se campioni a frequenza molto alta, le copie dello spettro nascono lontanissime tra loro, e basta un filtro anti-aliasing dolce ed economico per evitarne la sovrapposizione. Poi, in digitale, si filtra con precisione e si riduce la frequenza al valore desiderato. È il motivo per cui i convertitori reali spesso campionano internamente molto sopra la frequenza nominale dichiarata: spostano il lavoro difficile dal mondo analogico, dove i filtri ripidi costano, al mondo digitale, dove costano poco.
La ricostruzione: interpolazione sinc
Sezione intitolata “La ricostruzione: interpolazione sinc”Resta la domanda da cui siamo partiti: dati i campioni, come si torna all’unica curva giusta? La risposta è la formula di interpolazione di Whittaker-Shannon:
dove la funzione sinc è definita come .
Leggiamola con calma. Per ogni campione si prende una funzione sinc, la si scala per il valore del campione, e la si centra nell’istante dove quel campione era stato letto. Poi si sommano tutte queste sinc, una per campione. La somma è il segnale continuo ricostruito.
Perché funziona? La sinc ha una proprietà perfetta per questo scopo: vale 1 esattamente nel suo centro e vale zero esattamente in tutti gli altri istanti di campionamento. Quindi, nell’istante , la sinc centrata lì contribuisce con tutto il suo valore , mentre tutte le altre sinc contribuiscono con zero. Risultato: nei punti campione la ricostruzione restituisce esattamente i valori campionati. E negli istanti intermedi, le code delle sinc vicine si combinano per interpolare in modo liscio e — questo è il punto — senza introdurre nessuna frequenza sopra .
Una verifica mentale per fissare la proprietà. Valuta la formula proprio in un istante di campionamento, diciamo . Tutti gli argomenti delle sinc diventano , cioè interi. La funzione di un intero diverso da zero vale zero (perché ), e . Quindi nella somma sopravvive un solo termine, quello con , e la ricostruzione restituisce esattamente . Nessuna approssimazione: il valore campionato torna identico.
Tra un campione e l’altro, invece, nessun termine si annulla: tutti contribuiscono, e il loro intreccio produce l’unica curva a banda limitata che passa per quei punti. È il motivo per cui la ricostruzione non “indovina” la curva: la determina. Dato il vincolo di banda, di curve che passano per quei campioni ne esiste una sola, e la formula la calcola.
C’è un modo elegante di vedere la stessa cosa, che collega al capitolo introduttivo. Ricostruire con la sinc equivale a far passare il treno di campioni attraverso un filtro passa-basso ideale con taglio a , il cosiddetto filtro di ricostruzione. La funzione sinc è esattamente la risposta all’impulso di quel filtro ideale. Ricostruire, in altre parole, è convolvere i campioni con : la stessa operazione di convoluzione vista per i sistemi LTI in Segnali continui, discreti, sistemi lineari, qui usata per riempire i buchi tra i campioni.
Un caveat onesto: la sinc ideale è infinitamente lunga e non causale, perché per calcolare l’uscita ora richiederebbe campioni infinitamente nel futuro. Non è implementabile esattamente.
I convertitori reali la approssimano, con tecniche come il mantenimento del valore tra un campione e l’altro seguito da un filtro, oppure il sovracampionamento. La formula resta una verità matematica perfetta che la pratica avvicina senza mai raggiungerla del tutto. Il teorema garantisce che l’informazione c’è tutta nei campioni; spetta all’ingegneria tirarla fuori il meglio possibile.
Quantizzazione: discretizzare anche l’ampiezza
Sezione intitolata “Quantizzazione: discretizzare anche l’ampiezza”Fin qui abbiamo discretizzato il tempo: leggiamo il segnale solo in certi istanti. Ma i valori che leggiamo sono ancora numeri reali, con infinite cifre. Un computer non può immagazzinare un numero reale qualsiasi: deve arrotondarlo a uno di un insieme finito di livelli. Questa seconda operazione è la quantizzazione, e discretizza l’ampiezza.
Sono due assi indipendenti, come visto nel capitolo introduttivo: campionamento e tempo, quantizzazione e ampiezza. Un convertitore analogico-digitale fa entrambe le cose in sequenza, ma restano concettualmente distinte, con garanzie diverse: il campionamento può essere senza perdita, la quantizzazione no. Confonderle è l’errore più comune del campo, e lo isoleremo apposta nella sezione “Dove si rompe”.
Quantizzare con bit significa avere livelli disponibili. Audio a 16 bit: livelli. Ogni campione viene arrotondato al livello più vicino, e la differenza tra il valore vero e il livello scelto è un errore. Quando il segnale è abbastanza ricco, questo errore di arrotondamento si comporta statisticamente come un rumore additivo: il rumore di quantizzazione.
C’è una regola pratica memorabile: ogni bit in più vale circa 6 dB di rapporto segnale-rumore. Aggiungere un bit raddoppia i livelli e dimezza l’errore di arrotondamento. Per un quantizzatore uniforme su un segnale a piena scala la formula approssimata è
Con bit si ottengono circa 50 dB; con circa 98 dB. Ecco perché l’audio a 24 bit suona percettibilmente più pulito di quello a 8 bit: più bit, più livelli, errore di arrotondamento più piccolo.
Una sottigliezza utile da conoscere: il rumore di quantizzazione si comporta “bene” — cioè in modo simile a rumore casuale, spalmato sulle frequenze — solo se il segnale è abbastanza ricco e movimentato rispetto al passo di quantizzazione. Su un segnale quasi costante e pulito, l’arrotondamento produce invece un errore correlato e udibile, una distorsione a gradini.
Per questo, contro-intuitivamente, si aggiunge a volte un pizzico di rumore casuale prima di quantizzare, una tecnica chiamata dithering: rende l’errore di quantizzazione più simile a rumore innocuo e meno a distorsione strutturata. È il primo indizio che “rumore” non è sempre il nemico — a volte un po’ di rumore aggiunto a monte migliora la qualità percepita a valle.
A questo punto possiamo fare l’inventario delle fonti di degrado, da non mescolare mai quando si diagnostica un input scadente. Sono tre, e abitano punti diversi della catena:
- il rumore ambientale, già nel segnale prima di toccare il convertitore;
- l’aliasing, errore del campionamento, sull’asse del tempo, strutturale e irreversibile;
- il rumore di quantizzazione, errore dell’ampiezza, additivo, riducibile aumentando i bit.
Sono problemi diversi con cure diverse. Il primo si attenua migliorando l’acquisizione, il secondo si previene a monte e basta, il terzo si riduce spendendo bit. Una diagnosi che li confonde porta a sprecare fatica nel posto sbagliato.
Campionamento e quantizzazione: due assi, una sola conversione
Sezione intitolata “Campionamento e quantizzazione: due assi, una sola conversione”Vale la pena tenere insieme i due pezzi della meccanica con un’unica immagine, perché è la chiave per leggere ogni conversione analogico-digitale. Immagina un piano: sull’asse orizzontale il tempo, sull’asse verticale l’ampiezza. Il segnale continuo è una curva liscia che vive in tutto il piano. Il campionamento mette una griglia di linee verticali (gli istanti ): tieni la curva solo dove la incrocia. La quantizzazione mette una griglia di linee orizzontali (i livelli): sposti ogni valore tenuto sulla linea orizzontale più vicina.
Il segnale digitale finale è cosa resta dopo entrambe le griglie: un insieme di punti che giacciono sulle intersezioni della griglia. La densità delle verticali è la frequenza di campionamento; la densità delle orizzontali è il numero di livelli, cioè i bit. Più fitte le verticali, più alta la banda che catturi; più fitte le orizzontali, più piccolo il rumore di quantizzazione. I due assi non interagiscono: puoi campionare fittissimo e quantizzare grossolanamente, o viceversa. Sono leve indipendenti, e ogni applicazione le regola in modo diverso a seconda di cosa le costa di più, memoria o fedeltà.
Qualche numero di riferimento
Sezione intitolata “Qualche numero di riferimento”Le frequenze di campionamento e i bit-depth più comuni non sono arbitrari: ciascuno deriva dalla banda che deve coprire o dalla fedeltà che richiede. Vale la pena averli in testa, perché sono i valori che incontri quando configuri una pipeline.
- Telefonia tradizionale: 8 kHz, 8 o 16 bit. Limite di Nyquist 4 kHz: la voce passa, le sibilanti si perdono.
- Speech model moderni: 16 kHz, 16 bit. Limite di Nyquist 8 kHz: cattura anche le consonanti ad alta frequenza.
- CD audio: 44.1 kHz, 16 bit. Limite 22.05 kHz, appena sopra il doppio dei 20 kHz udibili.
- Audio professionale: 48 o 96 kHz, 24 bit. Margine abbondante per filtri dolci ed editing senza accumulo di rumore.
- Immagini: la “frequenza di campionamento” è la risoluzione (pixel per unità di spazio), il “bit-depth” sono i bit per canale di colore — tipicamente 8, cioè 256 livelli per canale.
Lo schema è sempre lo stesso: la frequenza di campionamento si sceglie a partire dalla banda da catturare (almeno il doppio, più il margine per il filtro), il bit-depth a partire dal rumore di quantizzazione tollerabile (circa 6 dB di margine per bit).
Esempio 1 — numerico: dove finisce un alias
Sezione intitolata “Esempio 1 — numerico: dove finisce un alias”Una telecamera registra a 30 fotogrammi al secondo, quindi Hz e il limite di Nyquist è 15 Hz. Inquadra un’elica che ruota a 25 giri al secondo (25 Hz).
La frequenza di rotazione (25 Hz) è sopra il limite di Nyquist (15 Hz): l’elica è sotto-campionata. Dove finisce il suo alias? Applichiamo la formula con :
Sul video l’elica sembrerà ruotare a 5 giri al secondo. Ma il segno dentro il valore assoluto ha un significato: la rotazione apparente è invertita. L’elica sembra girare lentamente all’indietro, pur ruotando velocemente in avanti.
È il wagon-wheel effect: il movimento vero, troppo rapido per essere campionato, si traveste da movimento lento e inverso. La cinepresa non sta sbagliando a misurare la posizione dell’elica in ogni fotogramma — quella è giusta — sta semplicemente guardando troppo di rado per ricostruire il movimento tra un fotogramma e l’altro.
Se invece l’elica ruotasse a esattamente 30 giri al secondo, : a ogni fotogramma l’elica ha fatto un giro intero e si ritrova nella stessa posizione. Sul video sembra immobile. È lo stesso principio dello stroboscopio che “congela” un oggetto rotante.
Questo non è un fenomeno da laboratorio. Le luci a LED moderne lampeggiano a frequenze invisibili all’occhio (centinaia di hertz, modulate per regolare la luminosità), ma una telecamera può campionarle a un ritmo che produce alias: il risultato sono le bande scorrevoli che a volte vedi quando filmi uno schermo o un’insegna luminosa. Stessa formula, stessa diagnosi: una frequenza troppo alta per il campionamento che si ripiega in un pattern lento e fantasma. Sapere che è aliasing dice subito la cura — cambiare frame rate o tempo di esposizione — invece di incolpare la telecamera.
Esempio 2 — in codice: aliasing in un ridimensionamento di immagine
Sezione intitolata “Esempio 2 — in codice: aliasing in un ridimensionamento di immagine”L’aliasing non è solo temporale. Quando si rimpicciolisce un’immagine si campiona più in grosso una griglia di pixel, e se non si filtra prima compaiono frange di moire: pattern a bassa frequenza che non esistono nell’originale.
import numpy as np
# Una riga di immagine con un pattern fine: barre alternate chiaro/scuro,# una frequenza spaziale alta (cambia a ogni pixel).riga = np.array([0, 255, 0, 255, 0, 255, 0, 255], dtype=float)
# Downsampling ingenuo: tieni un pixel ogni due (stride 2), senza filtrare.ingenuo = riga[::2]print(ingenuo) # [0, 0, 0, 0] -> pattern SPARITO del tutto (aliasing)
# Downsampling corretto: prima fai una media locale (blur passa-basso),# che attenua la frequenza alta, poi sottocampiona.blur = np.convolve(riga, [0.5, 0.5], mode="same")corretto = blur[::2]print(corretto) # valori intermedi: pattern attenuato, onesto, non menteIl downsampling ingenuo prende un pixel ogni due e capita su tutti i pixel neri: il risultato è una riga uniforme, il pattern a barre è scomparso del tutto. È aliasing: la frequenza spaziale alta del pattern si è ripiegata fino a diventare frequenza zero (uniforme). Il downsampling corretto fa prima una media locale — un filtro passa-basso, l’anti-aliasing — e solo dopo sottocampiona, ottenendo un grigio intermedio che rappresenta onestamente “qui c’era qualcosa di fine che non posso più risolvere”. Questo è il principio dietro il ANTIALIAS delle librerie di image processing.
Esempio 3 — scenario reale: scegliere la frequenza di campionamento per uno speech model
Sezione intitolata “Esempio 3 — scenario reale: scegliere la frequenza di campionamento per uno speech model”Stai costruendo una pipeline che manda audio a un modello di trascrizione. Devi scegliere .
Le convenzioni esistono per una ragione fisica. Il parlato telefonico classico usa 8 kHz: il limite di Nyquist è 4 kHz, sufficiente per l’intelligibilità di base ma non per le consonanti sibilanti come “s” ed “f”, che hanno energia sopra i 4-5 kHz. Per questo al telefono “sei” e “tre” a volte si confondono, e si compita “Sierra” per disambiguare. I modelli speech moderni lavorano tipicamente a 16 kHz (limite di Nyquist 8 kHz), che cattura anche le sibilanti. La musica ad alta fedeltà usa 44.1 o 48 kHz per coprire l’intero udibile.
La lezione operativa: se passi a un modello a 16 kHz un audio originariamente registrato a 8 kHz, non recuperi le frequenze mancanti — non c’erano, e nessun upsampling le inventa correttamente. E se registri direttamente a una frequenza troppo bassa senza filtro anti-aliasing, le frequenze alte non scompaiono pulite: si ripiegano e sporcano la banda utile con alias, peggiorando la trascrizione in modo subdolo. La scelta di a monte determina il tetto di ciò che il modello può sentire.
Esempio 4 — concettuale: due bit di troppo poco
Sezione intitolata “Esempio 4 — concettuale: due bit di troppo poco”Quantizza un segnale che varia tra 0 e 1 con solo 2 bit: 4 livelli, cioè 0, 0.33, 0.67, 1. Un campione di valore vero 0.6 viene arrotondato a 0.67, con un errore di 0.07. Un campione di valore 0.5 viene arrotondato a 0.33 o 0.67 (errore 0.17). Su un segnale che varia con continuità, questi arrotondamenti producono una versione “a scalini” dell’originale, e la differenza tra scalini e curva vera è il rumore di quantizzazione.
Passa a 8 bit: 256 livelli, scalini sedici volte più fitti, errore sedici volte più piccolo. La regola dei 6 dB per bit dice che sei bit in più (da 2 a 8) valgono circa 36 dB di SNR in più. È lo stesso identico compromesso — più bit, più fedeltà, più spazio — che ritroveremo applicato non a un campione audio, ma a un peso di rete neurale.
Esempio 5 — di sistema: i due assi di un convertitore analogico-digitale
Sezione intitolata “Esempio 5 — di sistema: i due assi di un convertitore analogico-digitale”Un microfono USB economico e uno da studio differiscono su due assi, ed è istruttivo separarli perché è la stessa separazione che governa la qualità di un input per un modello.
Sul primo asse, il tempo: entrambi campionano, magari entrambi a 48 kHz. La frequenza di campionamento, da sola, fissa la banda massima rappresentabile (24 kHz, oltre l’udibile) e — purché ci sia un filtro anti-aliasing decente a monte — non è dove si gioca la differenza di qualità tra i due.
Sul secondo asse, l’ampiezza: il microfono da studio quantizza a 24 bit, quello economico magari a 16, e la differenza in rumore di fondo è quella che senti. Più, conta il filtro anti-aliasing: un convertitore scadente con un filtro povero lascia passare alias che sporcano la registrazione in modo che nessun software a valle può togliere.
La diagnosi di un audio scadente passa quindi per tre domande distinte, una per fonte di degrado: era già rumoroso l’ambiente (rumore additivo)? era basso il bit-depth (rumore di quantizzazione)? c’erano alias da filtro anti-aliasing assente o troppo bassa (distorsione irreversibile)? Tre cure diverse, e solo la prima e la seconda si possono mitigare a valle. Quando un modello speech sbaglia su un input, sapere su quale asse è il problema dice se vale la pena pre-processare o se l’informazione è andata persa per sempre.
Applicazioni pratiche
Sezione intitolata “Applicazioni pratiche”Pre-processing audio per modelli speech. Come nell’esempio 3, la scelta di frequenza di campionamento e bit-depth determina cosa il modello può sentire. Un input sotto-campionato o registrato senza filtro anti-aliasing degrada la trascrizione, e il difetto è spesso invisibile finché non si sa cosa cercare. Conoscere campionamento e aliasing è diagnostica diretta.
Reti convoluzionali anti-aliased. Il lavoro di Richard Zhang (ricercatore di Adobe Research), “Making Convolutional Networks Shift-Invariant Again” (ICML 2019), mostra che le operazioni di downsampling standard nelle reti convoluzionali — max-pooling, strided convolution, average pooling — ignorano il teorema del campionamento. Ne riparliamo sotto, perché è l’esempio più netto di aliasing dentro un sistema di AI.
Quantizzazione dei pesi dei modelli. Comprimere un modello da 16 bit a 8 o 4 bit per peso (int8, int4) è la stessa quantizzazione di questo capitolo, applicata ai parametri invece che ai campioni audio. Ne riparliamo sotto.
Ridimensionamento di immagini per modelli vision. Ogni volta che un’immagine viene scalata prima di entrare in un modello, filtrare prima di sottocampionare (esempio 2) evita le frange di moire. Un resize “nearest neighbor” senza filtro è una fabbrica di artefatti da aliasing.
Serie temporali nell’osservabilità. Loggare una metrica a intervalli troppo radi è sotto-campionarla: picchi rapidi di latenza o errori a raffica si ripiegano in pattern fantasma o spariscono del tutto. Se campioni la latenza una volta al minuto ma il sistema ha micro-burst ogni 20 secondi, quei burst (frequenza 1/20 Hz, sopra il limite di Nyquist 1/120 Hz del tuo campionamento) ricompaiono come un’oscillazione lenta e ingannevole, o si mediano via del tutto. Sapere a quale frequenza una metrica varia davvero guida la scelta dell’intervallo di logging, e spiega perché certe anomalie “spariscono” quando aggreghi su finestre troppo larghe.
Il ponte verso l’AI: identità, non solo analogie
Sezione intitolata “Il ponte verso l’AI: identità, non solo analogie”Questa è la sezione dove campionamento e quantizzazione smettono di essere argomenti da corso di ingegneria e diventano fenomeni che chi costruisce sistemi AI tocca ogni giorno. Vale la pena enumerare i legami con cura, perché sono di classi diverse — alcuni sono identità di concetto, uno è un’analogia — e confonderli porta a intuizioni sbagliate.
Il primo legame non è nemmeno un’analogia: è un’identità. Audio, immagini e video che dai a un modello sono segnali campionati e quantizzati, nel senso letterale del capitolo. Un file audio è la sequenza di campioni di pressione sonora, quantizzati a 16 bit. Un’immagine è una griglia di pixel, ciascuno un campione spaziale dell’intensità luminosa, quantizzato a 8 bit per canale.
Le scelte fatte a monte — frequenza di campionamento, risoluzione, bit-depth — determinano letteralmente cosa il modello può vedere e sentire. Non c’è metafora qui: è lo stesso oggetto matematico. Quando si dice che un modello “non riesce a leggere il testo piccolo in un’immagine”, spesso il limite non è il modello ma la risoluzione del campionamento: quel dettaglio sta sopra la frequenza spaziale che la griglia di pixel può rappresentare, e nessuna intelligenza lo recupera da campioni che non lo contengono.
Il secondo legame è anch’esso un’identità di fenomeno, con un caveat. Il lavoro di Zhang del 2019 dimostra che il downsampling nelle reti convoluzionali — ridurre la risoluzione delle mappe di feature con max-pooling o convoluzioni a passo (stride) — campiona più in grosso senza filtrare prima le alte frequenze spaziali. È esattamente la ricetta dell’aliasing.
La conseguenza, misurata sperimentalmente, è che la rete non è shift-invariant: spostare l’input di un pixel può cambiare l’output in modo sproporzionato, perché l’aliasing fa dipendere il risultato da quali pixel capitano sotto la griglia di sottocampionamento. È un difetto controintuitivo per una rete che dovrebbe riconoscere lo stesso oggetto ovunque sia.
La cura è la stessa di sempre: inserire un filtro passa-basso (un blur) prima del subsampling. Zhang lo chiama BlurPool, nelle varianti MaxBlurPool e ConvBlurPool. Il risultato sperimentale: migliore accuratezza su ImageNet attraverso architetture diverse — ResNet, DenseNet, MobileNet — e maggiore robustezza alle corruzioni dell’input.
Questo è aliasing vero, lo stesso del teorema, sull’asse spaziale dentro una rete; il caveat è che il “segnale” qui è una mappa di feature appresa, non un suono fisico. Identità di meccanismo, contesto diverso. È anche un bel promemoria: una tecnica classica del signal processing, data per scontata e poi dimenticata, è rientrata dalla porta principale del deep learning quando qualcuno si è accorto che le reti la stavano violando.
Il terzo legame è ancora un’identità di concetto: la quantizzazione dei pesi dei modelli. Discretizzare l’ampiezza in livelli — l’operazione di questo capitolo — è esattamente ciò che si fa ai parametri di un modello quando lo si comprime. Un peso a virgola mobile a 32 bit occupa 4 byte; quantizzarlo a int8 lo porta a 1 byte (un quarto della memoria), a int4 a mezzo byte (un ottavo).
Il trade-off è identico a quello dell’audio: più bit, più fedeltà ai valori originali, ma più memoria; meno bit, modello più piccolo e veloce, ma più errore di arrotondamento — che qui si manifesta come degradazione dell’accuratezza. int4 è più aggressivo di int8 e perde più qualità, esattamente come l’audio a 4 bit suona peggio di quello a 8. La meccanica di questa idea, con i metodi specifici, vive in quantization-base (Parte XXIII, in preparazione).
Per vedere l’identità a occhio nudo, la quantizzazione di un peso è lo stesso conto di arrotondamento dell’esempio 4 sull’audio:
import numpy as np
# Un blocco di pesi a virgola mobile (come uscirebbe dal training).pesi = np.array([0.12, -0.87, 0.45, -0.33, 0.91])
# Quantizzazione int8 simmetrica: 256 livelli su [-max, +max].scala = np.abs(pesi).max() / 127 # passo di quantizzazionecodici = np.round(pesi / scala).astype(np.int8) # interi in [-127, 127]ricostruiti = codici * scala # i valori "a scalini"
print(codici) # es. [ 17 -121 63 -46 127] -> 1 byte ciascunoprint(ricostruiti - pesi) # l'errore di quantizzazione, non nulloIdentico, riga per riga, all’arrotondamento di un campione audio al livello più vicino: c’è un passo di quantizzazione (scala), un arrotondamento al livello intero, e un errore residuo. Cambiare 127 (int8) in 7 (int4, che ha solo 16 livelli) raddoppia gli scalini e quadruplica l’errore tipico: lo stesso 6 dB per bit, ribaltato. Quello che per l’audio è rumore udibile, qui è perdita di accuratezza del modello. Il concetto non somiglia a quello del capitolo: è quello del capitolo.
Il quarto legame, sempre identità di concetto, collega a un capitolo già scritto. La product quantization descritta in IVF, product quantization (Parte VIII) comprime i vettori di embedding sostituendo ogni sotto-vettore con l’indice del centroide più vicino, scelto tra 256 — cioè codificato in un byte. È quantizzazione applicata a vettori: si rimpiazzano valori continui con un codice discreto, accettando un errore di quantizzazione (la distanza dal centroide) in cambio di un enorme risparmio di memoria.
Stessa idea esatta del rumore di quantizzazione audio, altro dominio. Da marcare come identità di concetto, non come filiazione: la product quantization non “discende” storicamente dal campionamento audio, usa la stessa matematica nata altrove. Anche qui il ponte è onesto solo se si dichiara la classe: stesso meccanismo, storie indipendenti.
Il quinto legame è invece un’analogia, e va trattato come tale per non farsi ingannare. Si sente dire che ridurre il numero di token — il pooling di patch in un Vision Transformer, o la compressione di token in un contesto lungo — è “come campionare più in grosso”. Come immagine didattica funziona: meno campioni significano meno dettaglio, e troppo pochi fanno perdere struttura fine.
Ma è solo un’analogia. I token non vivono su un asse di tempo o spazio uniforme con una “banda” ben definita nel senso di Fourier, e non esiste un teorema di Nyquist per i token. L’analogia aiuta a intuire il rischio di buttare via informazione, ma non porta con sé la macchina di banda, frequenza di Nyquist e ricostruzione esatta. Qui ci si ferma all’analogia, e non si pretende di applicare il teorema dove le sue ipotesi non valgono.
La regola storiografica da tenere a mente: nessuno di questi legami è una filiazione. Il deep learning non discende dal campionamento audio. Usa la stessa matematica — discretizzazione del tempo, discretizzazione dell’ampiezza, aliasing — che era stata scoperta decenni prima nelle telecomunicazioni. È identità di concetto (lo stesso meccanismo riapplicato), non discendenza (una tecnica che nasce dall’altra).
Dove si rompe
Sezione intitolata “Dove si rompe”I concetti di questo capitolo sono solidi, ma le intuizioni scivolano in errori ricorrenti. Vale la pena disinnescarli uno per uno.
Campionamento non è quantizzazione. Il campionamento discretizza il tempo; la quantizzazione discretizza l’ampiezza. Sono assi ortogonali. C’è di più: il campionamento può essere perfetto (il teorema garantisce ricostruzione esatta sotto le sue ipotesi), mentre la quantizzazione introduce sempre un errore, a meno di bit infiniti. Sono operazioni di natura diversa con garanzie diverse. Confonderle è l’errore numero uno.
L’aliasing non è “un po’ di rumore”. È la confusione più dannosa. Il rumore è additivo e, in linea di principio, attenuabile a valle. L’aliasing è una distorsione strutturale e irreversibile: una volta che le frequenze alte si sono ripiegate e mescolate al segnale vero, occupano la stessa banda del contenuto buono e non si separano più. Non lo “ripulisci” dopo. Lo previeni con il filtro anti-aliasing a monte, oppure ci convivi.
Le due “frequenze di Nyquist”. Il Nyquist rate () è un attributo del segnale: quanto in fretta devi campionare. La Nyquist frequency () è un attributo del campionatore: fin dove arrivi data una certa . Stesso nome, due quantità. Quando qualcuno dice “frequenza di Nyquist” senza specificare, chiedi quale delle due.
La disuguaglianza è stretta. Serve , non . Al limite esatto una sinusoide proprio alla frequenza limite può essere campionata sempre nei suoi zeri e diventare invisibile. In pratica si campiona sempre con un margine, mai esattamente al doppio della banda.
“Banda limitata” è un’idealizzazione. Qui sta il caveat più sottile del teorema. Un segnale perfettamente a banda limitata è, per una proprietà di Fourier, infinitamente lungo nel tempo. Nessun segnale reale, che inizia e finisce, è davvero a banda limitata: la coda dello spettro c’è sempre, per quanto piccola. Per questo un filtro anti-aliasing serve sempre, anche quando credi di campionare “abbastanza in fretta”: non esiste il segnale reale che sta perfettamente sotto la soglia da solo.
La sinc ideale non è implementabile. La formula di ricostruzione è una verità matematica esatta, ma la sinc è infinitamente lunga e non causale: richiederebbe campioni infinitamente nel futuro. I convertitori reali la approssimano, e la qualità della ricostruzione dipende da quanto bene la approssimano. La perfezione è sulla carta; la pratica ci si avvicina.
Sovracampionare non è magia. Campionare molto sopra non aggiunge informazione che non c’era: tutto ciò che sta sopra la banda del segnale resta fuori comunque. Il sovracampionamento serve ad altro: rilassa i requisiti sul filtro anti-aliasing (più spazio nella banda di transizione) e, in audio, permette di spalmare il rumore di quantizzazione su una banda più larga. Utile, ma non è un modo di “vedere più dettaglio” di quanto il segnale ne contenga.
Ricampionare verso l’alto non recupera ciò che mancava. Trappola pratica frequente: prendere un audio a 8 kHz e “portarlo” a 16 kHz prima di darlo a un modello, sperando di recuperare le frequenze alte. Non funziona. Il limite di Nyquist dell’originale era 4 kHz: sopra i 4 kHz non c’era nulla da campionare, e l’upsampling può solo interpolare i campioni esistenti, non inventare contenuto che non è mai stato registrato. Il risultato avrà la frequenza di campionamento giusta ma resterà sordo sopra i 4 kHz. (Esistono modelli di super-resolution che generano plausibili alte frequenze, ma quella è generazione condizionata, non ricostruzione: stanno indovinando un contenuto verosimile, non recuperando l’originale.)
L’aliasing nelle CNN è identità, non solo metafora. Quando Zhang dice che il pooling causa aliasing, non sta usando un’analogia poetica. È aliasing spaziale vero, lo stesso del teorema, misurabile e correggibile con un filtro passa-basso. L’unico aggiustamento mentale è che il “segnale” è una mappa di feature appresa, non un suono. Chi liquida questo come “una metafora del signal processing” perde una correzione architetturale reale.
La quantizzazione dei pesi è la stessa idea, non una sua discendente. Non è che la quantizzazione audio “abbia generato” la quantizzazione dei modelli. È lo stesso concetto di discretizzazione dell’ampiezza, riapplicato a parametri invece che a campioni. Il trade-off bit/fedeltà è identico; la storia è indipendente. Tenere distinte identità di concetto e filiazione storica evita di costruire genealogie che non esistono.
Aliasing in input e aliasing interno sono due punti diversi della pipeline. Vale la pena non confonderli, perché la cura sta in posti diversi. Il moiré di un’immagine ridimensionata male è aliasing in input: nasce prima che il modello veda il dato, e si previene filtrando al momento del resize. L’aliasing nel pooling di una CNN (Zhang 2019) è aliasing interno: nasce dentro la rete, a ogni downsampling di feature map, e si previene modificando l’architettura (il blur prima del subsampling). Entrambi sono lo stesso fenomeno fisico, ma chi costruisce un sistema vision deve sapere che ci sono almeno due luoghi dove l’aliasing può entrare, e che presidiarne uno non protegge l’altro.
Collegamenti
Sezione intitolata “Collegamenti”- Segnali continui, discreti, sistemi lineari — il capitolo che apre la Parte ed enuncia il teorema in forma sintetica: qui ne abbiamo dato la dimostrazione intuitiva, l’aliasing e la quantizzazione. La convoluzione e i sistemi LTI introdotti lì sono ciò che rende la ricostruzione sinc un filtraggio.
- filtri-convoluzione (in preparazione, questa Parte) — il filtro anti-aliasing e il filtro di ricostruzione sono filtri passa-basso: quel capitolo ne sviluppa la meccanica completa.
- fourier-intuizione (in preparazione, questa Parte) — rende formale il terzo angolo dell’intuizione (le copie dello spettro) e dimostra il teorema sul versante delle frequenze.
- rumore-snr (in preparazione, questa Parte) — il rumore di quantizzazione e il rapporto segnale-rumore introdotti qui sono il cuore di quel capitolo.
- spettrogrammi (in preparazione, questa Parte) — la rappresentazione tempo-frequenza che alimenta i modelli speech parte da un audio già campionato e quantizzato secondo questo capitolo.
- IVF, product quantization (Parte VIII) — la product quantization comprime gli embedding con la stessa idea di quantizzazione vista qui: identità di concetto, dominio diverso.
- quantization-base (Parte XXIII, in preparazione) — la quantizzazione dei pesi dei modelli (int8, int4) è la quantizzazione di questo capitolo applicata ai parametri.
- cnn-base (Parte XVIII, in preparazione) — il downsampling delle reti convoluzionali e l’aliasing che ne deriva (Zhang 2019), con il fix del blur prima del subsampling.
- informazione-shannon (Parte XIII, in preparazione) — Shannon dimostra questo teorema dentro il quadro della teoria dell’informazione che aveva fondato l’anno prima.
- Stimare stato nascosto con modello e misure rumorose (Parte XI) — campionare misure rumorose nel tempo è il punto di partenza della stima di stato.
Per andare oltre
Sezione intitolata “Per andare oltre”- Claude E. Shannon — Communication in the Presence of Noise (Proceedings of the IRE, 1949). Il paper che enuncia e dimostra il teorema del campionamento. Manoscritto del 1940, pubblicato con nove anni di ritardo per via della guerra. La fonte primaria.
- Harry Nyquist — Certain Topics in Telegraph Transmission Theory (Transactions of the AIEE, 1928). La radice del fattore due: fino a impulsi indipendenti al secondo su un canale di banda .
- Alan V. Oppenheim, Ronald W. Schafer — Discrete-Time Signal Processing (Prentice Hall). Il riferimento per campionamento, aliasing visto come copie dello spettro, ricostruzione e quantizzazione, sul versante digitale.
- Richard Zhang — Making Convolutional Networks Shift-Invariant Again (ICML 2019, arXiv:1904.11486). L’aliasing dentro le reti convoluzionali e il fix del blur prima del subsampling. Pagina di progetto con codice e reti anti-aliased pronte all’uso.
- Wikipedia — Nyquist–Shannon sampling theorem. Buon punto di partenza per l’enunciato preciso, la formula di interpolazione di Whittaker-Shannon, e la storia delle scoperte multiple (Whittaker 1915, Nyquist 1928, Kotelnikov 1933, Shannon 1949) e del nome WKS.