Qual è la differenza tra una rete neurale e una rete neurale profonda e perché quelle profonde funzionano meglio?


114

Non ho visto la domanda dichiarata proprio in questi termini, ed è per questo che faccio una nuova domanda.

Quello che mi interessa sapere non è la definizione di una rete neurale, ma la comprensione della reale differenza con una rete neurale profonda.

Per più contesto: so cos'è una rete neurale e come funziona la backpropagation. So che un DNN deve avere più livelli nascosti. Tuttavia, 10 anni fa in classe ho imparato che avere diversi livelli o un livello (senza contare i livelli di input e output) era equivalente in termini di funzioni che una rete neurale è in grado di rappresentare (vedere il teorema di approssimazione universale di Cybenko ) e che avere più livelli hanno reso più complessa l'analisi da analizzare senza aumento delle prestazioni. Ovviamente, non è più così.

Suppongo, forse a torto, che le differenze siano in termini di algoritmo di allenamento e proprietà piuttosto che di struttura, e quindi apprezzerei davvero se la risposta potesse sottolineare i motivi che hanno reso possibile il passaggio a DNN (ad esempio prova matematica o giocare casualmente con le reti ?) e desiderabile (ad es. velocità di convergenza?)



Se la funzione che si desidera approssimare è una funzione compositiva (comune nell'elaborazione delle immagini e molti domini naturali a causa della legge della fisica). Si può dimostrare che le reti profonde possono sfruttare questa composizionalità e raggiungere lo stesso livello di errore di approssimazione con un numero esponenzialmente inferiore di neuroni (rispetto a una rete a strato singolo nascosto). Rif: Poggio, Tomaso, et al. "Perché e quando le reti profonde ma non superficiali possono evitare la maledizione della dimensionalità: una revisione." International Journal of Automation and Computing (2017)
DataHungry,

Potresti dare un'occhiata a questo articolo
agcala

Risposte:


152

Partiamo da una banalità: la rete neurale profonda è semplicemente una rete feedforward con molti livelli nascosti.

Questo è più o meno tutto ciò che c'è da dire sulla definizione. Le reti neurali possono essere ricorrenti o feedforward; quelli feedforward non hanno anelli nel loro grafico e possono essere organizzati in strati. Se ci sono "molti" livelli, allora diciamo che la rete è profonda .

Come molti strati ha una rete deve avere per qualificarsi in profondità? Non esiste una risposta definitiva a questo (è un po 'come chiedere a quanti grani formano un mucchio ), ma di solito avere due o più strati nascosti conta in profondità. Al contrario, una rete con un solo strato nascosto viene convenzionalmente chiamata "superficiale". Ho il sospetto che ci sarà un po 'di inflazione in corso qui, e tra dieci anni la gente potrebbe pensare che qualsiasi cosa con meno di, diciamo, dieci strati sia superficiale e adatta solo per gli esercizi dell'asilo. Informalmente, "in profondità" suggerisce che la rete è difficile da gestire.

Ecco un'illustrazione, adattata da qui :

Rete neurale profonda vs non profonda

Ma la vera domanda che stai ponendo è, ovviamente, perché avere molti livelli sarebbe utile?

Penso che la risposta alquanto sorprendente sia che nessuno lo sa davvero. Ci sono alcune spiegazioni comuni che rivedrò brevemente di seguito, ma nessuna di esse è stata dimostrata in modo convincente come vera, e non si può nemmeno essere sicuri che avere molti livelli sia davvero vantaggioso.

Dico che questo è sorprendente, perché il deep learning è molto popolare, sta rompendo tutti i record (dal riconoscimento delle immagini, alla riproduzione di Go, alla traduzione automatica, ecc.) Ogni anno, viene utilizzato dall'industria, ecc. Ecc. E non siamo ancora del tutto sicuri del perché funzioni così bene.

Baso la mia discussione sul libro Deep Learning di Goodfellow, Bengio e Courville, uscito nel 2017 ed è ampiamente considerato il libro sul deep learning. (È disponibile gratuitamente online.) La sezione pertinente è 6.4.1 Proprietà e profondità di approssimazione universale .

L'hai scritto tu

10 anni fa in classe ho imparato che avere diversi livelli o uno strato (senza contare i livelli di input e output) era equivalente in termini di funzioni che una rete neurale è in grado di rappresentare [...]

Devi riferirti al cosiddetto teorema di approssimazione universale , dimostrato da Cybenko nel 1989 e generalizzato da varie persone negli anni '90. Sostanzialmente dice che una rete neurale superficiale (con 1 strato nascosto) può approssimare qualsiasi funzione, cioè in linea di principio può imparare qualsiasi cosa . Questo è vero per varie funzioni di attivazione non lineari, comprese le unità lineari rettificate che la maggior parte delle reti neurali sta utilizzando oggi (il manuale fa riferimento a Leshno et al. 1993 per questo risultato).

Se è così, allora perché tutti usano reti profonde?

Bene, una risposta ingenua è che perché funzionano meglio. Ecco una figura del libro di Deep Learning che mostra che aiuta ad avere più livelli in un compito particolare, ma lo stesso fenomeno è spesso osservato in vari compiti e domini:

Più strati sono buoni

Sappiamo che una rete poco profonda potrebbe funzionare bene come quella più profonda. Ma non lo fa; e di solito no. La domanda è --- perché? Possibili risposte:

  1. Forse una rete superficiale avrebbe bisogno di più neuroni di quella profonda?
  2. Forse una rete poco profonda è più difficile da addestrare con i nostri attuali algoritmi (ad esempio ha minimi locali più cattivi, o il tasso di convergenza è più lento, o altro)?
  3. Forse un'architettura superficiale non si adatta al tipo di problemi che di solito stiamo cercando di risolvere (ad esempio il riconoscimento degli oggetti è un processo gerarchico "profondo" per antonomasia)?
  4. Qualcos'altro?

Il libro Deep Learning sostiene i punti elenco n. 1 e n. 3. In primo luogo, sostiene che il numero di unità in una rete superficiale cresce esponenzialmente con la complessità delle attività. Quindi, per essere utile, una rete poco profonda potrebbe essere molto grande; forse molto più grande di una rete profonda. Questo si basa su una serie di articoli che dimostrano che le reti superficiali in alcuni casi avrebbero bisogno esponenzialmente di molti neuroni; ma se per esempio la classificazione MNIST o il Go play siano simili non è chiaro. Secondo, il libro dice questo:

La scelta di un modello profondo codifica una convinzione molto generale che la funzione che vogliamo imparare dovrebbe comportare la composizione di diverse funzioni più semplici. Questo può essere interpretato da un punto di vista dell'apprendimento della rappresentazione come dicendo che crediamo che il problema di apprendimento consista nello scoprire un insieme di fattori di variazione sottostanti che a loro volta possono essere descritti in termini di altri, più semplici fattori di variazione sottostanti.

Penso che l'attuale "consenso" sia che si tratta di una combinazione di punti elenco n. 1 e n. 3: per compiti del mondo reale l'architettura profonda è spesso vantaggiosa e l'architettura superficiale sarebbe inefficiente e richiederebbe molti più neuroni per le stesse prestazioni.

Ma è tutt'altro che provato. Consideriamo ad esempio Zagoruyko e Komodakis, 2016, Wide Residual Networks . Le reti residue con oltre 150 livelli sono apparse nel 2015 e hanno vinto vari concorsi di riconoscimento delle immagini. Fu un grande successo e sembrò un argomento convincente a favore della profondità; ecco una figura di una presentazione del primo autore sul documento di rete residuo (nota che qui il tempo va confuso a sinistra):

reti residue profonde

Ma la carta collegata sopra mostra che una rete residua "ampia" con "solo" 16 strati può superare quella "profonda" con oltre 150 strati. Se questo è vero, l'intero punto della figura sopra si rompe.

O considera Ba e Caruana, 2014, Le reti profonde hanno davvero bisogno di essere profonde? :

In questo documento forniamo prove empiriche che le reti poco profonde sono in grado di apprendere la stessa funzione delle reti profonde e in alcuni casi con lo stesso numero di parametri delle reti profonde. Facciamo questo addestrando prima un modello profondo all'avanguardia, quindi allenando un modello superficiale per imitare il modello profondo. Il modello mimic viene addestrato utilizzando lo schema di compressione del modello descritto nella sezione successiva. Sorprendentemente, con la compressione del modello siamo in grado di addestrare reti poco profonde per essere precisi come alcuni modelli profondi, anche se non siamo in grado di addestrare queste reti poco profonde per essere accurate come le reti profonde quando le reti poco profonde sono addestrate direttamente sull'originale dati di allenamento etichettati. Se una rete superficiale con lo stesso numero di parametri di una rete profonda può imparare a imitare una rete profonda con alta fedeltà,

Se fosse vero, ciò significherebbe che la spiegazione corretta è piuttosto il mio proiettile # 2 e non # 1 o # 3.

Come ho detto --- nessuno lo sa ancora per davvero.


Osservazioni conclusive

La quantità di progressi compiuti nel processo di apprendimento profondo negli ultimi ~ 10 anni è veramente sorprendente, ma la maggior parte di questo progresso è stato raggiunto per tentativi ed errori, e ci manca ancora la comprensione molto di base su cosa esattamente rende reti profonde di lavorare così bene. Anche l'elenco delle cose che le persone considerano cruciali per creare una rete profonda efficace sembra cambiare ogni due anni.

La rinascita del deep learning è iniziata nel 2006 quando Geoffrey Hinton (che ha lavorato su reti neurali per oltre 20 anni senza molto interesse da parte di nessuno) ha pubblicato un paio di articoli rivoluzionari che offrono un modo efficace per addestrare reti profonde ( Science paper , Neural computing paper ) . Il trucco era usare il pre-allenamento senza supervisione prima di iniziare la discesa gradiente. Questi documenti hanno rivoluzionato il campo e per un paio d'anni la gente ha pensato che la pre-formazione senza supervisione fosse la chiave.

Quindi, nel 2010 Martens ha dimostrato che le reti neuronali profonde possono essere addestrate con metodi di secondo ordine (i cosiddetti metodi privi di iuta) e possono superare le prestazioni delle reti addestrate con pre-addestramento: apprendimento profondo tramite ottimizzazione priva di iuta . Quindi nel 2013 Sutskever et al. ha dimostrato che la discesa graduale stocastica con alcuni accorgimenti molto intelligenti può superare i metodi privi di iuta: sull'importanza dell'inizializzazione e della quantità di moto nell'apprendimento profondo . Inoltre, intorno al 2010 le persone hanno capito che l'uso di unità lineari rettificate anziché unità sigmoidi fa una grande differenza per la discesa del gradiente. L'abbandono è apparso nel 2014. Le reti residue sono apparse nel 2015. Le persone continuano a trovare modi sempre più efficaci per addestrare reti profonde equella che sembrava un'intuizione chiave 10 anni fa è spesso considerata un fastidio oggi. Tutto ciò è in gran parte guidato da tentativi ed errori e c'è poca comprensione di ciò che fa funzionare alcune cose così bene e altre no. L'allenamento di reti profonde è come una grande borsa di trucchi. I trucchi di successo sono generalmente razionalizzati post factum.

Non sappiamo nemmeno perché le reti profonde raggiungano un plateau delle prestazioni; solo 10 anni la gente era solita incolpare i minimi locali, ma il pensiero attuale è che non è questo il punto (quando gli altipiani di prestazione, i gradienti tendono a rimanere grandi). Questa è una domanda così di base su reti profonde, e non so nemmeno questo .

Aggiornamento: questo è più o meno l'argomento del discorso NIPS 2017 di Ali Rahimi sull'apprendimento automatico come alchimia: https://www.youtube.com/watch?v=Qi1Yry33TQE .


[Questa risposta è stata interamente riscritta ad aprile 2017, quindi alcuni dei commenti di seguito non si applicano più.]


2
Bella risposta! 1) Come menzionato anche da @Nicolas, risulta che esiste un teorema ( en.wikipedia.org/wiki/Universal_approximation_theorem ) che afferma che una rete neurale feed-forward con un singolo strato nascosto e un numero finito di neuroni può approssimarsi qualsiasi funzione continua (incluso un DNN) sull'ipercubo dell'unità. Si afferma che questo risultato è indipendente dalla scelta della funzione di attivazione. 2) Non sono sicuro se la tua ultima osservazione (ovvero che Hinton si è unito a Google) sia pertinente per il recente successo dei DNN; Hinton si è unito a Google molto tempo dopo che i DNN sono diventati epidemia!
Sobi,

