Comprensione della matematica di AdaGrad e AdaDelta


8

Ho creato alcuni modelli per un progetto, ma non riesco a avvolgere la testa attorno alla matematica degli algoritmi di Adagrad e Adadelta.

Capisco come funziona la discesa sfumata alla vaniglia e ho scritto un codice per farlo funzionare con successo.

Le sarei grato se qualcuno mi spiegasse queste due cose o fornisse delle risorse per capirle.


1
Buona spiegazione in quora.com/…
mico,

Risposte:


6

Per quanto riguarda le risorse:



Ecco alcune citazioni centrali di ADADELTA: un metodo di tasso di apprendimento adattivo , insieme ad alcuni esempi e brevi spiegazioni:

ADAGRAD

La regola di aggiornamento per ADAGRAD è la seguente:

ΔXt=-ηΣτ=1tgτ2gt(5)
Qui il denominatore calcola il l2norma di tutti i gradienti precedenti in base alla dimensione e η è un tasso di apprendimento globale condiviso da tutte le dimensioni.
Mentre esiste un tasso di apprendimento globale sintonizzato a mano, ogni dimensione ha un proprio tasso dinamico.

Vale a dire se i gradienti nei primi tre passaggi sono g1=(un'1B1c1),g2=(un'2B2c2),g3=(un'3B3c3), poi:

ΔX3=-ηΣτ=13gτ2g3=-η(un'12+un'22+un'32B12+B22+B32c12+c22+c32)(un'3B3c3)ΔX3=-(ηun'12+un'22+un'32un'3ηB12+B22+B32B3ηc12+c22+c32c3)
Qui è più facile vedere che ogni dimensione ha il suo tasso di apprendimento dinamico, come promesso.

Problemi di ADAGRAD che ADADELTA tenta di contrastare

L'idea presentata in questo documento è stata derivata da ADAGRAD al fine di migliorare i due principali svantaggi del metodo: 1) il continuo decadimento dei tassi di apprendimento durante l'addestramento e 2) la necessità di un tasso di apprendimento globale selezionato manualmente.

Il secondo inconveniente è abbastanza autoesplicativo.

Ecco un esempio di quando il primo inconveniente è un problema: si
consideri un caso in cui il valore assoluto di ciascun componente dig2è molto più grande del valore assoluto del rispettivo componente del gradiente in qualsiasi altro passaggio.
Per ognit>2, sostiene che ogni componente di Στ=1tgτ2 è maggiore del valore assoluto del rispettivo componente di g2. Ma il valore assoluto di ogni componente dig2 è molto più grande del valore assoluto del rispettivo componente di gt, e così ΔXtè molto piccolo.
Inoltre, man mano che l'algoritmo avanza, si avvicina al minimo, quindi il gradiente si riduce e così viaΔXtdiventa sempre più piccolo.
Pertanto, potrebbe essere che l'algoritmo si fermi praticamente prima di raggiungere un minimo.

ADADELTA

Invece di considerare tutti i gradienti calcolati, ADADELTA considera solo l'ultimo w gradienti.

Dal momento della memorizzazione wi gradienti quadrati precedenti sono inefficienti, i nostri metodi implementano questo accumulo come media esponenzialmente decadente dei gradienti quadrati. Assumi al momentot questa media corrente è E[g2]t quindi calcoliamo:

E[g2]t=ρE[g2]t-1+(1-ρ)gt2(8)
dove ρè una costante di decadimento [...]. Dato che abbiamo bisogno della radice quadrata di questa quantità negli aggiornamenti dei parametri, questa diventa effettivamente laRMS dei gradienti quadrati precedenti fino a tempo t:
RMS[g]t=E[g2]t+ε(9)
dove una costante ε viene aggiunto per migliorare la condizione del denominatore

(RMSsta per Root Mean Square .)

Allo stesso modo:

E[ΔX2]t-1=ρE[ΔX2]t-2+(1-ρ)ΔXt-12
RMS[ΔX]t-1=E[ΔX2]t-1+ε
E infine:

[...] approssimativo ΔXt calcolando il decadimento esponenziale RMS sopra una finestra di dimensioni w del precedente ΔX per dare il metodo ADADELTA:

