Qual è la differenza tra una rete neurale e una rete neurale profonda e perché quelle profonde funzionano meglio?
Su Dicembre 22, 2020 da adminNon ho visto la domanda formulata esattamente in questi termini, ed è per questo che faccio una nuova domanda.
Quello che mi interessa sapere non è la definizione di una rete neurale, ma capire leffettiva 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 più livelli o un livello (non contando i livelli di input e output) era equivalente in termini di funzioni che una rete neurale è in grado di rappresentare (vedi Cybenko “s Teorema di approssimazione universale ), e che ha più livelli lo rendevano più complesso da analizzare senza aumentare le prestazioni. Ovviamente, non è più così.
Suppongo, forse a torto, che le differenze siano in termini di algoritmo di addestramento e proprietà piuttosto che di struttura, e quindi Apprezzerei molto se la risposta potesse sottolineare i motivi che hanno reso possibile il passaggio a DNN (es. Prova matematica o gioco casuale con le reti?) e desiderabile (ad es. velocità di convergenza?)
Commenti
- FYI: Quanto è vera questa diapositiva sul deep learning?
- Se la funzione che desideri approssimare è una funzione di composizione (comune nellelaborazione delle immagini e in molti domini naturali dovuti alla 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 di neuroni esponenzialmente inferiore (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 recensione. ” International Journal of Automation and Computing (2017)
- Potresti dare unocchiata a questo articolo
- Vedi 6.4 di arxiv.org/pdf/2004.06093.pdf
Risposta
Cominciamo con una banalità: la rete neurale profonda è semplicemente una rete feedforward con molti livelli nascosti.
Questo è più o meno tutto quello che cè da dire sulla definizione. Le reti neurali possono essere ricorrenti o feedforward; quelle feedforward non hanno loop nel loro grafico e possono essere organizzate in livelli. Se ci sono “molti” livelli , quindi diciamo che la rete è profonda .
Quanti molti livelli deve avere una rete per qualificarsi come profonda? risposta definitiva a questo (è “sa un po come chiedere quanti grani formano un mucchio ), ma di solito avere due o più strati nascosti conta come profondo. Al contrario, una rete con un solo livello nascosto è convenzionalmente chiamata “superficiale”. Ho il sospetto che ci sarà un po di inflazione qui, e tra dieci anni la gente potrebbe pensare che qualsiasi cosa con meno, diciamo, dieci strati sia superficiale e adatta solo per gli esercizi dellasilo. Informalmente, “deep” suggerisce che la rete è difficile da gestire.
Ecco unillustrazione, adattata da qui :
Ma la vera domanda che ti stai ponendo è, ovviamente, perché avere molti livelli sarebbe vantaggioso?
Penso che il risposta un po sorprendente è che nessuno lo sa davvero. Ci sono alcune spiegazioni comuni che esaminerò brevemente di seguito, ma nessuna di esse è stata dimostrata in modo convincente e non si può nemmeno essere sicuri che avere molti livelli sia davvero vantaggioso.
Dico che questo è sorprendente, perché il deep learning è estremamente popolare, sta battendo tutti i record (dal riconoscimento delle immagini, alla riproduzione di Go, alla traduzione automatica, ecc.) Ogni anno, viene utilizzato dallindustria, ecc. . E non siamo ancora abbastanza sicuri del perché funzioni così bene.
Baso la mia discussione sul Deep Libro di apprendimento di Goodfellow, Bengio e Courville pubblicato nel 2017 ed è ampiamente considerato il il libro sullapprendimento profondo. (È disponibile gratuitamente online.) La sezione pertinente è 6.4.1 Proprietà e profondità di approssimazione universale .
Lo hai scritto
10 anni fa in classe ho imparato che avere più 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 […]
Devi fare riferimento al cosiddetto teorema di approssimazione universale , dimostrato da Cybenko nel 1989 e generalizzata da varie persone negli anni 90. Fondamentalmente dice che una rete neurale superficiale (con 1 livello nascosto) può approssimare qualsiasi funzione, cioè può in linea di principio imparare qualsiasi cosa . Questo è vero per varie funzioni di attivazione non lineare, comprese le unità lineari rettificate che la maggior parte delle reti neurali utilizza oggi (il libro di testo fa riferimento a Leshno et al. 1993 per questo risultato).
Se è così, perché tutti usano reti profonde?
Bene, una risposta ingenua è perché funzionano meglio. Ecco una figura dal libro Deep Learning che mostra che è utile avere più livelli in una particolare attività, ma lo stesso fenomeno si osserva spesso in varie attività e domini:
Sappiamo che una rete superficiale potrebbe si comportano bene quanto quelli più profondi. Ma non lo fa; e di solito non lo fanno. La domanda è: perché? Possibili risposte:
- Forse una rete superficiale avrebbe bisogno di più neuroni di quella profonda?
- Forse una rete superficiale è più difficile da addestrare con i nostri algoritmi attuali (ad es. minimi locali più fastidiosi, o il tasso di convergenza è più lento, o altro)?
- Forse unarchitettura superficiale non si adatta al tipo di problemi che di solito stiamo cercando di risolvere (ad esempio, il riconoscimento degli oggetti è la quintessenza “profondo “, processo gerarchico)?
- Qualcosaltro?
Il libro Deep Learning sostiene i punti n. 1 e n. 3. In primo luogo, sostiene che il numero di unità in una rete superficiale cresce esponenzialmente con la complessità dellattività. Quindi, per essere utile, una rete superficiale potrebbe dover 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 di molti neuroni in modo esponenziale; ma se ad es. La classificazione MNIST o il gioco Go sono casi del genere non sono del tutto chiari. In secondo luogo, il libro dice questo:
La scelta di un modello profondo codifica una convinzione molto generale che la funzione che vogliamo imparare dovrebbe coinvolgere la composizione di diverse funzioni più semplici. Questo può essere interpretato da un punto di vista della rappresentazione dellapprendimento dicendo che crediamo che il problema dellapprendimento consista nello scoprire un insieme di fattori di variazione sottostanti che possono a loro volta essere descritti in termini di altri fattori di variazione sottostanti più semplici.
Penso che il “consenso” attuale sia che “è una combinazione di punti n. 1 e n. 3: per le attività del mondo reale larchitettura profonda è spesso vantaggiosa e larchitettura superficiale sarebbe inefficiente e richiederebbe molti più neuroni per le stesse prestazioni.
Ma è tuttaltro che provato. Considera ad es. Zagoruyko e Komodakis, 2016, Wide Residual Networks . Reti residue con oltre 150 livelli sono apparse nel 2015 e hanno vinto vari concorsi di riconoscimento delle immagini. Questo è stato un grande successo e sembrava un argomento convincente a favore della profondità; ecco una figura tratta da una presentazione del primo autore sul documento di rete residuo (nota che il tempo va in modo confuso a sinistra qui):
Ma il documento collegato sopra mostra che un “ampio La “rete residua con” solo “16 livelli può superare quelle” profonde “con oltre 150 livelli. Se questo è vero, lintero punto della figura sopra si rompe.
Oppure considera Ba e Caruana, 2014, Do Deep Nets Really Need to be Deep? :
In questo articolo forniamo prove empiriche che le reti superficiali sono in grado di apprendere la stessa funzione delle reti profonde, e in alcuni casi con lo stesso numero di parametri delle reti profonde. Lo facciamo addestrando prima un modello profondo allo stato dellarte, quindi addestrando un modello superficiale per imitare il modello profondo. Il modello mimico 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 in modo che siano accurate come alcuni modelli profondi, anche se non siamo in grado di addestrare queste reti basse in modo che siano accurate come le reti profonde quando le reti basse vengono addestrate direttamente sulloriginale 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à, è chiaro che la funzione appresa da quella rete profonda non deve essere realmente profonda.
Se fosse vero, ciò significherebbe che la spiegazione corretta è piuttosto il mio punto n. 2, e non n. 1 o n. 3.
Come ho detto – – nessuno lo sa ancora per certo.
Osservazioni conclusive
La quantità di progressi raggiunti nel il deep learning negli ultimi ~ 10 anni è davvero sorprendente, ma la maggior parte di questo progresso è stato ottenuto per tentativi ed errori e ci manca ancora una conoscenza di base di ciò che esattamente fa funzionare così bene le reti profonde. Anche lelenco delle cose che le persone considerano cruciali per la creazione di una rete profonda efficace sembra cambiare ogni due anni.
La rinascita del deep learning è iniziata nel 2006, quando Geoffrey Hinton (che aveva lavorato su neural reti da più di 20 anni senza molto interesse da parte di nessuno) ha pubblicato un paio di documenti innovativi che offrono un modo efficace per formare reti profonde ( documento di scienza , Documento di calcolo neurale ). Il trucco consisteva nellusare un pre-allenamento senza supervisione prima di iniziare la discesa del gradiente. Questi documenti hanno rivoluzionato il campo e per un paio danni le persone hanno pensato che la pre-formazione senza supervisione fosse la chiave.
Quindi, nel 2010 Martens ha dimostrato che le reti neurali profonde possono essere addestrate con metodi di secondo ordine (i cosiddetti metodi privi di Hesse) e possono superare le reti addestrate con la pre-formazione: Apprendimento approfondito tramite ottimizzazione senza iuta . Poi nel 2013 Sutskever et al. ha mostrato che la discesa del gradiente stocastico con alcuni trucchi molto intelligenti può superare i metodi privi di Hesse: sullimportanza dellinizializzazione e dello slancio nellapprendimento profondo . Inoltre, intorno al 2010 le persone si sono rese conto che lutilizzo di unità lineari rettificate invece di unità sigmoidi fa unenorme differenza per la discesa del gradiente. Labbandono è apparso nel 2014. Le reti residue sono apparse nel 2015. Le persone continuano a trovare modi sempre più efficaci per addestrare le reti profonde e ciò che sembrava una visione chiave 10 anni fa viene spesso considerato un fastidio oggi. Tutto ciò è in gran parte determinato da tentativi ed errori e cè poca comprensione di ciò che fa funzionare alcune cose così bene e altre cose non. Addestrare reti profonde è come un sacco di trucchi. I trucchi di successo sono generalmente razionalizzati post factum.
Non sappiamo nemmeno perché le reti profonde raggiungano un plateau di prestazioni; solo 10 anni le persone erano solite incolpare i minimi locali, ma il pensiero corrente è che non è questo il punto (quando le prestazioni si alzano, i gradienti tendono a rimanere grandi). Questa è una domanda fondamentale sulle reti profonde e non lo sappiamo nemmeno questo .
Aggiornamento: Questo è più o meno largomento del discorso NIPS 2017 di Ali Rahimi sullapprendimento automatico come alchimia: https://www.youtube.com/watch?v=Qi1Yry33TQE .
[Questa risposta è stata interamente riscritta nellaprile 2017, quindi alcuni dei commenti seguenti non si applicano più.]
Commenti
- Bella risposta! 1) Come menzionato anche da @Nicolas, si scopre che esiste un teorema ( en.wikipedia.org/wiki/Universal_approximation_theorem ) che afferma che un feed-forward neurale n Una rete con un singolo livello nascosto e un numero finito di neuroni può approssimare qualsiasi funzione continua (incluso un DNN) sullipercubo dellunità. Si afferma che questo risultato è indipendente dalla scelta della funzione di attivazione. 2) Non sono sicuro che la tua ultima osservazione (ovvero che Hinton sia entrato a far parte di Google) sia rilevante per il recente successo dei DNN; Hinton è entrato a far parte di Google molto tempo dopo che i DNN sono diventati epidemici!
- Forse ‘ stiamo usando la terminologia in modo diverso. I perceptrons don ‘ t hanno uno strato nascosto: il loro input sono dati, il loro output è la classificazione. Una rete multistrato è costituita da un gruppo di perceptrons collegati insieme in modo tale che loutput dal layer $ n-1 $ formi linput al layer $ n $. Una rete con un singolo livello nascosto ha quindi tre livelli (input, hidden, output). Questo livello nascosto è la chiave per lapprossimazione universale: i perceptrons, che ne sono privi, possono ‘ t calcolare cose come XOR, ma le reti multistrato possono.
- La linearità cosa sembra una combinazione di due problemi. Perceptrons può solo calcolare confini decisionali lineari: può solo disegnare linee rette per dividere due classi. Le reti multistrato possono ” tracciare ” confini più complicati. Ma né i perceptrons né le reti multistrato utilizzano funzioni di attivazione lineare, tranne che nello strato di output di una rete multistrato. La funzione di attivazione del perceptron è un heaviside (1 se x > 0, 0 altrimenti); le reti multistrato utilizzano spesso sigmoidi, ma i vincoli per luniversale ca. sono piuttosto lievi: non costanti, limitati e in aumento monotono.
- @amoeba ottima risposta, limmagine allinizio mi ha scoraggiato a leggere il resto, ma era meglio così. Il perceptron è la controparte della regressione lineare per la classificazione, motivo per cui quando le persone usano la soluzione in forma chiusa (pseudoinverso) per risolvere il problema invece dei metodi online (sgd), ‘ Si chiama Regressione Logistica, a causa della logistica (funzione sigmoide) = perceptron. Una regressione percettronica / logistica può solo ‘ tracciare ‘ confini decisionali lineari e ‘ perché ‘ si chiama lineare.
- Tuttavia, il perceptron multistrato (ciò che hai disegnato nella tua prima immagine a sinistra) può combinare più decisioni lineari di questo tipo confini e può quindi suddividere lo spazio per risolvere il problema XOR (non lineare) come @Matt menzionato. Quindi, molti molti confini decisionali lineari combinati possono formare un cerchio, ad esempio se strizzi gli occhi. Dipende da come la pensi: la decisione è ancora lineare in uno spazio più alto, se hai familiarità con i kernel, ‘ è la stessa cosa.
Risposta
Buona risposta finora, anche se ci sono un paio di cose che nessuno ha menzionato qui intorno, ecco il mio 0,02 $
Risponderò solo sotto forma di una storia, dovrebbe rendere le cose più divertenti e chiare. Nessun tldr qui. Durante il processo dovresti essere in grado di capire qual è la differenza.
Ci sono diversi motivi per cui i DNN si sono attivati quando lo hanno fatto (le stelle dovevano allinearsi, come tutte le cose simili, è solo questione di luogo, momento giusto ecc.).
Uno dei motivi è la disponibilità di dati, molti dati (dati etichettati). Se vuoi essere in grado di generalizzare e imparare qualcosa come “a priori generici” o “a priori universali “(ovvero gli elementi costitutivi di base che possono essere riutilizzati tra attività / applicazioni), allora hai bisogno di molti dati. E dati selvaggi, potrei aggiungere, non set di dati sterili accuratamente registrati in laboratorio con illuminazione controllata e tutto il resto. Meccanica Turk ha reso possibile questo (etichettatura).
In secondo luogo, la possibilità di addestrare reti più grandi più velocemente utilizzando le 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 poter comprimere le stesse informazioni poiché i livelli ora erano più longheroni e, quindi è andata bene anche con il dropout. 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 lutilizzo di mini-batch (che in realtà è dannoso per lerrore 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ù magri o più paffuti, più piccoli o più alti, con o senza lentiggini, ecc. Lottimizzazione era come se frizzasse o scoppiasse quindi la ricerca si stava muovendo verso metodi più complessi di allenamento come il gradiente coniugato e il metodo newton, tutti si sono resi conto che non cè pranzo gratis. Le reti stavano eruttando.
Ciò che ha rallentato le cose è stato il problema del gradiente di fuga . La gente diceva: whoa, questo è lontano, amico! In poche parole significa che era difficile regolare lerrore sui livelli più vicini agli input. Man mano che si aggiungono più strati sulla torta, diventa troppo traballante. Non si poteva ” t propagare allindietro lerrore significativo ai primi livelli. Più strati, peggio diventa. Peccato.
Alcune persone hanno capito che luso dellentropia incrociata come funzione di perdita (beh, di nuovo, classificazione e riconoscimento delle immagini) fornisce una sorta di regolarizzazione e aiuta a impedire che la rete si saturi e, a sua volta, il gradiente non è stato in grado di nasconderlo bene.
Ciò che ha reso le cose possibili è stato anche il pre-addestramento per livello utilizzando metodi non supervisionati. Fondamentalmente, prendi un mucchio di codificatori automatici e impari rappresentazioni sempre meno astratte mentre si aumenta il rapporto di compressione. I pesi di queste reti sono stati utilizzati per inizializzare la versione supervisionata. Questo ha risolto il problema del gradiente di scomparsa in un altro modo: stai già iniziando lallenamento supervisionato da una posizione di partenza molto migliore. Così tutte le altre reti si sono alzate e hanno iniziato a ribellarsi. Ma le reti avevano comunque bisogno di supervisione, altrimenti era impossibile mantenere fermi i big data.
Ora, per lultima parte che alla fine porta alla tua risposta che è troppo complessa per essere riassunta in poche parole: perché più strati e non solo uno. Perchè noi possiamo! e perché descrittori di caratteristiche di contesto e invarianti. e pool.
Ecco un esempio: hai un set di dati di immagini, come intendi addestrare un piano NN utilizzando quei dati? Beh, ingenuamente, prendi diciamo ogni riga e lo concateni in un lungo vettore e questo è il tuo input. Cosa impari?Bene, alcune funzioni senza senso sfocate che potrebbero non assomigliare a niente, a causa dei molti molti tipi di variazioni che gli oggetti nellimmagine contengono e non sei in grado di distinguere tra cose rilevanti e irrilevanti. E a un certo punto la rete deve dimenticarsi di essere in grado di apprendere di nuovo cose nuove. Quindi cè il problema delle capacità. Si tratta di dinamiche più non lineari, ma lintuizione è che devi aumentare il numero di neuroni per poter includere più informazioni nella tua rete.
Quindi il punto è che se inserisci limmagine come un unico pezzo, laggiunta di livelli extra non fa troppo 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.
Allora cosa cè da fare? Guarda il bordo dello schermo e prova a leggere questo testo. Problema? Per quanto possa sembrare stupido, devi guardare quello che stai leggendo. Altrimenti è troppo sfocato / non cè abbastanza risoluzione / granularità. Chiamiamo larea di messa a fuoco il campo ricettivo. Anche le reti devono essere in grado di concentrarsi. Fondamentalmente invece di usare lintera immagine come input, sposti una finestra scorrevole lungo limmagine e poi la usi come input per la rete (un po meno stocastico di quello 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 gatto capovolto bungee jumping. Netta, fede nellumanità ripristinata. La rete può apprendere astrazioni locali in unimmagine su più livelli. La rete impara i filtri, inizialmente quelli semplici e poi si basa su quelli per apprendere filtri più complessi.
Quindi, per riassumere: campi / convoluzioni ricettive, inizializzazione non supervisionata, unità lineari rettificate, dropout o altra regolarizzazione metodi. Se sei molto serio al riguardo, ti consiglio di dare unocchiata a Deep Learning in Neural Networks: An Overview di Schmidhuber qui “è lURL per il preprint http://arxiv.org/abs/1404.7828
E ricorda: grande apprendimento, dati approfonditi. Word.
Commenti
- Ciao Florin, grazie per la bella risposta! Mi piace lo stile di scrittura. Quando parli di finestre scorrevoli, ti riferisci al modo in cui strati convoluzionali di NN convoluzionali osservano parti diverse di unimmagine e di un progetto le loro attivazioni su uno spazio di dimensione inferiore?
- più o meno sì, le convoluzioni non sono necessarie, ma ‘ sono più veloci a livello computazionale, poiché i pesi sono vincolati. fuori questo documento dove non ‘ t usano convoluzioni e usano campi ricettivi locali. le parole chiave importanti sono locali / gerarchiche: arxiv.org /pdf/1112.6209.pdf
- Penso anche il più vicino la risposta sistematica è sobi ‘ s. ha ‘ ha ricevuto il mio voto positivo. ho solo aggiunto qualche altra cosa qua e là con un po di sale e pepe.
Answer
In termini laici, la differenza principale con le classiche reti neurali è che hanno molti più livelli nascosti.
Lidea è 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 unocchiata a questo libro .
Commenti
- Grazie David, ma non ‘ Non vedo davvero come aggiungere solo etichette per renderlo diverso. Ricordo anche che era un problema difficile capire e scomporre il modo in cui una funzione veniva codificata dalla rete neurale. Deve esserci qualcosaltro oltre ad avere più livelli. Per quanto riguarda lesempio che hai fornito, credo che tu possa addestrare individualmente reti neurali (vecchia scuola) per svolgere ciascuna delle attività.
- Il potere arriva quando lo usi come una pipeline, quindi gli input e gli output dalle pile di livelli a ogni livello.
- Ho letto il tuo primo collegamento, che è una buona risorsa, e altre domande correlate su quora e se, tuttavia lesempio che hai fornito non sembra accurato con quello che ho leggere. ‘ cercherò di rispondere alla mia domanda, riassumendo le letture di tesi.
- Nonostante la risorsa indicata sia interessante, la risposta attualmente non risponde alla domanda.
- Puoi indicare un esempio in cui i livelli sono etichettati (diversamente che in modo puramente descrittivo)?È certamente vero che i livelli nascosti appaiono agli elementi successivamente più complessi in ogni livello nascosto, ma ” laggiunta di etichette ” sembra implicare che ‘ stai ricevendo una formazione specifica per farlo.
Risposta
NN:
- un livello nascosto è sufficiente ma può comunque avere più livelli, ordinamento 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 lutilizzo in quanto gli errori diventano troppo piccoli
- difficili da capire cosa si impara a ogni livello
DNN:
- sono richiesti più livelli, bordi non orientati (modello: macchina boltzman limitata)
- prima addestrato in modo non supervisionato, in cui le reti apprendono le caratteristiche rilevanti imparando a riprodurre il suo input , quindi addestrato in modo supervisionato che ottimizza le caratteristiche per classificare
- addestrare i livelli uno per uno dal livello di input a quello di output (algoritmo: divergenza contrastiva)
- chiaramente ogni livello contiene caratteristiche di astrazione crescente
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, potrebbe richiedere molti più neuroni se viene utilizzato un singolo strato nascosto.
Commenti
- -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 …
- Non ho votato in negativo (forse a un downvoter non è piaciuto che tu risponda alla tua domanda? Ma ovviamente va benissimo qui), ma eccone uno cosa che non è del tutto corretta. Ciò che elenchi come proprietà di DNN: che i bordi non sono orientati, che ‘ viene addestrato per la prima volta 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 infatti ora ci sono molti modi per addestrare una rete profonda senza tutto ciò. Vedi la mia risposta.
Risposta
Allinizio sono stato anche un po confuso dalla differenza tra reti neurali (NN) e reti neurali profonde (DNN), tuttavia la “profondità” si riferisce solo al numero di parametri & strati, sfortunatamente. Puoi prenderlo come una sorta di ri -branding con il cosiddetto “Canadian Mafia”.
Diversi anni fa, ho anche avuto reti neurali come parte di una classe e abbiamo fatto il riconoscimento delle cifre, lapprossimazione delle onde e applicazioni simili utilizzando NN, che aveva più livelli nascosti e uscite e tutto quel jazz che hanno DNN. Tuttavia, ciò che non avevamo allora era la potenza di calcolo.
Il motivo che ha reso possibile e desiderabile il passaggio a DNN sono i progressi nello sviluppo dellhardware. In poche parole, ora possiamo calcolare di più, più velocemente e di più parallelizzato (DNN su GPU), mentre prima il tempo era il collo di bottiglia per NN “.
Come indicato nella pagina di Wikipedia per Deep Lapprendimento , la parte “profonda” si riferisce principalmente al fatto che le caratteristiche interagiscono in modo non lineare su più livelli, eseguendo quindi lestrazione e la trasformazione delle caratteristiche. Questo è stato fatto anche negli NN “standard, ma su scala più piccola.
Sulla stessa pagina, qui hai la definizione “Una rete neurale profonda (DNN) è una rete neurale artificiale (ANN) con più livelli nascosti di unità tra i livelli di input e di output.”
Commenti
- 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 in come vengono utilizzati questi livelli multipli sembra essere ciò che conta ed è molto meno chiaro. Questo è il motivo per cui ho concentrato la domanda non sulla struttura ..
- Onestamente, non ‘ Sono daccordo con lultima definizione a cui ho fatto riferimento – poiché ANN / NN con uno strato nascosto non sono realmente efficienti e hai bisogno di più per qualsiasi tipo di previsione più complessa (I ‘ m dicendo questo perché penso che DNN fosse una parola dordine inutile aggiunta a un termine già buono, NN). Penso che tu possa usare NN e DNN in modo intercambiabile (perché al giorno doggi nessuno usa NN a un livello nascosto ‘ s), mentre luso dei livelli differisce tra i tipi di DNN ‘ s (CNN, RBM, RNN, LSTM, CW-RNN, …) e non lidea stessa di DNN.
Risposta
Per quanto ne so, quella che oggi si chiama Deep Neural Network (DNN) non ha niente di fondamentale o filosoficamente diverso dal vecchio standard Neural Network (NN). Sebbene, in teoria, si possa approssimare un NN arbitrario utilizzando un NN superficiale con solo un livello nascosto, tuttavia, ciò non funziona significa che le due reti funzioneranno in modo simile se addestrate utilizzando lo stesso algoritmo e i dati di addestramento. In effetti, cè un crescente interesse per la formazione di reti superficiali che si comportano in modo simile alle reti profonde. Il modo in cui ciò viene fatto, tuttavia, è addestrando prima una rete profonda, quindi addestrando la rete superficiale a imitare loutput finale (cioè loutput del penultimo strato) della rete profonda. Vedi, ciò che rende favorevoli le architetture profonde è che le odierne tecniche di addestramento (propagazione del dorso) funzionano meglio quando i neuroni sono disposti in una struttura gerarchica.
Unaltra domanda che può essere posta è: perché neurale Le reti (DNN in particolare) sono diventate così popolari allimprovviso. A quanto mi risulta, gli ingredienti magici che hanno reso i DNN così popolari di recente sono i seguenti:
A. Set di dati e capacità di elaborazione dati migliorati
1. Sono diventati disponibili set di dati su larga scala con milioni di immagini diverse
2. Limplementazione rapida della GPU è stata resa disponibile al pubblico
B. Algoritmi di addestramento e architetture di rete migliorati
1. Unità lineari rettificate (ReLU) invece di sigmoid o tanh
2. Le architetture di rete profonda si sono evolute nel corso degli anni
A-1) Almeno fino a tempi molto recenti in Computer Vision, non potevamo addestrare modelli su milioni di immagini etichettate; semplicemente perché i set di dati etichettati di quella dimensione non esistevano. Risulta che, oltre al numero di immagini, anche la granularità del set di etichette è un fattore cruciale per il successo dei DNN (vedere la Figura 8 in questo articolo , di Azizpour et al.).
A-2) Sono stati reso possibile laddestramento di DNN che funzionano bene nella pratica, in particolare lavvento delle implementazioni 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 utilizzando GPU di fascia alta (vedi questo documento, di Krizhevsky et al.) .
B-1) Luso di semplici unità lineari rettificate (ReLU) invece di sigmoide e Le funzioni tanh sono probabilmente il più grande elemento costitutivo nel rendere possibile laddestramento dei DNN. Nota che entrambe le funzioni sigmoide e tanh hanno quasi gradiente 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 gradino che ha pendenza zero ovunque tranne 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 levoluzione cambia la struttura di un organismo in natura. Condivisione dei parametri ( ad esempio negli strati convoluzionali), la regolarizzazione dellabbandono scolastico, linizializzazione, il programma del tasso di apprendimento, il raggruppamento spaziale, il sottocampionamento negli strati più profondi e molti altri trucchi che sono ora considerati standard nella formazione DNN sono stati sviluppati, evoluti, fine adattato nel corso degli anni per rendere possibile la formazione delle reti profonde nel modo in cui è oggi.
Commenti
- +1. La prima risposta in questo thread che fornisce una risposta adeguata alle domande dellOP ‘. Molti punti positivi qui. Il mio unico commento importante sarebbe che oltre ai tuoi A e B, th Cè anche C: aumento massiccio delle dimensioni dei set di dati di formazione disponibili. Questo sembra essere importante almeno quanto A e B.
- Non ‘ penso che relu sia così importante: il documento di Alex krizhevsky ha affermato che nn ha imparato a 6 volte più veloce. La maggior parte delle altre modifiche alla struttura di rete che hai menzionato si riferiscono a nns convoluzionali, che copiano semplicemente le pipeline di elaborazione delle immagini standard (cosa buona, ma nessuna nuova intuizione)
- @amoeba: la dimensione del set di dati è sotto A. I aggiornato il testo per evidenziarlo.
- @ seanv507: in effetti, avevo in mente le reti convoluzionali (ConvNets) quando scrivevo la risposta. Se ci sono altri fattori importanti (non correlati a ConvNets) che mi sono persi, apprezzerei se li menzionassi. Sarei felice di aggiornare la mia risposta di conseguenza.Per quanto riguarda le ReLU, laddestramento nns con tanh e sigmoide è considerevolmente più difficile che con ReLU a causa del problema dei gradienti di fuga: le unità si saturano facilmente e, una volta che ciò accade, ci vuole molto tempo per diventare nuovamente insature (i gradienti sono molto piccoli quando lunità è saturo)
Risposta
La differenza tra un NN “profondo” e un NN standard è puramente qualitativa: non esiste una definizione di cosa significhi “Deep”. “Deep” può significare qualsiasi cosa, dalle architetture estremamente sofisticate utilizzate da Google, Facebook e altri, che hanno 50-80 o anche più livelli, a 2 architetture nascoste (4 livelli in totale). Non sarei sorpreso se potessi anche trovare articoli che affermano di fare 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, da macchine boltzman casuali (che sono grafici non orientati) ad architetture feedforward con varie funzioni di attivazione. La maggior parte degli NN verrà addestrata utilizzando backprop, ma non è necessario sia così anche gli algoritmi di addestramento non sono molto omogenei.
Nel complesso, apprendimento profondo, NN profondi e NN sono diventati tutti parole generiche che catturano una moltitudine di approcci.
Per buoni riferimenti introduttivi a “cosa è cambiato”: Apprendimento approfondito delle rappresentazioni: guardare avanti , Bengio, 2013 è una buona recensione + prospettiva per il futuro. Vedi anche Le reti profonde hanno davvero bisogno di essere profonde? Ba & Caruana, 2013 che illustra questo Essere profondi potrebbe non essere utile per la rappresentazione ma per lapprendimento.
Commenti
- I riferimenti che fornisci sono molto utili , ma il resto della risposta nella forma corrente (che si legge come ” NN non significa niente, DNN non significa niente, NN e DNN possono fare molte cose “) non molto, prenderesti in considerazione di modificarlo?
Rispondi
Per ampliare la risposta di David Gasquez, una delle principali differenze tra le reti neurali profonde e le reti neurali tradizionali è che non usiamo semplicemente la backpropagation per le reti neurali profonde.
Perché? Poiché la backpropagation addestra i livelli successivi in modo più efficiente di quanto addestra i livelli precedenti, man mano che si va avanti e indietro 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 adattati, e farà altrettanto bene come una rete a tre strati. Vedere qui per ulteriori informazioni.
Quindi la svolta concettuale consiste nel trattare i problemi separati (i livelli etichettati) come problemi separati, se prima provare a risolvere il problema di costruire un primo livello genericamente buono, e poi provare a risolvere il problema di costruire un secondo livello genericamente buono, alla fine avremo uno spazio di funzionalità profondo che possiamo fornire al nostro problema attuale.
Risposta
Non direi che cè una grande differenza filosofica tra NN e DNN (in effetti, direi che DNN è solo un marketing termine per distinguere da “fallito” NN). Ciò che è cambiato è la dimensione dei set di dati. Essenzialmente le reti neurali sono attualmente i migliori stimatori statistici $ O (n) $, che funzionano bene per grandi set di dati ad alta dimensione (es. Imagenet).
Penso che dovresti fare un passo indietro e vedere che questo ha creato una rinascita in IA superficiale – ad es borsa di parole per lanalisi del sentiment e altre applicazioni linguistiche e borsa di parole visiva era lapproccio principale al riconoscimento delle immagini prima di DNN. Nessuno sta dicendo che il sacco di parole è un vero modello di linguaggio, ma è una soluzione ingegneristica efficace. Quindi direi che DNN è una “borsa visiva di parole” migliore – vedi ad es. Szegedy et al. 2013 Proprietà intriganti delle reti neurali e Nguyen et al. Le reti neurali profonde sono facilmente ingannevoli: previsioni ad alta affidabilità per immagini irriconoscibili dove è chiaro che non ci sono strutture di ordine superiore ecc. DNN).
Commenti
- @amoeba questo altro articolo è quasi un documento complementare al primo (di nuovo con molte immagini!)
Risposta
Per rispondere a questultima domanda, guarda questo documento di Telgarsky che dice che per un certo problema di classificazione “tutte le reti superficiali con meno di esponenzialmente (in k) molti nodi mostrano un errore di almeno 1/6, mentre una rete profonda con 2 nodi in ciascuno dei 2k strati raggiunge zero errori.”
Il problema di classificazione in questione è il problema di n punti alternati in cui consideriamo lintervallo $ [0,1-2 ^ {- k}] $ in modo che linput $ x_i $ sia i $ 2 ^ k $ punti distribuiti uniformemente in quellintervallo e il corrispondente $ y_i $ sono dati da $ y_i = 1 $ if $ i $ è dispari e $ y_i = 0 $ if $ i $ è pari. Chiediamo quindi se le reti superficiali senza larghezze esponenziali possono catturare questa relazione rispetto alle reti profonde con solo due nodi in ogni livello? Essenzialmente, possiamo approssimare i dati meglio (esattamente pari) con un lineare ( in $ k $ ) numero di livelli con solo due nodi in ogni livello, mentre avremmo bisogno di molti esponenzialmente (in $ k $ ) per ottenere lo stesso risultato in una rete superficiale.
La prova della citazione implica il notare che la composizione di attivazioni non lineari applicata a trasformazioni affini (cioè con un numero maggiore di strati) riesce a catturare una maggiore variabilità nei dati rispetto alla somma di quelle stesse funzioni (come in quando aggiungiamo nodi ai livelli).
Risposta
Il deep learning è un insieme di algoritmi di machine learning che tentare di modellare astrazioni di alto livello nei dati utilizzando architetture composte da più trasformazioni non lineari .
Fonte: Arno Candel
Lascia un commento