4
Forse stiamo usando la terminologia in modo diverso. I perceptron non hanno un livello nascosto: il loro input sono dati, il loro output è la classificazione. Una rete multistrato è costituita da un gruppo di percetroni collegati insieme in modo tale che l'output dal livello formi l'input al livello . Una rete con un singolo livello nascosto ha quindi tre livelli (input, nascosto, output). Questo livello nascosto è la chiave per l'approssimazione universale: i percettroni, che mancano, non possono calcolare cose come XOR, ma le reti multistrato possono farlo. nn1n
Matt Krause,

2
La cosa della linearità sembra una combinazione di due problemi. Perceptrons può calcolare solo limiti di decisione lineari - può solo tracciare linee rette per dividere due classi. Le reti multistrato possono "tracciare" confini più complicati. Ma né i percettroni né le reti multistrato utilizzano funzioni di attivazione lineari, tranne nel livello di output di una rete multistrato. La funzione di attivazione perceptron è un heaviside (1 se x> 0, 0 altrimenti); le reti multistrato usano spesso sigmoidi, ma i vincoli per ca. sono piuttosto lievi: non costanti, limitati e in aumento monotono.
Matt Krause,

2
@amoeba ottima risposta, la foto all'inizio mi ha scoraggiato a leggere il resto, ma è stato per il meglio. Il perceptron è la controparte della regressione lineare per la classificazione, motivo per cui quando le persone usano la soluzione a forma chiusa (pseudoinverso) per risolvere il problema anziché i metodi online (sgd), si chiama Regressione logistica, a causa della logistica (funzione sigmoide) = perceptron. Una regressione perceptron / logistica può solo 'tracciare' confini di decisione lineari ed è per questo che si chiama lineare.
shuriken x blue

