Tipi di ottimizzatori nel deep learning che ogni ingegnere di intelligenza artificiale dovrebbe conoscere

Pubblicato: 2020-12-01

Sommario

introduzione

Il deep learning è un grande progresso rispetto all'apprendimento automatico in termini di flessibilità, maggiore precisione e un'ampia gamma di possibilità nelle applicazioni del settore. Che si tratti di un'applicazione di chat, correzione automatica della grammatica, traduzione tra lingue diverse, rilevamento di notizie false o scrittura automatica di storie sulla base di alcune parole iniziali, il deep learning trova il suo utilizzo in quasi tutti i settori.

Con così tanto utilizzo, diventa importante che questi algoritmi vengano eseguiti con risorse minime in modo da poter ridurre i costi ricorrenti e fornire risultati efficienti in meno tempo. Un ottimizzatore è un metodo o un algoritmo per aggiornare i vari parametri che possono ridurre la perdita con molto meno sforzo. Diamo un'occhiata ad alcuni popolari ottimizzatori di deep learning che forniscono risultati accettabili.

Impara i corsi AI ML dalle migliori università del mondo. Guadagna master, Executive PGP o programmi di certificazione avanzati per accelerare la tua carriera.

Discesa gradiente (GD)

Questo è l'ottimizzatore più semplice che utilizza direttamente la derivata della funzione di perdita e del tasso di apprendimento per ridurre la perdita e raggiungere i minimi. Questo approccio è adottato anche nella backpropagation nelle reti neurali in cui i parametri aggiornati sono condivisi tra livelli diversi a seconda di quando viene raggiunta la perdita minima. È facile da implementare e interpretare i risultati, ma presenta vari problemi.

I pesi vengono aggiornati quando viene calcolato l'intero gradiente del set di dati, il che rallenta il processo. Richiede anche una grande quantità di memoria per archiviare questi dati temporanei, rendendolo un processo affamato di risorse. Sebbene l'idea alla base di questo algoritmo sia adatta, deve essere ottimizzata.

Discesa a gradiente stocastico

Questa è una versione modificata del metodo GD, in cui i parametri del modello vengono aggiornati ad ogni iterazione. Significa che dopo ogni campione di allenamento, la funzione di perdita viene testata e il modello viene aggiornato. Questi frequenti aggiornamenti fanno convergere ai minimi in meno tempo, ma a scapito di una maggiore varianza che può far superare al modello la posizione richiesta.

Ma un vantaggio di questa tecnica è la bassa richiesta di memoria rispetto alla precedente perché ora non è necessario memorizzare i valori precedenti delle funzioni di perdita.

Discesa graduale in mini-batch

Un'altra variante di questo approccio GD è il mini-batch, in cui i parametri del modello vengono aggiornati in piccoli lotti. Significa che dopo ogni n batch, i parametri del modello verranno aggiornati e questo assicura che il modello proceda verso i minimi in meno passaggi senza deragliare spesso. Ciò si traduce in un minore utilizzo della memoria e una bassa varianza nel modello.

Leggi: Idee per progetti di apprendimento automatico

Discesa gradiente basata sul momento

Rivisitiamo il metodo che stiamo utilizzando per aggiornare i parametri. Sulla base della derivata del primo ordine della funzione di perdita, stiamo retropropagando i gradienti. La frequenza degli aggiornamenti può essere dopo ogni iterazione, un batch o all'ultimo, ma non stiamo considerando quanti aggiornamenti abbiamo nei parametri.

Se questo elemento della cronologia viene incluso nei prossimi aggiornamenti, può accelerare l'intero processo e questo è ciò che significa slancio in questo ottimizzatore. Questo elemento della storia è come il modo in cui la nostra mente memorizza le cose. Se stai camminando su una strada e percorri una distanza piuttosto ampia, sarai sicuro che la tua destinazione è un po' più avanti e aumenterai la tua velocità.

Questo elemento dipende dal valore precedente, dalla velocità di apprendimento e da un nuovo parametro chiamato gamma, che controlla questo aggiornamento della cronologia. La regola di aggiornamento sarà qualcosa come w = w – v, dove v è l'elemento della cronologia.

Gradiente accelerato di Nesterov (NAG)

Il GD basato sul momentum ha dato una spinta agli ottimizzatori attualmente utilizzati convergendo ai minimi al più presto, ma ha introdotto un nuovo problema. Questo metodo richiede molte inversioni a U e oscilla dentro e fuori nella valle dei minimi aggiungendo al tempo totale. Il tempo impiegato è ancora troppo inferiore al normale GD, ma anche questo problema ha bisogno di una soluzione e questo viene fatto in NAG.

L'approccio seguito qui era che l'aggiornamento dei parametri fosse effettuato prima con l'elemento della cronologia e quindi fosse calcolata solo la derivata che può spostarla in avanti o indietro. Questo è chiamato approccio look-ahead e ha più senso perché se la curva arriva vicino ai minimi, la derivata può farla muovere lentamente in modo che ci siano meno oscillazioni e quindi risparmi più tempo.

Leggi anche: Tecniche di deep learning che dovresti conoscere

Adagrad

Finora ci stiamo concentrando solo su come i parametri del modello stanno influenzando il nostro allenamento, ma non abbiamo parlato degli iperparametri a cui viene assegnato un valore costante durante l'allenamento. Uno di questi iperparametri importanti è il tasso di apprendimento e variarlo può cambiare il ritmo dell'allenamento.

