Die Mathematik von AdaGrad und AdaDelta verstehen

8

Ich habe einige Modelle für ein Projekt erstellt, aber ich kann mich nicht mit der Mathematik der Adagrad- und Adadelta-Algorithmen befassen.

Ich verstehe, wie Vanille-Gradienten-Abstieg funktioniert, und ich habe Code geschrieben, damit er erfolgreich funktioniert.

Ich wäre dankbar, wenn mir jemand diese beiden Dinge erklären oder eine Ressource bereitstellen würde, um sie zu verstehen.

Malaiische Hazarika
quelle
1
Gute Erklärung in quora.com/…
mico

Antworten:

6

In Bezug auf Ressourcen:



Hier sind einige zentrale Zitate aus ADADELTA: Eine adaptive Lernratenmethode , zusammen mit einigen Beispielen und kurzen Erklärungen:

ADAGRAD

Die Aktualisierungsregel für ADAGRAD lautet wie folgt: Hier berechnet der Nenner diel2-Norm aller vorherigen Gradienten pro Dimension und η ist eine globale Lernrate, die von allen Dimensionen geteilt wird. Während es die handabgestimmte globale Lernrate gibt, hat jede Dimension ihre eigene dynamische Rate.

Δxt=ητ=1tgτ2gt(5)
l2

Dh wenn die Gradienten in den ersten drei Schritten , dann: Δ x 3 = - ηg1=(a1b1c1),g2=(a2b2c2),g3=(a3b3c3) Hier ist leichter zu erkennen, dass jede Dimension wie versprochen ihre eigene dynamische Lernrate hat.

Δx3=ητ=13gτ2g3=η(a12+a22+a32b12+b22+b32c12+c22+c32)(a3b3c3)Δx3=(ηa12+a22+a32a3ηb12+b22+b32b3ηc12+c22+c32c3)

Probleme von ADAGRAD, denen ADADELTA entgegenzuwirken versucht

Die in diesem Artikel vorgestellte Idee wurde von ADAGRAD abgeleitet, um die beiden Hauptnachteile der Methode zu verbessern: 1) den kontinuierlichen Rückgang der Lernraten während des Trainings und 2) die Notwendigkeit einer manuell ausgewählten globalen Lernrate.

Der zweite Nachteil ist ziemlich selbsterklärend.


g2
t>2τ=1tgτ2g2g2gtΔxt
Δxt

ADADELTA

w

wtE[g2]t

E[g2]t=ρE[g2]t1+(1ρ)gt2(8)
ρRMSt
RMS[g]t=E[g2]t+ϵ(9)
ϵ

RMS

E[Δx2]t1=ρE[Δx2]t2+(1ρ)Δxt12
RMS[Δx]t1=E[Δx2]t1+ϵ

ΔxtRMSwΔx

Δxt=RMS[Δx]t1RMS[g]tgt(14)
ϵRMSΔx0=0

rgr=(arbrcr)Δxr=(irjrkr)

Δxt=RMS[Δx]t1RMS[g]tgt=E[Δx2]t1+ϵE[g2]t+ϵgt=ρE[Δx2]t2+(1ρ)Δxt12+ϵρE[g2]t1+(1ρ)gt2+ϵgt=ρ(ρE[Δx2]t3+(1ρ)Δxt22)+(1ρ)Δxt12+ϵρ(ρE[g2]t2+(1ρ)gt12)+(1ρ)gt2+ϵgt=ρ2E[Δx2]t3+p1(1ρ)Δxt22+p0(1ρ)Δxt12+ϵρ2E[g2]t2+p1(1ρ)gt12+p0(1ρ)gt2+ϵgt=ρt1E[Δx2]0+r=1t1ρt1r(1ρ)Δxr2+ϵρt1E[g2]1+r=2tρtr(1ρ)gr2+ϵgt

ρ is a decay constant, so we choose it such that ρ(0,1) (typically ρ0.9).
Therefore, multiplying by a high power of ρ results in a very small number.
Let w be the lowest exponent such that we deem the product of multiplying sane values by ρw negligible.
Now, we can approximate Δxt by dropping negligible terms:

Δxtr=twt1ρt1r(1ρ)Δxr2+ϵr=t+1wtρtr(1ρ)gr2+ϵgt=r=twt1ρt1r(1ρ)(ir2jr2kr2)+ϵr=t+1wtρtr(1ρ)(ar2br2cr2)+ϵ(atbtct)Δxt(r=twt1ρt1r(1ρ)ir2+ϵr=t+1wtρtr(1ρ)ar2+ϵatr=twt1ρt1r(1ρ)jr2+ϵr=t+1wtρtr(1ρ)br2+ϵbtr=twt1ρt1r(1ρ)kr2+ϵr=t+1wtρtr(1ρ)cr2+ϵct)
Oren Milman
quelle
1

From quora you'll find a more complete guide, but main ideas are that AdaGrad tries to taggle these problems in gradient learning rate selection in machine learning:

1 Manual selection of the learning rate η.

2 The gradient vector gt is scaled uniformly by a scalar learning rate η.

3 The learning rate η remains constant throughout the learning process.

It resolves concerns 2 and 3 simply by dividing each current gradient component by an L2 norm of past observed gradients for that particular component.

It has in itself the following issues:

1 Continually decaying learning rate η.

2 Manual selection of the learning rate η.

AdaDelta resolves AdaGrad concern 1 by summing the gradients only within a certain window W.

Concern 2 solution relates to mismatch in gradient units and thus

the actual accumulation process is implemented using a concept from momentum.

The last calculation needs understanding on momentum theory and it was shortly explained there in article.

My idea was to give the main causes behind what was intended, maybe that makes reading easier.

mico
quelle