2
Tuttavia, il percettrone multistrato (quello che hai disegnato nella tua prima immagine a sinistra) può combinare più di tali limiti di decisione lineari e può quindi dividere lo spazio per risolvere il problema XOR (non lineare) come menzionato da @Matt. Quindi, molti limiti di decisione lineari combinati possono fare un cerchio, ad esempio, se strizzi gli occhi. Dipende da come ci pensi: la decisione è ancora lineare in uno spazio più elevato, se hai familiarità con i kernel, è un po 'la stessa cosa.
shuriken x blue

8

Buona risposta finora, anche se ci sono un paio di cose che nessuno ha menzionato qui, ecco i miei 0,02 $

Ti risponderò solo sotto forma di una storia, dovrebbe rendere le cose più divertenti e chiare. No tldr qui. Nel processo dovresti essere in grado di capire qual è la differenza.

Ci sono molte ragioni per cui i DNN sono emersi quando lo hanno fatto (le stelle dovevano allinearsi, come tutte le cose simili, è solo la questione del posto giusto, del momento giusto ecc.).

Uno dei motivi è la disponibilità di dati, molti dati (dati etichettati). Se vuoi essere in grado di generalizzare e apprendere qualcosa come "priori generici" o "priori universali" (ovvero i mattoni di base che possono essere riutilizzati tra compiti / applicazioni), hai bisogno di molti dati. E dati selvaggi, potrei aggiungere, set di dati non sterili accuratamente registrati in laboratorio con illuminazione controllata e tutto il resto. Mechanical Turk ha reso possibile questo (etichettatura).

