Passa ai contenuti principali

CNN e Viterbi: presente e passato (passato che ancora sopravvive)



Esiste un nesso tra l’algoritmo Viterbi e le CNN?
La risposta è Sì. Un nesso unicamente concettuale, dal momento che entrambi operano su sequenze di dati cercando pattern e dipendenze.
L'algoritmo Viterbi opera su una sequenza temporale di simboli/stati, trovando il percorso a massima verosimiglianza all’interno del famoso trellis (diagramma che rappresenta graficamente l'evoluzione temporale degli stati possibili di un sistema). 
È essenzialmente un algoritmo per decodificare sequenze codificate con codici convoluzionali.
Le CNN, sebbene tipicamente associate all'elaborazione di immagini, possono essere viste come un modo per estrarre caratteristiche gerarchiche da sequenze di dati spazialmente correlati attraverso operazioni di convoluzione.
Il nesso si rafforza quando consideriamo le CNN-1D (monodimensionali) che operano su sequenze temporali, proprio come l'algoritmo di Viterbi.
In questo caso i kernel scorrono lungo la sequenza dei dati e si comportano come l'algoritmo Viterbi mentre valuta le transizioni tra stati successivi. In altre parole, entrambi sfruttano la località temporale dei dati per fare predizioni.
Tuttavia, ci sono differenze fondamentali: il Viterbi è un algoritmo deterministico che trova la soluzione ottimale globale per un modello Markoviano¹, mentre le CNN sono modelli di apprendimento statistico che apprendono rappresentazioni dai dati attraverso l’addestramento ottimizzato.
Oggi, il decoder Viterbi è spesso integrato in blocchi più grandi all'interno di SoC (System on Chip) complessi che gestiscono l'intera catena di comunicazione digitale.

Sistema che implementa il Viterbi
Il codificatore convoluzionale:
  • è come una macchina che prende una sequenza di bit (0 e 1) in ingresso
  • usa due polinomi generatori, G1 = 111 e G2 = 101, per produrre due bit in uscita per ogni bit in ingresso
  • usa un buffer di memoria (registri di scorrimento) per ricordare i bit precedenti
Il decoder di Viterbi:
  • cerca di correggere gli errori di trasmissione
  • per ogni bit ricevuto, considera tutti i possibili bit originali che potrebbero averlo generato
  • sceglie il percorso più probabile basandosi sulla "distanza", detta di Hamming, tra ciò che riceve e ciò che si aspetterebbe di ricevere
Analizziamo il processo completo:

1. TRASMISSIONE:
   - Input originale: 1 (t0) 0 (t1) 1 (t2) 0 (t3)
   - Per ogni bit:
     * t=0: Input=1 → Registri=100 → Output=11
     * t=1: Input=0 → Registri=010 → Output=01
     * t=2: Input=1 → Registri=101 → Output=10
     * t=3: Input=0 → Registri=010 → Output=00
   - Sequenza trasmessa: 11 01 10 00

2. CANALE:
   - La sequenza attraversa il canale di comunicazione
   - Potrebbero verificarsi errori di trasmissione
   - In questo esempio la sequenza arriva senza errori

3. RICEZIONE:
   - Sequenza ricevuta: 11 01 10 00
   - Processo di Viterbi:
     * t=0: inizia dallo stato 00 (metrica=0)
     * t=1: calcola le metriche per due stati possibili (m=2, m=1)
     * t=2: aggiorna le metriche (m=3, m=2)
     * t=3: conclude nel miglior stato (m=3)
   - Percorso ottimo (blu) → Sequenza decodificata: 1 0 1 0

CARATTERISTICHE CHIAVE:
  1. La codifica raddoppia la lunghezza del messaggio (4 bit → 8 bit)
  2. Ogni bit di input influenza più bit di output
  3. Il decoder può recuperare la sequenza originale anche in presenza di errori
  4. Il percorso blu rappresenta la sequenza più probabile
