Perché le reti neurali stanno diventando più profonde, ma non più ampie?


73

Negli ultimi anni, le reti neurali convoluzionali (o forse le reti neurali profonde in generale) sono diventate sempre più profonde, con reti all'avanguardia che vanno da 7 strati ( AlexNet ) a 1000 strati ( reti residue) nello spazio di 4 anni. Il motivo dietro l'aumento delle prestazioni da una rete più profonda, è che può essere appresa una funzione più complessa, non lineare. Dati dati di formazione sufficienti, ciò consente alle reti di discriminare più facilmente tra le diverse classi.

Tuttavia, la tendenza sembra non aver seguito il numero di parametri in ciascun livello. Ad esempio, il numero di mappe caratteristiche negli strati convoluzionali, o il numero di nodi negli strati completamente collegati, è rimasto approssimativamente lo stesso ed è ancora relativamente piccolo in grandezza, nonostante il grande aumento del numero di strati. Dal mio intuito, tuttavia, sembrerebbe che aumentare il numero di parametri per strato darebbe a ogni strato una fonte di dati più ricca da cui apprendere la sua funzione non lineare; ma questa idea sembra essere stata trascurata a favore semplicemente aggiungendo più livelli, ognuno con un piccolo numero di parametri.

Quindi, mentre le reti sono diventate "più profonde", non sono diventate "più ampie". Perchè è questo?


1
+1, ma per essere onesti, non è che queste reti a più di 1000 livelli siano "all'avanguardia" nel senso di sovraperformare le altre. La carta arxiv che hai collegato riporta una rete residua con 152 livelli come attuale vincitore su ImageNet.
ameba dice Reinstate Monica il

3
Hai letto ampie reti residue arxiv.org/abs/1605.07146 .... forse nessuna ragione ... l'ottimizzazione di una funzione non convessa con discesa gradiente non ha basi teoriche ... c'è solo prova e molti errori :-)
seanv507

@ seanv507 Molto interessante, grazie per questo link. A proposito, ecco un thread molto correlato: stats.stackexchange.com/questions/214360 e lì c'è un link a questo thread reddit .
ameba dice Reinstate Monica il


Risposte:


87

Come disclaimer, lavoro sulle reti neurali nella mia ricerca, ma generalmente utilizzo reti neurali relativamente piccole e poco profonde piuttosto che reti molto profonde all'avanguardia della ricerca che citi nella tua domanda. Non sono un esperto delle stranezze e delle peculiarità di reti molto profonde e rimanderò a qualcuno che lo è.

Innanzitutto, in linea di principio, non vi è alcuna ragione per cui abbiate bisogno di reti neurali profonde. Una rete neurale sufficientemente ampia con un solo strato nascosto può approssimare qualsiasi funzione (ragionevole) con dati di allenamento sufficienti. Vi sono, tuttavia, alcune difficoltà nell'utilizzo di una rete estremamente ampia e poco profonda. Il problema principale è che queste reti molto ampie e poco profonde sono molto brave nella memorizzazione, ma non così buone nella generalizzazione . Quindi, se si allena la rete con ogni possibile valore di input, una rete super ampia potrebbe eventualmente memorizzare il valore di output corrispondente desiderato. Ma questo non è utile perché per qualsiasi applicazione pratica non avrai tutti i possibili valori di input con cui allenarti.

Il vantaggio di più livelli è che possono apprendere funzionalità a vari livelli di astrazione . Ad esempio, se ti alleni una rete neurale profonda convoluzionale per classificare le immagini, scoprirai che il primo strato si allenerà per riconoscere cose molto basilari come i bordi, il livello successivo si allenerà per riconoscere raccolte di bordi come le forme, il prossimo il livello si allenerà per riconoscere raccolte di forme come occhi o nasi e il livello successivo apprenderà funzioni di ordine superiore come i volti. I livelli multipli sono molto migliori nel generalizzare perché apprendono tutte le caratteristiche intermedie tra i dati grezzi e la classificazione di alto livello.

Questo spiega perché potresti usare una rete profonda piuttosto che una rete molto ampia ma superficiale. Ma perché non una rete molto profonda e molto ampia? Penso che la risposta sia che vuoi che la tua rete sia il più piccola possibile per produrre buoni risultati. Man mano che aumenti le dimensioni della rete, stai semplicemente introducendo più parametri che la tua rete deve imparare, e quindi aumentando le possibilità di overfitting. Se costruisci una rete molto ampia e molto profonda, corri la possibilità di ogni livello semplicemente memorizzando ciò che vuoi che sia l'output e finisci con una rete neurale che non riesce a generalizzare a nuovi dati.