In secondo luogo, la possibilità di addestrare reti più grandi più velocemente utilizzando GPU ha reso la sperimentazione più veloce. Le unità ReLU hanno reso le cose anche più veloci dal punto di vista computazionale e hanno fornito la loro regolarizzazione poiché era necessario utilizzare più unità in un livello per essere in grado di comprimere le stesse informazioni poiché i livelli ora erano più radi, quindi è andato bene anche con l'abbandono. Inoltre, hanno aiutato con un problema importante che si verifica quando si impilano più livelli. Ne parleremo più avanti. Vari trucchi multipli che hanno migliorato le prestazioni. Come usare mini-batch (che in effetti è dannoso per l'errore finale) o convoluzioni (che in realtà non catturano la stessa varianza dei campi ricettivi locali) ma sono più veloci dal punto di vista computazionale.

Nel frattempo le persone discutevano se gli piacevano più magre o più cicciottelle, più piccole o più alte, con o senza lentiggini, ecc. L'ottimizzazione era come se frizzasse o facesse il botto quindi la ricerca si stava spostando verso metodi più complessi di allenamento come il gradiente coniugato e il metodo Newton, finalmente si sono resi conto che non c'è pranzo libero. Le reti stavano esplodendo.

Ciò che ha rallentato le cose è stato il problema del gradiente evanescente . La gente andava come: whoa, è molto fuori, amico! In breve, significa che era difficile regolare l'errore su livelli più vicini agli input. Man mano che aggiungi altri strati sulla torta, diventa troppo traballante. Non è stato possibile propagare indietro errori significativi ai primi livelli. Più strati, peggio è successo. Bummer.

Alcune persone hanno capito che l'uso dell'entropia incrociata come funzione di perdita (beh, ancora una volta, classificazione e riconoscimento delle immagini) fornisce una sorta di regolarizzazione e aiuta a evitare che la rete si satura e, a sua volta, il gradiente non è riuscito a nascondere così bene.

Ciò che ha anche reso possibili le cose è stata la pre-formazione per strato utilizzando metodi non controllati. Fondamentalmente, prendi un sacco di auto-codificatori e apprendi rappresentazioni sempre meno astratte mentre aumenti il ​​rapporto di compressione. I pesi di queste reti sono stati utilizzati per inizializzare la versione supervisionata. Ciò ha risolto il problema del gradiente di sparizione in un altro modo: stai già iniziando l'allenamento supervisionato da una posizione di partenza molto migliore. Quindi tutte le altre reti si sono alzate e hanno iniziato a ribellarsi. Ma le reti necessitavano comunque di supervisione, altrimenti era impossibile mantenere fermi i big data.

Ora, per l'ultima parte che alla fine porta in qualche modo alla tua risposta, che è troppo complessa per dirla in poche parole: perché più livelli e non solo uno. Perchè noi possiamo! e perché descrittori di caratteristiche contestuali e invarianti. e piscine.