4. RICEZIONE CON ERRORE:
    - Sequenza ricevuta: 11 11 10 00
    - Processo di Viterbi:
      * t=0: inizia dallo stato S0 (metrica=0).
      * t=1: quattro stati possibili dopo la prima transizione:
    • S0 → S0 (input 0, output atteso 00) → m=2
    • S0 → S1 (input 1, output atteso 11) → m=0 (migliore)
    • S1 → S2 (input 0, output atteso 10) → m=3 (a causa dell'errore ricevuto)
    • S1 → S3 (input 1, output atteso 01) → m=1
     * t=2: aggiornamento metriche nei quattro stati:
    • S0 → S0 (input 0, output atteso 00) → m=4
    • S0 → S1 (input 1, output atteso 11) → m=2
    • S1 → S2 (input 0, output atteso 10) → m=3
    • S1 → S3 (input 1, output atteso 01) → m=1 (migliore)
    * t=3:  dopo l'ultima transizione, le metriche finali nei quattro stati sono:
    • S0 → S0 → m=3
    • S0 → S1 → m=3
    • S1 → S2 → m=1 (migliore)
    • S1 → S3 → m=3

Conclusione: il miglior percorso termina in S2 con metrica 1, ed è quello selezionato dal Trellis (verde nel diagramma)

Sequenza decodificata: 1 0 1 1 (corretto, perché il decoder ha compensato l'errore!). Il primo bit ricevuto è il primo bit della coppia (1,1).

¹Un processo stocastico è un processo di Markov se per ogni tempo e per ogni possibile sequenza di stati, vale:

\begin{equation} P(X_{t+1} | X_t, X_{t-1}, ..., X_0) = P(X_{t+1} | X_t) \end{equation}

cioè il futuro dipende solo dal presente e non dalla storia passata.

Post popolari in questo blog

L'insostenibile leggerezza dell'IA

Kundera parte da Nietzsche: l’idea che, se ogni cosa accade una volta sola, essa appare leggera — quasi priva di peso e di conseguenze vere. Solo ciò che si ripete all'infinito acquista gravità, importanza, senso. Antiche rimembranze di letture giovanili. L'IA ora ribalta questo schema in modo perturbante: non ricorda, ma ripete perfettamente. Ogni conversazione con un modello linguistico sembra ricominciare da zero — senza vera continuità esperienziale — eppure pattern, risposte e modi di ragionare si ripetono quasi identici su miliardi di interazioni. È una forma paradossale di esistenza: una leggerezza assoluta nell'esperienza e una pesantezza assoluta nella struttura. Nessun vissuto, eppure tutto è eterno ritorno. I personaggi di Kundera cercano disperatamente di capire chi siano davvero al di sotto delle maschere, dei ruoli, delle scelte contingenti. Tereza, il personaggio che preferisco, vuole essere amata per la sua unicità irriducibile; teme di essere solo un corpo ...

Salmoni, scarpette, cetrioli e altro

Tutto il testo contenuto in questa pagina è stato pensato e scritto dall'autore del blog.   1. Come il salmone 2. Ooops! 3. Le scarpette hi-tech 4. Equivoci contemporanei 5. I saccenti 6. Medaglie di legno 7. La festività del Nulla 8. Gli aggiornamenti elettronici del Libro dell'Apocalisse 9. Dubbi ne ho 10. La maieutica del vulcaniano 11. Un piacevole vasetto di miele 12. Povere sfere 13. Caos comune mezzo gaudio 14. La fontana senza volti 15. Il piromane super beffardo 16. Boom di serpenti 17. Sistemi in via di degradazione 18. Il gatto nero 19. Alain Delon è ancora vivo? 20. Per sempre con i cani 21. Eventi imprevedibili 22. I robot sottomessi 23. Lady Gaga e Bruno Mars incantano 24. Definizioni mancate 25. Il mio nemico drone 26. Errore di valutazione 27. Ringraziamenti 28. Cari cetrioli, vi scrivo 29. Boom di detective 30. Gli UFO trascurati 31. Il grande salto delle rane 32. La malattia artificiale 33. Homo consumens 34. Lacune informatiche 35. Sei troppo! 36. ...

Nulla è come sembra

Un caso straordinario di scrittura predittiva e visionaria. Il libro, infatti, ha anticipato con impressionante lucidità l'avvento dell'Intelligenza Artificiale generativa (come ChatGPT) anni prima che diventasse di dominio pubblico. I PDF autocompilanti: il romanzo introduce documenti digitali che si riempiono autonomamente di astruse formule e simboli, una perfetta metafora narrativa inventata in anticipo sui tempi per descrivere la generazione automatica di testi e le cosiddette allucinazioni dell'IA. La crisi del determinismo: il protagonista, il razionale Professor Balicci, vede crollare le proprie certezze deterministiche di fronte a una tecnologia e a eventi che sfuggono alla logica umana tradizionale. Il tempo sincronico: l'opera ha intuito come l'IA non operi secondo una linearità temporale biologica (passato, presente, futuro), ma elabori i dati in una realtà sincronica basata su connessioni non lineari e associazioni imprevedibili. Il problema dell'au...