Modelli ricorrenti (RNN)
Le reti neurali possono essere suddivise in due macrocategorie: Feed-forward e Recurrent neural network (RNN).
Le feed-forward sono le reti neurali, dove ogni input ed il relativo output si muovono in una sola direzione, ovvero non sono presenti cicli o connessioni a ritroso, né tantomeno tra nodi dello stesso livello. Cosa che invece può avvenire nelle recurrent neural network (RNN).
RNN è una classe di reti neurali artificiali impiegata in task di previsione, perché capace di analizzare Time Series e prevedere andamenti futuri: ad es. il prezzo delle azioni, la traiettoria di un veicolo, la nota successiva in una melodia e molto altro.
Generalizzando, una delle peculiarità delle Recurrent Neural Network sta nell’abilità di lavorare su sequenze di lunghezza arbitraria, superando le limitazioni, in questo senso, imposte da altre strutture come le Convolutional Neural Network (CNN) che, invece, impongono input di lunghezza fissa.
Le Recurrent Neural Networks sono in grado di lavorare su:
- Frasi e frammenti di testi
- Audio
- Documenti
Consentendoci di risolvere problemi come:
- speech-to-text
- Sentiment Analysis (estrazione del sentimento da frasi, e.g. recensioni e commenti social)
- automatic translation
RNN è, ad esempio, un validissimo asset da impiegare nei problemi di Natural Language Processing (NLP).
Inoltre, le reti RNN sono sorprendentemente creative: sono in grado di individuare le note musicali successive più probabili in una sequenza melodica. Questo può dare vita a veri e propri spartiti musicali interamente redatti da Intelligenze Artificiali; un esempio è il progetto da Google’s Magenta Project che usando Tensorflow, mette a disposizione un framework di ML per le composizioni musicali.
https://magenta.tensorflow.org
Una Recurrent Neural Network è simile alle reti feed-forward, fatta eccezione per la presenza di una connessione retrograda (connection pointing brackward).
Per comprendere meglio questa struttura, consideriamo l’esempio più semplice di RNN: un solo neurone che riceve un input, produce un output e lo invia indietro a sé stesso.
Tra le RNN che implementano al meglio questo tipo di soluzioni, troviamo le cosiddette Long Short-Term Memory Network (LSTM).
Queste ultime sono particolarmente indicate quando dobbiamo riconoscere il linguaggio naturale; sarà infatti utile, in tal caso, poter andare a ritroso nel tempo, anche di molto, per ogni termine che desideriamo riconoscere, al fine di contestualizzare l’argomento al meglio.
Le LSTM formano tipicamente delle catene di reti neurali ricorrenti, ognuna delle quali applica funzioni di attivazione specifiche per filtrare caratteristiche differenti dei dati in input, che possono essere sia relativi al vocabolo attuale da predire, sia a quelli precedentemente memorizzati. Possiamo anche dire che le LSTM “possiedono la memoria lunga!”.
Un particolare utilizzo delle reti RNN sono le serie temporali.
Una serie temporale (time serie) può essere relativa all’andamento nel tempo: di un titolo di borsa, della temperatura di un ambiente, del consumo energetico di un impianto, ecc.
Possiamo considerare una serie temporale come una funzione campionata in più istanti temporali.
Un esempio in Tensorflow-Keras di RNN per la predizione di una funzione matematica (combinazione di sinusoidi) è visionabile cliccando sul link sottostante:
https://github.com/ageron/handson-ml2
Progetti Humanativa
Sul tema, Humanativa sta attualmente lavorando a due diversi progetti:
- l’uno si sviluppa su un’analisi basata su serie temporali, per analizzare il comportamento di passeggeri in un aeroporto e predire il numero di quelli presenti nei vari point (varchi, negozi etc…) con una settimana di anticipo, con lo scopo di migliorare la qualità e la sicurezza aeroportuale;
- l’altro si sostanzia in un’analisi del Sentiment di recensioni film, utilizzando una rete neurale che utilizzi metodologie LSTM.