Ecco un esempio: hai un set di dati di immagini, come hai intenzione di addestrare un piano NN usando quei dati? Bene, ingenuamente, prendiamo per esempio ogni riga e la concatenate in un vettore lungo e questo è il vostro input. Cosa impari? Bene, alcune sfocate funzioni senza senso che potrebbero non assomigliare a nulla, a causa dei molti molti tipi di varianze che gli oggetti nell'immagine contengono e non sei in grado di distinguere tra cose rilevanti e irrilevanti. E a un certo punto la rete deve dimenticare di essere in grado di ri-imparare nuove cose. Quindi c'è il problema di capacità. Questa è una dinamica più non lineare, ma l'intuizione è che è necessario aumentare il numero di neuroni per poter includere più informazioni nella propria rete.

Quindi il punto è che se inserisci l'immagine come un unico pezzo, l'aggiunta di livelli extra non fa molto per te poiché non sei in grado di imparare le astrazioni , il che è molto importante. Fare le cose in modo olistico quindi non funziona così bene, a meno che tu non stia facendo cose più semplici con la rete come concentrarti su un tipo specifico di oggetto, quindi ti limiti a una classe e scegli alcune proprietà globali come obiettivo di classificazione.

Quindi cosa c'è da fare? Guarda il bordo dello schermo e prova a leggere questo testo. Problema? Per quanto sembri stupido, devi guardare quello che stai leggendo. Altrimenti è troppo sfocato / non c'è abbastanza risoluzione / granularità. Chiamiamo l'area di messa a fuoco il campo ricettivo. Anche le reti devono essere in grado di concentrarsi. Fondamentalmente invece di utilizzare l'intera immagine come input, si sposta una finestra scorrevole lungo l'immagine e quindi la si utilizza come input per la rete (un po 'meno stocastica di ciò che fanno gli umani). Ora hai anche la possibilità di catturare le correlazioni tra i pixel e quindi gli oggetti e puoi anche distinguere tra un gatto assonnato seduto su un divano e un bungee jumping a testa in giù. Pulito, ripristinata la fede nell'umanità. La rete può apprendere astrazioni locali in un'immagine su più livelli. La rete apprende i filtri,

Quindi, per riassumere: campi / convoluzioni ricettivi, inizializzazione senza supervisione, unità lineari rettificate, dropout o altri metodi di regolarizzazione. Se sei molto serio su questo, ti consiglio di dare un'occhiata al Deep Learning in Neural Networks di Schmidhuber : una panoramica ecco l'URL per la prestampa http://arxiv.org/abs/1404.7828

E ricorda: grande apprendimento, dati approfonditi. Parola.


Ciao Florin, grazie per la bella risposta! Mi piace lo stile di scrittura. Quando parli di finestre scorrevoli, ti riferisci a come strati convoluzionali di NN convoluzionale osservano parti diverse di un'immagine e proiettano le loro attivazioni su uno spazio di dimensione inferiore?
Nicolas,

praticamente sì, le convoluzioni non sono necessarie, ma sono più veloci dal punto di vista computazionale, poiché i pesi sono limitati. dai un'occhiata a questo documento dove non usano le convoluzioni e usano i campi ricettivi locali. le parole chiave importanti sono locali / gerarchiche: arxiv.org/pdf/1112.6209.pdf
shuriken x blue

penso anche che la risposta sistematica più vicina sia quella di Sobi. ha il mio voto. ho appena aggiunto alcune altre cose qua e là con un po 'di sale e pepe.
shuriken x blue,

6

In parole povere, la differenza principale con le reti neurali classiche è che hanno livelli molto più nascosti.

L'idea è di aggiungere etichette ai livelli per creare diversi livelli di astrazione:

Ad esempio, una rete neurale profonda per il riconoscimento di oggetti :

  • Livello 1: pixel singoli
  • Livello 2: bordi
  • Livello 3: forme (cerchi, quadrati)
  • Livello n: intero oggetto

Puoi trovare una buona spiegazione a questa domanda in Quora .

E, se sei interessato a questo argomento, ti consiglio di dare un'occhiata a questo libro .


1
Grazie David, ma non vedo davvero come aggiungere etichette per renderlo diverso. Ricordo anche che era un problema difficile comprendere e decomporre il modo in cui una funzione era codificata dalla rete neurale. Deve esserci qualcos'altro oltre ad avere più livelli. Per quanto riguarda l'esempio che hai dato, credo che tu possa formare reti neurali individualmente (vecchia scuola) per svolgere ciascuna delle attività.
Nicolas,

La potenza arriva quando la usi come una pipeline, quindi gli input e gli output del layer si accumulano su ogni layer.
David Gasquez,

Ho letto il tuo primo link, che è una buona risorsa, e altre domande correlate su quora e se, tuttavia l'esempio che hai dato non sembra accurato con quello che ho letto. Proverò a rispondere alla mia domanda, riassumendo le letture di queste tesi.
Nicolas,