A parte lo spettro di overfitting, più ampia è la tua rete, più tempo ci vorrà per allenarsi . Le reti profonde possono già essere molto onerose dal punto di vista computazionale, quindi c'è un forte incentivo a renderle sufficientemente larghe da far funzionare bene, ma non più ampie.



2
L'ho solo scremato, quindi non posso dire nulla di autorevole, ma sembra che gli autori abbiano scoperto che almeno nel caso delle reti residue una rete larga (ma ancora profonda 16 strati!) Supera una rete stretta, estremamente profonda (1000 strati ) netto. Non so molto sulle reti residue, ma secondo l'introduzione sembra che una difficoltà nell'addestrarle sia che può esserci la tendenza degli strati a non imparare nulla e quindi a non contribuire molto al risultato. Sembra che avere meno livelli, ma più potenti, eviti questo. Non so se questo si applichi ad altri tipi di NN.
J. O'Brien Antognini,

Risposta chiara e concisa, ben fatta. @J
ctwardy,

21

Non credo che ci sia una risposta definitiva alle tue domande. Ma penso che la saggezza convenzionale sia la seguente:

Fondamentalmente, man mano che lo spazio di ipotesi di un algoritmo di apprendimento cresce, l'algoritmo può apprendere strutture sempre più ricche. Allo stesso tempo, l'algoritmo diventa più incline al sovradimensionamento e il suo errore di generalizzazione probabilmente aumenterà.

Quindi, alla fine, per ogni dato set di dati, è consigliabile lavorare con il modello minimo che ha abbastanza capacità per apprendere la struttura reale dei dati. Ma questo è un consiglio molto mosso, dal momento che di solito la "struttura reale dei dati" è sconosciuta, e spesso anche le capacità dei modelli candidati sono solo vagamente comprese.

Quando si tratta di reti neurali, la dimensione dello spazio delle ipotesi è controllata dal numero di parametri. E sembra che per un numero fisso di parametri (o un ordine di grandezza fisso), andare più in profondità consente ai modelli di catturare strutture più ricche (ad esempio questo documento ).

Questo potrebbe spiegare in parte il successo di modelli più profondi con meno parametri: VGGNet (dal 2014) ha 16 livelli con parametri ~ 140M, mentre ResNet (dal 2015) lo ha battuto con 152 livelli ma solo parametri ~ 2M

