Fondamenti di IA
Cos’è il Deep Learning?
Il deep learning è uno dei campi più influenti e in più rapida crescita nell’intelligenza artificiale. Tuttavia, ottenere una comprensione intuitiva del deep learning può essere difficile perché il termine deep learning copre una varietà di algoritmi e tecniche diversi. Il deep learning è anche una subdisciplina dell’apprendimento automatico in generale, quindi è importante capire cosa sia l’apprendimento automatico per comprendere il deep learning.
Cos’è l’Apprendimento Automatico?
Il deep learning è un’estensione di alcuni concetti originati dall’apprendimento automatico, quindi per questo motivo, prendiamoci un minuto per spiegare cosa sia l’apprendimento automatico.
In semplici parole, l’apprendimento automatico è un metodo per abilitare i computer a eseguire compiti specifici senza codificare esplicitamente ogni riga degli algoritmi utilizzati per eseguire quei compiti. Ci sono molti algoritmi di apprendimento automatico diversi, ma uno degli algoritmi più comunemente utilizzati è un multilayer perceptron. Un multilayer perceptron è anche noto come rete neurale, e si compone di una serie di nodi/neuroni collegati tra loro. Ci sono tre strati diversi in un multilayer perceptron: lo strato di input, lo strato nascosto e lo strato di output.
Lo strato di input prende i dati in ingresso nella rete, dove vengono manipolati dai nodi nello strato medio/nascosto. I nodi nello strato nascosto sono funzioni matematiche che possono manipolare i dati in ingresso, estraendo modelli rilevanti dai dati in ingresso. È così che la rete neurale “impara”. Le reti neurali prendono il nome dal fatto che sono ispirate alla struttura e alla funzione del cervello umano.
I collegamenti tra i nodi nella rete hanno valori chiamati pesi. Questi valori sono essenzialmente ipotesi su come i dati in uno strato sono collegati ai dati nello strato successivo. Mentre la rete si addestra, i pesi vengono regolati, e l’obiettivo è che i pesi/ipotesi sui dati alla fine convergano su valori che rappresentano accuratamente i modelli significativi all’interno dei dati.
Le funzioni di attivazione sono presenti nei nodi della rete, e queste funzioni di attivazione trasformano i dati in modo non lineare, consentendo alla rete di apprendere rappresentazioni complesse dei dati. Le funzioni di attivazione moltiplicano i valori di input per i valori di peso e aggiungono un termine di bias.
Cos’è il Deep Learning?
Il deep learning è il termine dato alle architetture di apprendimento automatico che uniscono molti multilayer perceptron, in modo che non ci sia solo uno strato nascosto, ma molti strati nascosti. Più “profonda” è la rete neurale, più sofisticati possono essere i modelli che la rete può apprendere.
Le reti neurali profonde composte da neuroni sono talvolta chiamate reti completamente connesse o strati completamente connessi, in riferimento al fatto che un neurone dato mantiene una connessione con tutti i neuroni circostanti. Le reti completamente connesse possono essere combinate con altre funzioni di apprendimento automatico per creare diverse architetture di deep learning.
Tipi Diversi di Deep Learning
Ci sono vari tipi di architetture di deep learning utilizzate da ricercatori e ingegneri, e ciascuna delle diverse architetture ha il proprio caso d’uso specifico.
Reti Neurali Convoluzionali
Le reti neurali convoluzionali, o CNN, sono l’architettura di rete neurale comunemente utilizzata nella creazione di sistemi di visione artificiale. La struttura delle reti neurali convoluzionali consente loro di interpretare i dati delle immagini, convertendoli in numeri che una rete completamente connessa può interpretare. Una CNN ha quattro componenti principali:
- Strati convoluzionali
- Strati di campionamento/ pooling
- Funzioni di attivazione
- Strati completamente connessi
Gli strati convoluzionali sono quelli che prendono in ingresso le immagini nella rete, analizzando le immagini e ottenendo i valori dei pixel. Il campionamento o pooling è dove i valori delle immagini vengono convertiti/ridotti per semplificare la rappresentazione delle immagini e ridurre la sensibilità dei filtri di immagine al rumore. Le funzioni di attivazione controllano come i dati fluiscono da uno strato all’altro, e gli strati completamente connessi sono quelli che analizzano i valori che rappresentano l’immagine e apprendono i modelli presenti in quei valori.
RNN/LSTM
Le reti neurali ricorrenti, o RNN, sono popolari per i compiti in cui l’ordine dei dati è importante, dove la rete deve apprendere una sequenza di dati. Le RNN sono comunemente applicate a problemi come l’elaborazione del linguaggio naturale, poiché l’ordine delle parole è importante quando si decodifica il significato di una frase. La parte “ricorrente” del termine Rete Neurale Ricorrente deriva dal fatto che l’output per un elemento in una sequenza dipende dal calcolo precedente e dal calcolo corrente. A differenza di altre forme di reti neurali profonde, le RNN hanno “memorie”, e le informazioni calcolate ai diversi passaggi temporali nella sequenza vengono utilizzate per calcolare i valori finali.
Ci sono molti tipi di RNN, tra cui le RNN bidirezionali, che prendono in considerazione gli elementi futuri nella sequenza, oltre agli elementi precedenti, quando si calcola il valore di un elemento. Un altro tipo di RNN è una Rete a Lunga e Corta Memoria, o LSTM. Le LSTM sono tipi di RNN che possono gestire lunghe catene di dati. Le RNN regolari possono essere vittime di un problema chiamato “problema del gradiente esplosivo”. Questo problema si verifica quando la catena di dati in ingresso diventa estremamente lunga, ma le LSTM hanno tecniche per combattere questo problema.
Autoencoder
La maggior parte delle architetture di deep learning menzionate finora sono applicate a problemi di apprendimento supervisionato, piuttosto che a compiti di apprendimento non supervisionato. Gli autoencoder possono trasformare dati non supervisionati in un formato supervisionato, consentendo alle reti neurali di essere utilizzate sul problema.
Gli autoencoder vengono spesso utilizzati per rilevare anomalie nei set di dati, un esempio di apprendimento non supervisionato poiché la natura dell’anomalia non è nota. Esempi di rilevamento di anomalie includono la rilevazione di frodi per le istituzioni finanziarie. In questo contesto, lo scopo di un autoencoder è determinare una base di modelli regolari nei dati e identificare anomalie o valori estremi.
La struttura di un autoencoder è spesso simmetrica, con strati nascosti disposti in modo che l’output della rete assomigli all’input. I quattro tipi di autoencoder che vengono utilizzati frequentemente sono:
- Autoencoder regolari/piatti
- Autoencoder multilivello
- Autoencoder convoluzionali
- Autoencoder regolati
Gli autoencoder regolari/piatti sono solo reti neurali con un singolo strato nascosto, mentre gli autoencoder multilivello sono reti profonde con più di uno strato nascosto. Gli autoencoder convoluzionali utilizzano strati convoluzionali invece di, o in aggiunta a, strati completamente connessi. Gli autoencoder regolati utilizzano una particolare funzione di perdita che consente alla rete neurale di eseguire funzioni più complesse, funzioni diverse dal semplice copiare input in output.
Reti Adversarie Generative
Le Reti Adversarie Generative (GAN) sono in realtà più reti neurali profonde invece di una sola rete. Due modelli di apprendimento profondo vengono addestrati contemporaneamente, e i loro output vengono alimentati nell’altra rete. Le reti sono in competizione tra loro, e poiché hanno accesso ai dati di output dell’altra rete, entrambe imparano da quei dati e migliorano. Le due reti stanno essenzialmente giocando un gioco di contraffazione e rilevamento, dove il modello generativo tenta di creare nuove istanze che inganneranno il modello di rilevamento/il discriminatore. Le GAN sono diventate popolari nel campo della visione artificiale.
Riassunto del Deep Learning
Il deep learning estende i principi delle reti neurali per creare modelli sofisticati che possono apprendere modelli complessi e generalizzare quei modelli a set di dati futuri. Le reti neurali convoluzionali vengono utilizzate per interpretare le immagini, mentre le RNN/LSTM vengono utilizzate per interpretare dati sequenziali. Gli autoencoder possono trasformare compiti di apprendimento non supervisionato in compiti di apprendimento supervisionato. Infine, le GAN sono più reti in competizione tra loro che sono particolarmente utili per i compiti di visione artificiale.