2
Nonostante la risorsa indicata sia interessante, la risposta attualmente non risponde alla domanda.
Nicolas,

Puoi indicare un esempio in cui i livelli sono etichettati (tranne che in modo puramente descrittivo)? È certamente vero che i livelli nascosti sembrano funzioni successivamente più complesse in ogni livello nascosto, ma "l'aggiunta di etichette" sembra implicare che siano stati appositamente formati per farlo.
Matt Krause,

2

Sono stato anche un po 'confuso all'inizio dalla differenza tra reti neurali (NN) e reti neurali profonde (DNN), tuttavia la "profondità" si riferisce solo al numero di parametri e livelli, sfortunatamente. Puoi prenderlo come una sorta di re-branding sotto la cosiddetta "mafia canadese".

Diversi anni fa, avevo anche Neural Networks come parte di una classe e facevamo il riconoscimento delle cifre, l'approssimazione delle onde e applicazioni simili usando NN, che aveva più livelli e output nascosti e tutto quel jazz che i DNN hanno. Tuttavia, ciò che non avevamo era la potenza di calcolo.

Il motivo che ha reso possibile e desiderabile il passaggio a DNN sono i progressi nello sviluppo dell'hardware. In poche parole, ora possiamo calcolare di più, più veloce e più parallelizzato (DNN su GPU), mentre prima il tempo era il collo di bottiglia per NN.

Come indicato nella pagina di Wikipedia per Deep Learning , la parte "profonda" si riferisce principalmente al fatto che le funzionalità interagiscono in modo non lineare su più livelli, eseguendo quindi l'estrazione e la trasformazione delle funzionalità. Ciò è stato fatto anche nelle NN standard, tuttavia su scala ridotta.

Nella stessa pagina, qui hai la definizione "Una rete neurale profonda (DNN) è una rete neurale artificiale (ANN) con più strati nascosti di unità tra i livelli di input e output".


Ciao Mttk, grazie per la tua risposta, ha gettato più luce su questa domanda. Per quanto riguarda il tuo ultimo punto, sì strutturalmente è molto facile spiegare la differenza (1 vs più livelli), ma la differenza nel modo in cui vengono utilizzati questi livelli multipli sembra essere ciò che conta e molto meno chiaro. Questo è il motivo per cui ho concentrato la domanda non sulla struttura.
Nicolas,

Onestamente, non sono d'accordo con l'ultima definizione a cui ho fatto riferimento - dal momento che ANN / NN con un livello nascosto non sono davvero efficienti e ne avevi bisogno multipli per qualsiasi tipo di previsione più complessa (lo sto dicendo perché penso che DNN fosse un parola d'ordine inutile aggiunta a un termine già buono, NN). Penso che tu possa usare NN e DNN in modo intercambiabile (perché al giorno d'oggi nessuno usa NN a strato nascosto), mentre l'uso dei livelli differisce tra i tipi di DNN (CNN, RBM, RNN, LSTM, CW-RNN, ...) e non l'idea del DNN stesso.
mttk,

2

Per quanto ne so, quella che oggi si chiama Deep Neural Network (DNN) non ha nulla di fondamentalmente o filosoficamente diverso dalla vecchia rete Neural standard (NN). Sebbene, in teoria, si possa approssimare un NN arbitrario usando un NN poco profondo con un solo strato nascosto, ciò tuttavia non significa che le due reti funzioneranno in modo simile quando addestrate usando lo stesso algoritmo e dati di addestramento. In effetti c'è un crescente interesse nella formazione di reti poco profonde che funzionano in modo simile alle reti profonde. Il modo in cui ciò viene fatto, tuttavia, è innanzitutto addestrando una rete profonda e quindi addestrando la rete superficiale a imitarel'output finale (ovvero l'output del penultimo strato) della rete profonda. Vedi, ciò che rende favorevoli le architetture profonde è che le tecniche di allenamento di oggi (propagazione della schiena) funzionano meglio quando i neuroni sono disposti in una struttura gerarchica.

Un'altra domanda che può essere posta è: perché le reti neurali (in particolare i DNN) sono diventate così improvvisamente popolari. Per quanto ne so, gli ingredienti magici che hanno recentemente reso così famosi i DNN sono i seguenti:

A. Set di dati e capacità di elaborazione dei dati migliorati

1. Sono diventati disponibili set di dati su larga scala con milioni di immagini diverse

2. La rapida implementazione della GPU è stata resa disponibile al pubblico

B. Algoritmi di formazione e architetture di rete migliorati

1. Unità lineari rettificate (ReLU) invece di sigmoid o tanh

2. Le architetture di rete profonde si sono evolute nel corso degli anni


A-1) Fino a poco tempo fa, almeno in Computer Vision, non potevamo formare modelli su milioni di immagini etichettate; semplicemente perché non esistevano set di dati con etichetta di quella dimensione. Si scopre che, oltre al numero di immagini, la granularità del set di etichette è anche un fattore cruciale per il successo dei DNN (vedere la Figura 8 in questo documento , di Azizpour et al.).

