Reti neurali profonde
Una rete neurale profonda (DNN) è una ANN con più livelli nascosti tra i livelli di input e output. Analogamente alle ANN superficiali, i DNN possono modellare relazioni non lineari complesse.
Lo scopo principale di una rete neurale è ricevere una serie di input, eseguire calcoli progressivamente complessi su di essi e fornire output per risolvere problemi del mondo reale come la classificazione. Ci limitiamo a alimentare le reti neurali.
Abbiamo un input, un output e un flusso di dati sequenziali in una rete profonda.
Le reti neurali sono ampiamente utilizzate nell'apprendimento supervisionato e nei problemi di apprendimento per rinforzo. Queste reti si basano su un insieme di livelli collegati tra loro.
Nell'apprendimento profondo, il numero di livelli nascosti, per lo più non lineari, può essere elevato; diciamo circa 1000 strati.
I modelli DL producono risultati molto migliori rispetto alle normali reti ML.
Utilizziamo principalmente il metodo della discesa del gradiente per ottimizzare la rete e ridurre al minimo la funzione di perdita.
Possiamo usare il file Imagenet, un archivio di milioni di immagini digitali per classificare un set di dati in categorie come cani e gatti. Le reti DL sono sempre più utilizzate per le immagini dinamiche oltre a quelle statiche e per le serie temporali e l'analisi del testo.
L'addestramento dei set di dati costituisce una parte importante dei modelli di Deep Learning. Inoltre, Backpropagation è l'algoritmo principale nell'addestramento dei modelli DL.
DL si occupa dell'addestramento di grandi reti neurali con complesse trasformazioni di input e output.
Un esempio di DL è la mappatura di una foto al nome della persona o delle persone nella foto come fanno sui social network e descrivere un'immagine con una frase è un'altra applicazione recente di DL.
Le reti neurali sono funzioni che hanno input come x1, x2, x3 ... che vengono trasformati in output come z1, z2, z3 e così via in due (reti superficiali) o diverse operazioni intermedie chiamate anche strati (reti profonde).
I pesi e le distorsioni cambiano da un livello all'altro. "w" e "v" sono i pesi o le sinapsi degli strati delle reti neurali.
Il miglior caso d'uso del deep learning è il problema dell'apprendimento supervisionato, in cui disponiamo di un ampio set di input di dati con un set di output desiderati.
Qui applichiamo l'algoritmo di propagazione inversa per ottenere una previsione corretta dell'output.
Il set di dati più basilare del deep learning è MNIST, un set di dati di cifre scritte a mano.
Possiamo addestrare in profondità una rete neurale convoluzionale con Keras per classificare le immagini di cifre scritte a mano da questo set di dati.
L'attivazione o l'attivazione di un classificatore di rete neurale produce un punteggio. Ad esempio, per classificare i pazienti come malati e sani, consideriamo parametri come altezza, peso e temperatura corporea, pressione sanguigna ecc.
Un punteggio alto significa che il paziente è malato e un punteggio basso significa che è sano.
Ogni nodo nell'output e nei livelli nascosti ha i propri classificatori. Il livello di input prende input e passa i suoi punteggi al successivo livello nascosto per un'ulteriore attivazione e questo continua fino a quando non viene raggiunto l'output.
Questo progresso dall'input all'output da sinistra a destra nella direzione in avanti viene chiamato forward propagation.
Il percorso di assegnazione del credito (CAP) in una rete neurale è la serie di trasformazioni che iniziano dall'input all'output. I CAP elaborano probabili connessioni causali tra l'input e l'output.
La profondità della CAP per una data rete neurale feed-forward o la profondità della CAP è il numero di livelli nascosti più uno quando viene incluso il livello di output. Per le reti neurali ricorrenti, in cui un segnale può propagarsi più volte attraverso uno strato, la profondità della CAP può essere potenzialmente illimitata.
Reti profonde e reti basse
Non esiste una chiara soglia di profondità che divide l'apprendimento superficiale dall'apprendimento profondo; ma è per lo più concordato che per l'apprendimento profondo che ha più livelli non lineari, la PAC deve essere maggiore di due.
Il nodo di base in una rete neurale è una percezione che imita un neurone in una rete neurale biologica. Quindi abbiamo Perception o MLP a più livelli. Ogni serie di input viene modificata da una serie di pesi e bias; ogni bordo ha un peso unico e ogni nodo ha un bias unico.
La previsione accuracy di una rete neurale dipende dalla sua weights and biases.
Viene chiamato il processo di miglioramento della precisione della rete neurale training. L'output di una rete di propulsione in avanti viene confrontato con quel valore noto per essere corretto.
Il cost function or the loss function è la differenza tra l'output generato e l'output effettivo.
Lo scopo dell'addestramento è ridurre il più possibile il costo dell'addestramento attraverso milioni di esempi di addestramento. Per fare ciò, la rete modifica i pesi e le distorsioni finché la previsione non corrisponde all'output corretto.
Una volta addestrata bene, una rete neurale ha il potenziale per fare una previsione accurata ogni volta.
Quando lo schema diventa complesso e vuoi che il tuo computer le riconosca, devi optare per le reti neurali: in scenari di schemi così complessi, la rete neurale supera tutti gli altri algoritmi concorrenti.
Ora ci sono GPU in grado di addestrarli più velocemente che mai. Le reti neurali profonde stanno già rivoluzionando il campo dell'IA
I computer si sono dimostrati bravi nell'eseguire calcoli ripetitivi e nel seguire istruzioni dettagliate, ma non sono stati così bravi nel riconoscere schemi complessi.
Se c'è il problema del riconoscimento di modelli semplici, una macchina vettoriale di supporto (svm) o un classificatore di regressione logistica può fare bene il lavoro, ma con l'aumentare della complessità dei modelli, non c'è modo che andare per reti neurali profonde.
Pertanto, per modelli complessi come un volto umano, le reti neurali superficiali falliscono e non hanno altra alternativa che optare per reti neurali profonde con più livelli. Le reti profonde sono in grado di svolgere il loro lavoro scomponendo i modelli complessi in modelli più semplici. Ad esempio, volto umano; adeep net userebbe i bordi per rilevare parti come labbra, naso, occhi, orecchie e così via e poi combinarli insieme per formare un volto umano
L'accuratezza della previsione corretta è diventata così precisa che di recente a una sfida di riconoscimento dei pattern di Google, una rete profonda ha battuto un essere umano.
Questa idea di una rete di perceptrons stratificati esiste da tempo; in quest'area, reti profonde imitano il cervello umano. Ma uno svantaggio di questo è che impiegano molto tempo per addestrarsi, un vincolo hardware
Tuttavia, le recenti GPU ad alte prestazioni sono state in grado di addestrare reti così profonde in meno di una settimana; mentre le CPU veloci avrebbero potuto richiedere settimane o forse mesi per fare lo stesso.
Scegliere una rete profonda
Come scegliere una rete profonda? Dobbiamo decidere se stiamo costruendo un classificatore o se stiamo cercando di trovare modelli nei dati e se useremo l'apprendimento non supervisionato. Per estrarre modelli da un insieme di dati senza etichetta, utilizziamo una macchina Boltzman con restrizioni o un codificatore automatico.
Considera i seguenti punti mentre scegli una rete profonda:
Per l'elaborazione del testo, l'analisi del sentiment, l'analisi e il riconoscimento dell'entità del nome, utilizziamo una rete di tensori neurali ricorrenti o ricorsivi o RNTN;
Per qualsiasi modello di linguaggio che opera a livello di carattere, utilizziamo la rete ricorrente.
Per il riconoscimento delle immagini, utilizziamo la rete di credenze profonde DBN o la rete convoluzionale.
Per il riconoscimento degli oggetti, utilizziamo un RNTN o una rete convoluzionale.
Per il riconoscimento vocale, utilizziamo la rete ricorrente.
In generale, reti di credenze profonde e perceptrons multistrato con unità lineari rettificate o RELU sono entrambe buone scelte per la classificazione.
Per l'analisi delle serie temporali, si consiglia sempre di utilizzare la rete ricorrente.
Le reti neurali esistono da più di 50 anni; ma solo ora sono saliti alla ribalta. Il motivo è che sono difficili da addestrare; quando proviamo ad addestrarli con un metodo chiamato propagazione all'indietro, ci imbattiamo in un problema chiamato sfumature di fuga o esplosione. Quando ciò accade, l'addestramento richiede più tempo e la precisione passa in secondo piano. Durante l'addestramento di un set di dati, calcoliamo costantemente la funzione di costo, che è la differenza tra l'output previsto e l'output effettivo da un set di dati di training etichettati.La funzione di costo viene quindi ridotta al minimo regolando i valori di pesi e bias fino al valore più basso è ottenuto. Il processo di formazione utilizza un gradiente, che è la velocità con cui il costo cambierà rispetto alla variazione del peso o dei valori di bias.
Reti Boltzman limitate o codificatori automatici - RBN
Nel 2006 è stata compiuta una svolta nell'affrontare il problema dei gradienti di fuga. Geoff Hinton ha ideato una nuova strategia che ha portato allo sviluppo diRestricted Boltzman Machine - RBM, una rete a due strati poco profonda.
Il primo livello è il file visible strato e il secondo strato è il hiddenstrato. Ogni nodo nel livello visibile è connesso a ogni nodo nel livello nascosto. La rete è nota come limitata in quanto non è consentito a due livelli all'interno dello stesso livello di condividere una connessione.
Gli autoencoder sono reti che codificano i dati di input come vettori. Creano una rappresentazione nascosta o compressa dei dati grezzi. I vettori sono utili nella riduzione della dimensionalità; il vettore comprime i dati grezzi in un numero minore di dimensioni essenziali. Gli autoencoder sono associati ai decoder, che consentono la ricostruzione dei dati di input in base alla loro rappresentazione nascosta.
RBM è l'equivalente matematico di un traduttore bidirezionale. Un passaggio in avanti prende gli input e li traduce in un insieme di numeri che codifica gli input. Un passaggio all'indietro nel frattempo prende questo insieme di numeri e li traduce di nuovo in input ricostruiti. Una rete ben allenata esegue il back prop con un alto grado di precisione.
In entrambi i passaggi, i pesi e i pregiudizi hanno un ruolo critico; aiutano l'RBM a decodificare le interrelazioni tra gli input e a decidere quali input sono essenziali per rilevare i modelli. Attraverso passaggi in avanti e all'indietro, l'RBM viene addestrato a ricostruire l'input con pesi e bias diversi finché l'input e la costruzione non sono il più vicini possibile. Un aspetto interessante di RBM è che i dati non devono essere etichettati. Questo risulta essere molto importante per i set di dati del mondo reale come foto, video, voci e dati dei sensori, che tendono a non essere etichettati. Invece di etichettare manualmente i dati dagli umani, RBM ordina automaticamente i dati; regolando opportunamente pesi e bias, un RBM è in grado di estrarre caratteristiche importanti e ricostruire l'input. RBM fa parte della famiglia di reti neurali estrattori di funzionalità, progettate per riconoscere schemi intrinseci nei dati. Questi sono anche chiamati codificatori automatici perché devono codificare la propria struttura.
Deep Belief Networks - DBN
Le reti di credenze profonde (DBN) si formano combinando gli RBM e introducendo un metodo di allenamento intelligente. Abbiamo un nuovo modello che risolve finalmente il problema del gradiente di fuga. Geoff Hinton ha inventato gli RBM e anche Deep Belief Nets come alternativa alla propagazione posteriore.
Un DBN è simile nella struttura a un MLP (Multi-layer perceptron), ma molto diverso quando si tratta di allenamento. è la formazione che consente ai DBN di superare le loro controparti superficiali
Un DBN può essere visualizzato come una pila di RBM in cui lo strato nascosto di un RBM è il livello visibile dell'RBM sopra di esso. Il primo RBM è addestrato a ricostruire il suo input nel modo più accurato possibile.
Lo strato nascosto del primo RBM viene considerato come lo strato visibile del secondo RBM e il secondo RBM viene addestrato utilizzando gli output del primo RBM. Questo processo viene ripetuto finché non viene addestrato ogni livello della rete.
In un DBN, ogni RBM apprende l'intero input. Un DBN funziona globalmente mettendo a punto l'intero input in successione mentre il modello migliora lentamente come l'obiettivo di una fotocamera che mette a fuoco lentamente un'immagine. Uno stack di RBM supera un singolo RBM poiché un perceptron multistrato MLP supera un singolo perceptron.
In questa fase, gli RBM hanno rilevato schemi intrinseci nei dati ma senza alcun nome o etichetta. Per terminare la formazione del DBN, dobbiamo introdurre le etichette nei modelli e mettere a punto la rete con l'apprendimento supervisionato.
Abbiamo bisogno di un set molto piccolo di campioni etichettati in modo che le caratteristiche e i modelli possano essere associati a un nome. Questo set di dati con piccole etichette viene utilizzato per l'addestramento. Questo set di dati etichettati può essere molto piccolo rispetto al set di dati originale.
I pesi e le distorsioni vengono leggermente modificati, determinando un piccolo cambiamento nella percezione della rete dei modelli e spesso un piccolo aumento della precisione totale.
L'addestramento può anche essere completato in un ragionevole lasso di tempo utilizzando GPU che danno risultati molto accurati rispetto alle reti poco profonde e vediamo anche una soluzione al problema del gradiente di fuga.
Generative Adversarial Networks - GAN
Le reti generative antagoniste sono reti neurali profonde che comprendono due reti, messe l'una contro l'altra, da cui il nome "antagonista".
I GAN sono stati introdotti in un documento pubblicato dai ricercatori dell'Università di Montreal nel 2014. L'esperto di intelligenza artificiale di Facebook Yann LeCun, riferendosi ai GAN, ha definito la formazione antagonista "l'idea più interessante degli ultimi 10 anni nel ML".
Il potenziale dei GAN è enorme, poiché la scansione della rete impara a imitare qualsiasi distribuzione di dati. Ai GAN può essere insegnato a creare mondi paralleli sorprendentemente simili al nostro in qualsiasi dominio: immagini, musica, discorso, prosa. Sono artisti robot in un certo senso e la loro produzione è piuttosto impressionante.
In un GAN, una rete neurale, nota come generatore, genera nuove istanze di dati, mentre l'altra, il discriminatore, le valuta per l'autenticità.
Diciamo che stiamo cercando di generare numeri scritti a mano come quelli trovati nel set di dati MNIST, che è preso dal mondo reale. Il lavoro del discriminatore, quando viene mostrata un'istanza dal vero set di dati MNIST, è riconoscerli come autentici.
Ora considera i seguenti passaggi del GAN:
La rete del generatore riceve l'input sotto forma di numeri casuali e restituisce un'immagine.
Questa immagine generata viene fornita come input alla rete del discriminatore insieme a un flusso di immagini prese dal set di dati effettivo.
Il discriminatore acquisisce sia immagini reali che false e restituisce probabilità, un numero compreso tra 0 e 1, con 1 che rappresenta una previsione di autenticità e 0 che rappresenta un falso.
Quindi hai un doppio ciclo di feedback -
Il discriminatore è in un ciclo di feedback con la verità fondamentale delle immagini, che conosciamo.
Il generatore è in un ciclo di feedback con il discriminatore.
Reti neurali ricorrenti - RNN
RNNReti neurali Sare in cui i dati possono fluire in qualsiasi direzione. Queste reti vengono utilizzate per applicazioni come la modellazione del linguaggio o l'elaborazione del linguaggio naturale (NLP).
Il concetto di base alla base degli RNN è quello di utilizzare informazioni sequenziali. In una normale rete neurale si presume che tutti gli input e gli output siano indipendenti l'uno dall'altro. Se vogliamo prevedere la parola successiva in una frase, dobbiamo sapere quali parole l'hanno preceduta.
Gli RNN sono chiamati ricorrenti poiché ripetono la stessa attività per ogni elemento di una sequenza, con l'output basato sui calcoli precedenti. Si può quindi dire che gli RNN hanno una "memoria" che cattura le informazioni su ciò che è stato calcolato in precedenza. In teoria, gli RNN possono utilizzare le informazioni in sequenze molto lunghe, ma in realtà possono guardare indietro solo a pochi passaggi.
Le reti di memoria a lungo termine (LSTM) sono le RNN più comunemente utilizzate.
Insieme alle reti neurali convoluzionali, gli RNN sono stati utilizzati come parte di un modello per generare descrizioni per immagini senza etichetta. È abbastanza sorprendente come sembra funzionare bene.
Reti neurali profonde convoluzionali - CNN
Se aumentiamo il numero di livelli in una rete neurale per renderla più profonda, aumenta la complessità della rete e ci consente di modellare funzioni più complicate. Tuttavia, il numero di pesi e pregiudizi aumenterà in modo esponenziale. È un dato di fatto, l'apprendimento di problemi così difficili può diventare impossibile per le normali reti neurali. Questo porta a una soluzione, le reti neurali convoluzionali.
Le CNN sono ampiamente utilizzate nella visione artificiale; sono stati applicati anche nella modellazione acustica per il riconoscimento vocale automatico.
L'idea alla base delle reti neurali convoluzionali è l'idea di un "filtro mobile" che passa attraverso l'immagine. Questo filtro mobile, o convoluzione, si applica a un certo vicinato di nodi che ad esempio possono essere pixel, dove il filtro applicato è 0,5 x il valore del nodo -
Il noto ricercatore Yann LeCun ha aperto la strada alle reti neurali convoluzionali. Facebook come software di riconoscimento facciale utilizza queste reti. La CNN è stata la soluzione ideale per i progetti di visione artificiale. Ci sono molti livelli in una rete convoluzionale. Nella sfida Imagenet, una macchina è stata in grado di battere un essere umano al riconoscimento di oggetti nel 2015.
In poche parole, le reti neurali convoluzionali (CNN) sono reti neurali multistrato. I livelli a volte sono fino a 17 o più e presumono che i dati di input siano immagini.
Le CNN riducono drasticamente il numero di parametri che devono essere regolati. Quindi, le CNN gestiscono in modo efficiente l'alta dimensionalità delle immagini grezze.