ΔXt=-RMS[ΔX]t-1RMS[g]tgt(14)
dove la stessa costante ε viene aggiunto al numeratore RMSanche. Questa costante serve allo scopo sia di iniziare la prima iterazione in cuiΔX0=0e per garantire che continuino a essere fatti progressi anche se gli aggiornamenti precedenti diventano piccoli.
[...]
Il numeratore agisce come un termine di accelerazione, accumulando gradienti precedenti in una finestra di tempo [...]

Cioè se il gradiente al passo r è gr=(un'rBrcr) e ΔXr=(iorjrKr), poi:

ΔXt=-RMS[ΔX]t-1RMS[g]tgt=-E[ΔX2]t-1+εE[g2]t+εgt=-ρE[ΔX2]t-2+(1-ρ)ΔXt-12+ερE[g2]t-1+(1-ρ)gt2+εgt=-ρ(ρE[ΔX2]t-3+(1-ρ)ΔXt-22)+(1-ρ)ΔXt-12+ερ(ρE[g2]t-2+(1-ρ)gt-12)+(1-ρ)gt2+εgt=-ρ2E[ΔX2]t-3+p1(1-ρ)ΔXt-22+p0(1-ρ)ΔXt-12+ερ2E[g2]t-2+p1(1-ρ)gt-12+p0(1-ρ)gt2+εgt=-ρt-1E[ΔX2]0+Σr=1t-1ρt-1-r(1-ρ)ΔXr2+ερt-1E[g2]1+Σr=2tρt-r(1-ρ)gr2+εgt

ρ è una costante di decadimento, quindi la scegliamo tale ρ(0,1) (tipicamente ρ0.9).
Pertanto, moltiplicando per un alto potere diρrisulta in un numero molto piccolo.
Permetterew essere l'esponente più basso in modo tale da considerare il prodotto moltiplicando i valori sani per ρwtrascurabile.
Ora possiamo approssimareΔXt rilasciando termini trascurabili:

ΔXt-Σr=t-wt-1ρt-1-r(1-ρ)ΔXr2+εΣr=t+1-wtρt-r(1-ρ)gr2+εgt=-Σr=t-wt-1ρt-1-r(1-ρ)(ior2jr2Kr2)+εΣr=t+1-wtρt-r(1-ρ)(un'r2Br2cr2)+ε(un'tBtct)ΔXt-(Σr=t-wt-1ρt-1-r(1-ρ)ior2+εΣr=t+1-wtρt-r(1-ρ)un'r2+εun'tΣr=t-wt-1ρt-1-r(1-ρ)jr2+εΣr=t+1-wtρt-r(1-ρ)Br2+εBtΣr=t-wt-1ρt-1-r(1-ρ)Kr2+εΣr=t+1-wtρt-r(1-ρ)cr2+εct)

1

Da quora troverai una guida più completa, ma le idee principali sono che AdaGrad cerca di risolvere questi problemi nella selezione del tasso di apprendimento del gradiente nell'apprendimento automatico:

1 Selezione manuale della frequenza di apprendimento η.

2 Il vettore gradiente gt viene ridimensionato uniformemente da una velocità di apprendimento scalare η.

3 Il tasso di apprendimento η rimane costante durante tutto il processo di apprendimento.

Risolve i problemi 2 e 3 semplicemente dividendo ogni componente del gradiente corrente per una norma L2 dei gradienti osservati in passato per quel particolare componente.

Ha in sé i seguenti problemi:

1 Tasso di apprendimento in continuo decadimento η.

2 Selezione manuale della frequenza di apprendimento η.

AdaDelta risolve la preoccupazione 1 di AdaGrad sommando i gradienti solo all'interno di una determinata finestra W.

La soluzione per quanto riguarda 2 riguarda la mancata corrispondenza in unità di gradiente e quindi

l'attuale processo di accumulo viene implementato usando un concetto di momentum.

L'ultimo calcolo deve essere compreso sulla teoria del momentum ed è stato brevemente spiegato in questo articolo.

La mia idea era quella di dare le cause principali dietro ciò che era previsto, forse per facilitare la lettura.

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.