IA 101
Che 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.
Che cos’è l’Apprendimento Automatico?
Deep learning è un’estensione di alcuni dei concetti originati dall’apprendimento automatico, quindi per questo motivo, prendiamoci un minuto per spiegare cosa sia l’apprendimento automatico.
Semplificando, 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 introduce i dati nella rete, dove vengono manipolati dai nodi nello strato medio/nascosto. I nodi nello strato nascosto sono funzioni matematiche che possono manipolare i dati provenienti dallo strato di input, estraendo modelli rilevanti dai dati di input. È 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.
Le connessioni 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 allena, i pesi vengono regolati, e l’obiettivo è che i pesi/le 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, abilitando la rete a imparare rappresentazioni complesse dei dati. Le funzioni di attivazione moltiplicano i valori di input per i valori dei pesi e aggiungono un termine di bias.
Che 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 sono i modelli che la rete può imparare.
Le reti neurali profonde composte da neuroni sono a volte chiamate reti completamente connesse o strati completamente connessi, con 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.
Diversi Tipi di Deep Learning
Ci sono vari tipi di architetture di deep learning utilizzate da ricercatori e ingegneri, e ognuna di queste architetture ha il proprio caso d’uso specializzato.
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 sottocampionamento/Pooling
- Funzioni di attivazione
- Strati completamente connessi
Gli strati convoluzionali sono quelli che introducono le immagini come input nella rete, analizzando le immagini e ottenendo i valori dei pixel. Il sottocampionamento 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 imparano 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 imparare 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 dato 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 RNN bidirezionali, che prendono in considerazione gli elementi futuri nella sequenza, oltre a quelli precedenti, quando si calcola il valore di un elemento. Un altro tipo di RNN è una Rete Neurale a Memoria a Lungo Termine, o LSTM. Le LSTM sono tipi di RNN che possono gestire catene di dati lunghe. Le RNN regolari possono essere vittime di un problema chiamato “problema dell’esplosione del gradiente”. Questo problema si verifica quando la catena di input dei dati 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 frequentemente utilizzati per rilevare anomalie nei set di dati, un esempio di apprendimento non supervisionato, poiché la natura dell’anomalia non è nota. Tali esempi di rilevamento di anomalie includono il rilevamento 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 tale che l’output della rete assomiglia all’input. I quattro tipi di autoencoder che vengono utilizzati frequentemente sono:
- Autoencoder regolari/normali
- Autoencoder multilivello
- Autoencoder convoluzionali
- Autoencoder regolati
Gli autoencoder regolari/normali 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 specifica 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 allenati 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 questi 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.
Riepilogo del Deep Learning
Il deep learning estende i principi delle reti neurali per creare modelli sofisticati che possono imparare modelli complessi e generalizzare quei modelli a futuri set di dati. 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 pitted contro l’altra che sono particolarmente utili per i compiti di visione artificiale.