(da un lato, i modelli più piccoli possono essere più facili da addestrare dal punto di vista computazionale - ma non penso che sia un fattore importante da solo - poiché la profondità complica effettivamente l'allenamento)

Si noti che questa tendenza (maggiore profondità, meno parametri) è principalmente presente nelle attività relative alla visione e nelle reti convoluzionali, e ciò richiede una spiegazione specifica del dominio. Quindi ecco un'altra prospettiva:

Ogni "neurone" in uno strato convoluzionale ha un "campo ricettivo", che è la dimensione e la forma degli input che influenzano ogni output. Intuitivamente, ogni kernel acquisisce una sorta di relazione tra input vicini. E i piccoli kernel (che sono comuni e preferibili) hanno un piccolo campo ricettivo, quindi possono fornire informazioni solo sulle relazioni locali.

Ma man mano che vai più in profondità, il campo ricettivo di ciascun neurone rispetto a uno strato precedente diventa più ampio. Quindi gli strati profondi possono fornire caratteristiche con significato semantico globale e dettagli astratti (relazioni di relazioni ... di relazioni di oggetti), usando solo piccoli kernel (che regolarizzano le relazioni apprese dalla rete e le aiutano a convergere e generalizzare).

Quindi l'utilità di reti convoluzionali profonde nella visione artificiale può essere parzialmente spiegata dalla struttura spaziale di immagini e video. È possibile che il tempo dirà che per diversi tipi di problemi, o per architetture non convoluzionali, la profondità in realtà non funziona bene.


La parte limitata della macchina Boltzmann delle reti profonde è un grande moltiplicatore del tempo di convergenza. (afaict)
EngrStudent,

4
Gli RBM non sono inerenti all'apprendimento profondo. Molte reti profonde (oggigiorno, la maggior parte?) Di successo non usano RBM.
Borbei,

3
Grazie per il collegamento a quel documento, non l'avevo mai visto prima e sembra molto pertinente.
J. O'Brien Antognini,

@Borbei - Come assicurano la separazione delle funzioni senza RBM?
EngrStudent,


10

L'aggiunta di più funzionalità aiuta, ma il vantaggio diventa rapidamente marginale dopo l'aggiunta di molte funzionalità. Questo è uno dei motivi per cui funzionano strumenti come PCA : alcuni componenti catturano la maggior parte delle variazioni nelle funzionalità. Quindi, l'aggiunta di più funzionalità dopo un certo punto è quasi inutile.

D'altra parte, trovare la giusta funzionalità per la funzione è sempre una buona idea. Tuttavia, se non hai una buona teoria, è difficile trovare una funzione corretta, ovviamente. Pertanto, l'aggiunta di livelli è utile come forma di approccio a forza bruta.

Considera un caso semplice: la resistenza aerea di un'auto. Supponiamo che non conosciamo l'equazione: 2/2 dove - un'area trasversale di un'auto, - densità dell'aria e - velocità di un'auto. Potremmo immaginare che le misurazioni dell'auto siano importanti e aggiungerle come caratteristiche, anche la velocità di un'auto entrerà in gioco. Quindi continuiamo ad aggiungere funzionalità e forse aggiungere la pressione dell'aria, la temperatura, la lunghezza, la larghezza di un'auto, il numero di posti, ecc.

fCρAv2/2
Aρv

Finiremo con un modello come Vedi come queste caratteristiche non si nell'equazione "vera" a meno che non aggiungiamo tutte le interazioni e i polinomi. Tuttavia, se la vera equazione non fosse convenientemente polinomiale, diciamo che aveva esponenti o altre strane funzioni trascendentali, allora non avremmo alcuna possibilità di emularla espandendo il set di funzionalità o allargando la rete.

fiβixi

Tuttavia, rendere la rete più profonda ti porterebbe facilmente all'equazione sopra con solo due livelli. Funzioni più complicate avrebbero bisogno di più livelli, ecco perché l'approfondimento del numero di livelli potrebbe essere un modo per affrontare molti problemi.


5
Si assumono funzioni di trasferimento lineari. Ma ci sono molte altre scelte (comuni), e secondo il teorema di approssimazione universale delle ANN , anche un singolo strato non lineare nascosto (se è abbastanza largo) può approssimare qualsiasi bella funzione. Quindi la rappresentabilità non può davvero spiegare il successo delle reti profonde.
Borbei,

2
Il mio esempio era lineare ma si applica a una serie più ampia di casi. Hai assunto la funzione "simpatica" ma molti non sono così carini. Ad esempio, quando seleziono un'auto da acquistare, perché il mio algoritmo decisionale sarebbe una bella funzione?
Aksakal,

2

Per una rete neurale densamente connessa di profondità e larghezza , il numero di parametri (quindi, RAM necessaria per far funzionare o addestrare la rete) è . Pertanto, se si dispone solo di un numero limitato di parametri, spesso ha senso preferire un grande aumento della profondità rispetto a un piccolo aumento della larghezza.dwO(dw2)

Perché potresti provare a limitare il numero di parametri? Una serie di motivi:

  • Stai cercando di evitare un eccesso di adattamento. (Sebbene limitare il numero di parametri sia uno strumento molto schietto per raggiungere questo obiettivo.)
  • La tua ricerca è più impressionante se riesci a superare il modello di qualcun altro usando lo stesso numero di parametri.
  • Addestrare il tuo modello è molto più semplice se il modello (più i parametri moment se stai usando Adam) può stare nella memoria di una singola GPU.
  • Nelle applicazioni della vita reale, la RAM è spesso costosa quando serve i modelli. Ciò è particolarmente vero per l'esecuzione di modelli su un telefono cellulare, ma a volte può essere applicato anche per servire modelli dal cloud.

Da dove viene ? Per due strati adiacenti di larghezza , le connessioni tra loro sono descritte da un . Quindi se hai layer di larghezza (più un input e un layer di output), il numero di parametri è Invece di limitare la larghezza, una strategia alternativa talvolta utilizzata è quella di utilizzare connessioni sparse. Ad esempio, quando si inizializza la topologia di rete, è possibile ammettere ogni connessione con probabilità quindi il numero totale di parametri èw 1 , w 2 w 1 × w 2 ( d - 2 ) w ( D - 2 ) w 2 + w ( ingresso larghezza strato ) + w ( larghezza strato di uscita ) = O ( d w 2 ) . 1 / O(dw2)w1,w2w1×w2(d2)w

(d2)w2+w(input layer width)+w(output layer width)=O(dw2).
O(dw)1/wO(dw). Ma se lo fai, non è chiaro che aumentare la larghezza aumenterà necessariamente la capacità di apprendimento del modello.
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.