A-2) Sono stati fatti molti sforzi ingegneristici per rendere possibile la formazione di DNN che funzionano bene nella pratica, in particolare l'avvento delle implementazioni della GPU. Una delle prime implementazioni GPU di successo di DNN, gira su due GPU parallele; tuttavia, ci vuole circa una settimana per addestrare un DNN su 1,2 milioni di immagini di 1000 categorie usando GPU di fascia alta (vedi questo articolo, di Krizhevsky et al.).

B-1) L'uso di semplici unità lineari rettificate (ReLU) invece delle funzioni sigmoide e tanh è probabilmente il più grande blocco per rendere possibile l'addestramento dei DNN. Si noti che entrambe le funzioni sigmoide e tanh hanno un gradiente quasi zero quasi ovunque, a seconda della velocità con cui passano dal livello di attivazione basso a quello alto; nel caso estremo, quando la transizione è improvvisa, otteniamo una funzione di passo che ha pendenza zero ovunque tranne che in un punto in cui avviene la transizione.

B-2) La storia di come le architetture di reti neurali si sono sviluppate nel corso degli anni mi ricorda come l'evoluzione cambia la struttura di un organismo in natura. La condivisione dei parametri (ad es. In strati convoluzionali), la regolarizzazione del dropout, l'inizializzazione, la pianificazione del tasso di apprendimento, il pooling spaziale, il sottocampionamento negli strati più profondi e molti altri trucchi che ora sono considerati standard nell'allenamento dei DNN sono stati sviluppati, evoluti, e personalizzati su anni per rendere possibile la formazione delle reti profonde così com'è oggi.


3
+1. La prima risposta in questa discussione che fornisce una risposta adeguata alle domande del PO. Molti buoni punti qui. Il mio unico grande commento sarebbe che oltre a A e B, c'è anche C: enorme aumento delle dimensioni dei set di dati di allenamento disponibili. Questo sembra essere importante almeno quanto A e B.
amoeba,

1
Non credo che relu sia così importante: il documento di Alex Krizhevsky ha affermato che ha reso nn l'apprendimento fino a 6 volte più veloce. La maggior parte delle altre modifiche alla struttura di rete menzionate si riferiscono a nns convoluzionali, che copiano solo pipeline di elaborazione di immagini standard (cosa buona, ma nessuna nuova intuizione)
seanv507,

1
@amoeba: la dimensione del set di dati è sotto A. Ho aggiornato il testo per evidenziarlo.
Sobi,

@ seanv507: anzi, avevo in mente reti convoluzionali (ConvNets) quando scrivevo la risposta. Se ci sono altri fattori importanti (non correlati a ConvNets) che mi sono perso, lo apprezzerei se li menzionassi. Sarei felice di aggiornare la mia risposta di conseguenza. Per quanto riguarda le ReLU, l'addestramento di nns con tanh e sigmoid è considerevolmente più difficile che con le ReLU a causa del problema dei gradienti di fuga: le unità si saturano facilmente e, una volta che ciò accade, impiegano molto tempo a diventare nuovamente insature (i gradienti sono molto piccoli quando l'unità è saturo)
Sobi il

2

La differenza tra un NN "Deep" e un NN standard è puramente qualitativa: non esiste una definizione di cosa significhi "Deep". "Profondo" può significare qualsiasi cosa, dalle architetture estremamente sofisticate utilizzate da Google, Facebook e altre che hanno 50-80 o anche più strati, fino a 2 architetture nascoste (4 strati in totale). Non sarei sorpreso se potessi anche trovare articoli che affermano di fare l'apprendimento profondo con un singolo livello nascosto, perché "profondo" non significa molto.

"Rete neurale" è anche una parola che non ha un significato molto preciso. Copre un insieme estremamente ampio di modelli, dalle macchine boltzman casuali (che sono grafici non indirizzati) alle architetture feedforward con varie funzioni di attivazione. La maggior parte delle NN verrà addestrata usando il backprop, ma non è così, quindi anche gli algoritmi di training non sono molto omogenei.

Nel complesso, l'apprendimento profondo, le NN profonde e le NN sono diventate tutte parole onnicomprensive che catturano una moltitudine di approcci.

Per buoni riferimenti introduttivi a "cosa è cambiato": Deep Learning of Representations: Looking Forward , Bengio, 2013 è una buona recensione + prospettiva per il futuro. Vedi anche Le reti profonde devono davvero essere profonde? Ba & Caruana, 2013 che illustrano che essere profondi potrebbe non essere utile per la rappresentazione ma per l'apprendimento.