Per un input di funzionalità sparse in cui la maggior parte dei valori è zero, possiamo permetterci un tasso di apprendimento più elevato che aumenterà il gradiente morente risultante da queste funzionalità sparse. Se abbiamo dati densi, allora possiamo avere un apprendimento più lento.

La soluzione per questo è avere un tasso di apprendimento adattivo che può cambiare in base all'input fornito. L'ottimizzatore Adagrad cerca di offrire questa capacità di adattamento facendo decadere il tasso di apprendimento in proporzione alla cronologia aggiornata dei gradienti.

Significa che quando ci sono aggiornamenti più grandi, l'elemento storico viene accumulato, e quindi riduce il tasso di apprendimento e viceversa. Uno svantaggio di questo approccio è che il tasso di apprendimento decade in modo aggressivo e dopo qualche tempo si avvicina allo zero.

RMS Prop

È un miglioramento dell'ottimizzatore Adagrad. Questo mira a ridurre l'aggressività del tasso di apprendimento prendendo una media esponenziale dei gradienti invece della somma cumulativa dei gradienti quadrati. Il tasso di apprendimento adattivo rimane intatto poiché ora la media esponenziale punirà un tasso di apprendimento maggiore in condizioni in cui ci sono meno aggiornamenti e un tasso più basso in un numero maggiore di aggiornamenti.

Adamo

La stima del momento adattivo combina la potenza di RMSProp (proprio quadrato medio) e GD basato sul momento. Negli ottimizzatori Adam, il potere di momentum GD di contenere la cronologia degli aggiornamenti e il tasso di apprendimento adattivo fornito da RMSProp rende l'ottimizzatore Adam un metodo potente. Introduce anche due nuovi iperparametri beta1 e beta2 che di solito sono mantenuti intorno a 0.9 e 0.99 ma puoi cambiarli in base al tuo caso d'uso.

Da leggere: Regolarizzazione in Deep Learning

Conclusione

In questo articolo, abbiamo esaminato 8 ottimizzatori di deep learning in ordine di facilità di utilizzo e come la limitazione di un ottimizzatore viene superata da quella successiva e così via. Ci sono più modifiche dell'uno o dell'altro ottimizzatore qui menzionato, ma queste sono quelle fondamentali che dovresti considerare prima di passare a soluzioni complesse.

Scegliere un vincitore tra questi è altamente soggettivo per il caso d'uso e il problema con cui hai a che fare, ma si può sicuramente classificare Adam Optimizer in cima a causa della sua combinazione con il concetto di slancio che ha cambiato il modo in cui i parametri del modello dovrebbero essere aggiornati e adattando il cambiamento tasso di apprendimento per diversi scenari consentendo un'elaborazione efficiente di qualsiasi tipo di input.

Una tendenza generale mostra che per la stessa perdita, questi ottimizzatori convergono a diversi minimi locali. Mentre gli ottimizzatori di apprendimento adattivo convergono a minimi più nitidi, altri tipi di tecniche convergono a minimi più piatti, il che è meglio per la generalizzazione. Queste tecniche possono aiutare solo in una certa misura perché, man mano che le reti neurali profonde stanno diventando più grandi, sono necessari metodi più efficienti per ottenere buoni risultati.

Se sei curioso di padroneggiare l'apprendimento automatico e l'intelligenza artificiale, dai una spinta alla tua carriera con un Master of Science in Machine Learning e AI con IIIT-B e Liverpool John Moores University.

In che modo gli ottimizzatori funzionano nel deep learning?

Mentre le reti neurali sono tutto il clamore al momento, un ottimizzatore è qualcosa che è molto più fondamentale per l'apprendimento di una rete neurale. Mentre le reti neurali possono apprendere da sole, senza alcuna conoscenza precedente, un ottimizzatore è un programma che viene eseguito con la rete neurale e le consente di apprendere molto più velocemente. Lo fa, in breve, alterando i parametri della rete neurale in modo tale da rendere l'allenamento con quella rete neurale molto più rapido e semplice. Questi ottimizzatori sono ciò che consente alle reti neurali di funzionare in tempo reale e l'addestramento richiede solo pochi minuti. Senza di loro, la formazione richiederebbe facilmente giorni.

Perché è difficile ottimizzare gli algoritmi di deep learning?

I sistemi di deep learning sono generalmente considerati difficili da ottimizzare, perché sono grandi e complessi, spesso coinvolgono più livelli e non linearità. Gli ottimizzatori devono avere a che fare con un sistema enorme, che non è facile da capire. Alcuni strumenti di deep learning forniscono solo un numero limitato di parametri che possono essere regolati, il che ne limita l'utilità. Esistono, tuttavia, alcuni modi efficaci per ottimizzare i modelli di deep learning e migliorarne la generalizzazione.

Quali sono i diversi ottimizzatori nel deep learning?

Nel deep learning, gli ottimizzatori vengono utilizzati per regolare i parametri per un modello. Lo scopo di un ottimizzatore è regolare i pesi del modello per massimizzare una funzione di perdita. La funzione di perdita viene utilizzata come un modo per misurare le prestazioni del modello. È necessario utilizzare un ottimizzatore durante il training di un modello di rete neurale. Esistono diversi ottimizzatori che possono essere utilizzati con un modello di deep learning. Alcuni degli ottimizzatori più popolari sono RMSprop, momentum e Adam