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

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. ...

Generatore Markmap HD

Pagina per il download di  Memento Lite Generatore Markmap Avanzato - Specifiche per l'utente finale Scopo principale: l'applicazione “Generatore Markmap Avanzato” permette agli utenti di trasformare testo scritto in formato Markdown in mappe mentali interattive. Offre funzionalità per creare, visualizzare, salvare, modificare, gestire ed esportare queste mappe mentali in vari formati. Interfaccia utente: l'interfaccia è strutturata nelle seguenti sezioni principali: Link al blog esterno: un link “🌐 Visita il Blog: Pensieri d'assestamento” che apre il blog associato in una nuova scheda. Intestazione (Header): Titolo: “Generatore Markmap Avanzato”. Sottotitolo: “Trasforma, salva e condividi il tuo testo Markdown in mappe mentali interattive”. Area Principale dei Contenuti: divisa in due pannelli affiancati (o impilati su schermi piccoli): Pannello di Input (Editor Markdown): Titolo: “✏️ Editor Markdown”. Area di Testo: un campo multiriga dove l...

Neural Tic-Tac-Toe Lab

Questo articolo presenta l'implementazione di una rete neurale specializzata nel gioco del tris (tic-tac-toe), addestrata mediante una metodologia innovativa basata sull'enumerazione completa degli stati di gioco. L'approccio supera le limitazioni dei metodi tradizionali di campionamento casuale, garantendo una copertura totale dello spazio delle configurazioni possibili. Struttura della rete neurale La rete implementata utilizza un'architettura feed-forward compatta con 9 neuroni di input, 16 neuroni nel layer nascosto e 9 neuroni di output. I neuroni di input ricevono la rappresentazione numerica dello stato della board (-1, 0, 1 per ciascuna delle 9 caselle), mentre i neuroni di output producono valutazioni numeriche per ogni possibile mossa. Il layer nascosto utilizza 16 neuroni con funzione di attivazione relu per introdurre capacità di apprendimento non-lineare. La rete contiene complessivamente 297 parametri: 144 pesi per le connessioni input-hidden, 16 bi...