I riferimenti che dai sono molto utili, ma il resto della risposta nella forma attuale (che dice "NN non significa nulla, DNN non significa nulla, NN e DNN possono fare molte cose") non molto, pensi di rivederlo?
Nicolas

1

Per espandere la risposta di David Gasquez, una delle principali differenze tra reti neurali profonde e reti neurali tradizionali è che non utilizziamo solo la backpropagation per reti neurali profonde.

Perché? Poiché la backpropagation forma i livelli successivi in ​​modo più efficiente rispetto ai livelli precedenti, man mano che si passa prima e prima nella rete, gli errori diventano più piccoli e più diffusi. Quindi una rete a dieci strati sarà fondamentalmente composta da sette strati di pesi casuali seguiti da tre strati di pesi montati e farà altrettanto come una rete a tre strati. Vedi qui per di più.

Quindi la svolta concettuale sta trattando i problemi separati (i livelli etichettati) come problemi separati: se prima proviamo a risolvere il problema della costruzione di un primo livello genericamente buono, quindi cerchiamo di risolvere il problema della costruzione di un secondo livello genericamente buono, alla fine avremo uno spazio di funzionalità profondo in cui possiamo alimentare il nostro problema reale.


1

NN:

  • un livello nascosto è sufficiente ma può avere più livelli, ordine da sinistra a destra (modello: feed forward NN)
  • addestrato solo in modo supervisionato (backpropagation)
  • quando vengono utilizzati più livelli, addestrare tutti i livelli contemporaneamente (stesso algoritmo: backpropagation), più livelli rendono difficile l'utilizzo poiché gli errori diventano troppo piccoli
  • difficile capire cosa si impara ad ogni livello

DNN:

  • sono necessari più strati, bordi non orientati (modello: macchina boltzman limitata)
  • prima addestrato in modo non supervisionato, in cui le reti apprendono le funzionalità rilevanti imparando a riprodurre i suoi input, quindi addestrate in modo supervisionato che multa le funzionalità per classificarle
  • addestrare i livelli uno a uno dal livello di input a quello di output (algoritmo: divergenza di contrasto)
  • ogni strato contiene chiaramente caratteristiche di crescente astrazione

Il passaggio a DNN è dovuto a tre scoperte indipendenti avvenute nel 2006.

Per quanto riguarda i teoremi su NN, quello a cui allude la domanda è:

  • teorema di approssimazione universale o teorema di Cybenko: una rete neurale feed-forward con un singolo strato nascosto può approssimare qualsiasi funzione continua. Tuttavia, in pratica, potrebbero essere necessari molti più neuroni se si utilizza un singolo strato nascosto.

2
-1? Veramente? Ho letto tutto questo in letteratura e ho fatto un confronto punto per punto di entrambi gli approcci! Per favore, indica almeno ciò che non è corretto ...
Nicolas,

3
Non ho votato a fondo (forse a un downvoter non è piaciuto il fatto che tu risponda alla tua domanda? Ciò che elenchi come proprietà di DNN: che i bordi non sono indirizzati, che prima viene addestrato in modo non supervisionato, che i livelli vengono addestrati uno per uno - tutto ciò si riferisce solo alle reti di credenze profonde suggerite da Hinton nel 2006. Questo non è necessariamente vero per le reti neurali profonde in generale e in effetti ora ci sono molti modi per addestrare una rete profonda senza tutto ciò. Vedi la mia risposta
amoeba,

1

O(n)

Penso che dovresti fare un passo indietro e vedere che questo ha creato una rinascita nell'intelligenza artificiale superficiale, ad esempio un sacco di parole per l'analisi del sentimento e altre applicazioni linguistiche e un bagaglio visivo di parole stava conducendo un approccio al riconoscimento delle immagini prima di DNN. Nessuno dice che sacco di parole sia un vero modello di linguaggio, ma è una soluzione ingegneristica efficace. Quindi direi che i DNN sono una "borsa visiva di parole" migliore - vedi ad esempio Szegedy et al. 2013 Proprietà intriganti delle reti neurali e Nguyen et al. Le reti neurali profonde sono facilmente imbrogliate: previsioni di elevata fiducia per immagini irriconoscibili in cui è chiaro che non ci sono strutture di ordine superiore ecc. (O qualsiasi cosa venga richiesta per DNN).


@amoeba quest'altro documento è quasi un documento complementare al primo (di nuovo con molte immagini!)
seanv507,

0

Il Deep Learning è un insieme di algoritmi di machine learning che tentano di modellare astrazioni di alto livello nei dati utilizzando architetture composte da più trasformazioni non lineari .

Fonte: Arno Candel

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.