Apprendimento Profondo

Completato

Annotazioni

Per altri dettagli, vedi la scheda Testo e immagini .

Il Deep Learning è una forma avanzata di Machine Learning che tenta di emulare il modo in cui il cervello umano impara. La chiave per l'apprendimento avanzato è la creazione di una rete neurale artificiale che simula l'attività elettrochimica nei neuroni biologici usando funzioni matematiche, come illustrato di seguito.

Rete neurale biologica Rete neurale artificiale
Diagramma di una rete neurale naturale. Diagramma di una rete neurale artificiale.
I neuroni si attivano in risposta agli stimoli elettrochimici. Quando viene attivato, il segnale viene passato ai neuroni connessi. Ogni neurone è una funzione che opera su un valore di input (x) e un peso (w). La funzione è avvolta in una funzione di attivazione che determina se trasmettere l'output.

Le reti neurali artificiali sono costituite da più livelli di neuroni, essenzialmente definendo una funzione profondamente annidata. Questa architettura è il motivo per cui la tecnica è definita Deep Learning e i modelli prodotti da esso sono spesso definiti reti neurali profonde (DNN). È possibile usare reti neurali profonde per molti tipi di problema di Machine Learning, tra cui regressione e classificazione, nonché modelli più specializzati per l'elaborazione del linguaggio naturale e la visione artificiale.

Analogamente ad altre tecniche di Machine Learning descritte in questo modulo, l'apprendimento avanzato prevede l'adattamento dei dati di training a una funzione in grado di stimare un'etichetta (y) in base al valore di una o più funzionalità (x). La funzione (f(x)) è il livello esterno di una funzione annidata in cui ogni livello della rete neurale incapsula le funzioni che operano su x e i valori di peso (w) associati. L'algoritmo utilizzato per addestrare il modello prevede l'alimentazione iterativa dei valori delle caratteristiche (x) nei dati di addestramento attraverso i livelli per calcolare i valori di output di ŷ, e convalidare il modello per valutare quanto i valori calcolati di ŷ si discostano dai valori noti di y (quantificando il livello di errore, o perdita, nel modello), e quindi modificare i pesi (w) per ridurre la perdita. Il modello sottoposto a training include i valori di peso finale che generano stime più accurate.

Esempio- Uso di Deep Learning per la classificazione

Per comprendere meglio il funzionamento di un modello di rete neurale profonda, si esaminerà un esempio in cui viene usata una rete neurale per definire un modello di classificazione per le specie pinguini.

Diagramma di una rete neurale usata per classificare una specie di pinguini.

I dati delle caratteristiche (x) sono costituiti da alcune misurazioni di un pinguino. In particolare, le misure riguardano:

  • Lunghezza del becco del pinguino.
  • Profondità del becco del pinguino.
  • Lunghezza delle flipper del pinguino.
  • Peso del pinguino.

In questo caso, x è un vettore di quattro valori, o matematicamente, x=[x1,x2,x3,x4].

L'etichetta che stiamo cercando di prevedere (y) è la specie del pinguino e che ci sono tre specie possibili:

  • Adelie
  • Gentoo
  • Chinstrap

Questo è un esempio di un problema di classificazione, in cui il modello di Machine Learning deve prevedere la classe più probabile a cui appartiene un'osservazione. Un modello di classificazione consente di ottenere questo risultato stimando un'etichetta costituita dalla probabilità per ogni classe. In altre parole, y è un vettore di tre valori di probabilità; uno per ognuna delle classi possibili: [P(y=0|x), P(y=1|x), P(y=2|x)].

Il processo di inferenza di una classe pinguino stimata usando questa rete è:

  1. Il vettore di funzionalità per un'osservazione del pinguino viene inserito nel livello di input della rete neurale, costituito da un neurone per ogni valore x . In questo esempio, il vettore x seguente viene usato come input: [37.3, 16.8, 19.2, 30.0]
  2. Le funzioni per il primo livello di neuroni calcolano ogni somma ponderata combinando il valore x e il peso w e passarlo a una funzione di attivazione che determina se soddisfa la soglia da passare al livello successivo.
  3. Ogni neurone in un livello è collegato a tutti i neuroni nel livello successivo (un'architettura talvolta chiamata rete completamente connessa) in modo che i risultati di ogni livello vengano inseriti in avanti attraverso la rete fino a raggiungere il livello di output.
  4. Il livello di output produce un vettore di valori; in questo caso, usando una funzione softmax o simile per calcolare la distribuzione delle probabilità per le tre possibili classi di pinguini. In questo esempio il vettore di output è: [0.2, 0.7, 0.1]
  5. Gli elementi del vettore rappresentano le probabilità per le classi 0, 1 e 2. Il secondo valore è il più alto, quindi il modello stima che la specie del pinguino è 1 (Gentoo).

Come si apprende una rete neurale?

I pesi in una rete neurale sono fondamentali per il calcolo dei valori stimati per le etichette. Durante il processo di training, il modello apprende i pesi che determineranno le stime più accurate. Si esaminerà ora il processo di training in modo più dettagliato per comprendere il modo in cui viene eseguito questo apprendimento.

Diagramma di una rete neurale sottoposta a training, valutazione e ottimizzazione.

  1. I set di dati di training e convalida sono definiti e le funzionalità di training vengono inserite nel livello di input.
  2. I neuroni in ogni livello della rete applicano i loro pesi (che vengono inizialmente assegnati in modo casuale) e alimentano i dati attraverso la rete.
  3. Il livello di output produce un vettore contenente i valori calcolati per ŷ. Ad esempio, un output per una stima della classe pinguino potrebbe essere [0,3. 0.1. 0.6].
  4. Una funzione di perdita viene usata per confrontare i valori stimati ŷ con i valori y noti e aggregare la differenza (nota come perdita). Ad esempio, se la classe nota per il caso che ha restituito l'output nel passaggio precedente è Chinstrap, il valore y deve essere [0,0, 0,0, 1,0]. La differenza assoluta tra questo e il vettore ŷ è [0.3, 0.1, 0.4]. In realtà, la funzione di perdita calcola la varianza aggregata per più casi e la riepiloga come un singolo valore di perdita .
  5. Poiché l'intera rete è essenzialmente una grande funzione annidata, una funzione di ottimizzazione può usare il calcolo differenziale per valutare l'influenza di ogni peso nella rete sulla perdita e determinare come possono essere regolati (su o giù) per ridurre la quantità di perdita complessiva. La tecnica di ottimizzazione specifica può variare, ma in genere implica un approccio di discesa del gradiente in cui ogni peso è aumentato o diminuito per ridurre al minimo la perdita.
  6. Le modifiche apportate ai pesi vengono restituite ai livelli della rete, sostituendo i valori usati in precedenza.
  7. Il processo viene ripetuto su più iterazioni (note come epoche) fino a quando la perdita non viene ridotta al minimo e il modello prevede con precisione accettabile.

Annotazioni

Sebbene sia più facile pensare a ogni caso dei dati di addestramento che passa attraverso la rete uno alla volta, in realtà i dati vengono raggruppati in matrici ed elaborati usando calcoli algebrici lineari. Per questo motivo, il training della rete neurale viene eseguito in modo ottimale nei computer con unità di elaborazione grafica (GPU) ottimizzate per la manipolazione vettoriale e matrice.