Blog.

Deep Sequence Modeling: perché RNNs | Deep Neural Network


Autore
Andrea Provino
Data
Tempo di lettura
3 minuti
Categoria
AI, machine-learning

deep-sequence-modeling-recursive-neural-network-data-science-machine-learning-deep-learning

Attraverso l’espressione di Deep Sequence Modeling facciamo riferimento all’impiego di reti neurali artificiali per processare dati sequenziali (Sequence Data).

L’obiettivo di questo post è quello di capire quali insidie si celino dietro il sequence modeling e sviluppare un’intuizione sul funzionamento delle reti neurali ricorsive o recursive neural network.

Fermi tutti.

Cosa sono i dati sequenziali?

Cerchiamo di capirlo con un semplice, seppur funzionale, esempio.

La palla

Prendi una palla su uno schermo.

In quale direzione si muoverà?

Date le ridotte premesse, ogni possibile risposta non sarebbe che una mera infondata ipotesi.

Avremmo bisogno di alcune indicazioni sul comportamento passato della palla per determinare con più precisione un’eventuale direzione futura.

Hai ragione.

La palla è un esempio banale, anche se i dati sequenziali sono ovunque.

Un file audio e un paragrafo testuale sono due esempi di dati sequenziali: il primo è una sequenza ordinata di suoni, il secondo di parole e a un livello più profondo di lettere.

Per noi esseri umani è incredibilmente facile distinguere ed elaborare questo tipo di dati, eseguire cioè il sequence modeling.

Per un computer?

Non tanto.

Vediamo perché.

Processing and Handling Sequence Data

Devi sapere intanto che il sequence modeling nasconde diverse insidie.

Fingiamo di voler prevedere la parola successiva in una frase.

Questa può contenere 20 caratteri, 30, o 40.

Generalizziamo dicendo che il contenuto in input può essere variabile.

Dalla nostra precedente lezione introduttiva alle reti neurali artificiali sappiamo però che è necessario fissare in modo definito e costante un input.

Come combiniamo dunque una struttura fissa con un input variabile?

La risposta?

Windowing

Una soluzione consiste nell’impiegare una finestra a scorrimento di lettura.

In questo modo forziamo il vettore d’input a una dimensione costante (per esempio, due parole) consentendoci comunque di scansionare e gestire una qualsiasi frase.

Quindi possiamo allocare spazio in un vettore di dimensioni costanti e definite per rappresentare numericamente le due parole precedenti a quella che intendiamo prevedere.

Ora, una seconda considerazione.

Stiamo risolvendo un problema di sequence modeling: abbiamo bisogno di uno storico per una previsione accurata.

Ricorda la palla.

Tante più informazioni abbiamo sul tracciato percorso, quanto migliore sarà la nostra previsione.

Traslando il problema, ci servono altre parole altrimenti non saremmo in grado di gestire dipendenze di più vasta estensione.

Sono cresciuto in Francia, ma adesso vivo in Spagna. Parlo fluentemente ****.

Il senso comune ci spinge a pensare che la parola sia ‘francese’ ma se il nostro sistema considerasse solo le ultime 3-4 parole, allora produrrebbe come risultato ‘spagnolo’.

Abbiamo quindi bisogno d’informazioni distanti per prevedere accuratamente la parola successiva.

All data: bag of words

Un secondo approccio consiste nel considerare l’intera frase e conteggiare le occorrenze.

In questo caso rappresentiamo un vettore come conteggio delle parole presenti generando un bag of words.

Hey hey.

Non riusciamo però a codificare efficacemente l’informazione contenuta nell’ordine delle parole:

The food was good, not bad at all.
The food was bad, not good at all.

Come puoi vedere, il numero delle occorrenze è identico ma l’ordine cambia e così anche il significato.

Contare le parole di una frase non basta.

Sequence Modeling Design Criteria

Ripassiamo i punti chiave.

Per realizzare un modello sequenziale dobbiamo quindi prendere in considerazione alcuni criteri:

  • gestire sequenze di lunghezza variabile
  • tracciare dipendenze di lungo termine
  • preservare l’informazione dell’ordine
  • condividere parametri nell’intera sequenza

Queste complicazioni hanno portato all sviluppo di una particolare struttura di reti neurali artificiali chiamata Recurrent Neural Network (RNN).

Recurrent Neural Network (RNN) è una classe di reti neurali in grado di analizzare serie storiche (Time Series), di cui abbiamo parlato qui, e prevedere tendenze e andamenti futuri.

Allora basta indugiare: andiamo alla scoperta delle Recurrent Neural Network.

Per il momento è tutto!

Un caldo abbraccio, Andrea.

Taggeddeep learning


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum