Compreendendo a matemática do AdaGrad e AdaDelta

8

Eu tenho construído alguns modelos para um projeto, mas não consigo entender a matemática dos algoritmos Adagrad e Adadelta.

Entendo como funciona a descida do gradiente de baunilha e escrevi um código para fazê-lo funcionar com êxito.

Ficarei grato se alguém me explicar essas duas coisas ou fornecer algum recurso para entendê-las.

Malaio Hazarika
fonte
1
Boa explicação em quora.com/…
mico

Respostas:

6

No que diz respeito aos recursos:



Aqui estão algumas citações centrais de ADADELTA: Um método de taxa de aprendizado adaptável , juntamente com alguns exemplos e explicações breves:

ADAGRAD

A regra de atualização para o ADAGRAD é a seguinte:

Δxt=ητ=1tgτ2gt(5)
Aqui o denominador calcula o l2norma de todos os gradientes anteriores em uma base por dimensão e η é uma taxa de aprendizado global compartilhada por todas as dimensões.
Embora exista a taxa de aprendizado global ajustada manualmente, cada dimensão tem sua própria taxa dinâmica.

Ou seja, se os gradientes nas três primeiras etapas são g1=(a1b1c1),g2=(a2b2c2),g3=(a3b3c3), então:

Δx3=ητ=13gτ2g3=η(a12+a22+a32b12+b22+b32c12+c22+c32)(a3b3c3)Δx3=(ηa12+a22+a32a3ηb12+b22+b32b3ηc12+c22+c32c3)
Aqui é mais fácil ver que cada dimensão tem sua própria taxa de aprendizado dinâmico, conforme prometido.

Problemas do ADAGRAD que o ADADELTA tenta combater

A idéia apresentada neste artigo foi derivada do ADAGRAD para aprimorar as duas principais desvantagens do método: 1) a decadência contínua das taxas de aprendizado durante o treinamento e 2) a necessidade de uma taxa de aprendizado global selecionada manualmente.

A segunda desvantagem é bastante auto-explicativa.

Aqui está um exemplo de quando a primeira desvantagem é um problema:
considere um caso em que o valor absoluto de cada componente deg2é muito maior que o valor absoluto do respectivo componente do gradiente em qualquer outra etapa.
Para qualquert>2, sustenta que todos os componentes de τ=1tgτ2 é maior que o valor absoluto do respectivo componente de g2. Mas o valor absoluto de cada componente deg2 é muito maior que o valor absoluto do respectivo componente de gt, e entao Δxté muito pequeno.
Além disso, à medida que o algoritmo progride, ele se aproxima do mínimo, diminuindo o gradiente eΔxttorna-se cada vez menor.
Assim, pode ser que o algoritmo praticamente pare antes de atingir o mínimo.

ADADELTA

Em vez de considerar todos os gradientes calculados, o ADADELTA considera apenas o último w gradientes.

Desde o armazenamento wComo os gradientes quadrados anteriores são ineficientes, nossos métodos implementam esse acúmulo como uma média exponencialmente decadente dos gradientes quadrados. Suponha no momentot essa média atual é E[g2]t então calculamos:

E[g2]t=ρE[g2]t-1+(1-ρ)gt2(8)
Onde ρé uma constante de decaimento [...]. Como exigimos a raiz quadrada dessa quantidade nas atualizações de parâmetros, isso se torna efetivamente oRMS dos gradientes quadrados anteriores até o momento t:
RMS[g]t=E[g2]t+ϵ(9)
onde uma constante ϵ é adicionado para melhor condição do denominador

(RMSsignifica Root Mean Square .)

Similarmente:

E[Δx2]t-1=ρE[Δx2]t-2+(1-ρ)Δxt-12
RMS[Δx]t-1=E[Δx2]t-1+ϵ
E finalmente:

[...] aproximado Δxt calculando o decaimento exponencial RMS sobre uma janela de tamanho W dos anteriores Δx para dar o método ADADELTA:

Δxt=-RMS[Δx]t-1RMS[g]tgt(14)
onde a mesma constante ϵ é adicionado ao numerador RMStambém. Essa constante serve ao propósito de iniciar a primeira iteração em queΔx0 0=0 0e para garantir que o progresso continue sendo feito, mesmo que as atualizações anteriores se tornem pequenas.
[...]
O numerador atua como um termo de aceleração, acumulando gradientes anteriores ao longo de uma janela de tempo [...]

Ou seja, se o gradiente na etapa r é gr=(umarbrcr) e Δxr=(Eurjrkr), então:

Δ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 0(1-ρ)Δxt-12+ϵρ2E[g2]t-2+p1(1-ρ)gt-12+p0 0(1-ρ)gt2+ϵgt=-ρt-1E[Δx2]0 0+r=1t-1ρt-1-r(1-ρ)Δxr2+ϵρt-1E[g2]1+r=2tρt-r(1-ρ)gr2+ϵgt

ρ é uma constante de decaimento, então escolhemos de tal forma que ρ(0 0,1) (tipicamente ρ0,9)
Portanto, multiplicando por um alto poder deρresulta em um número muito pequeno.
DeixeiW seja o expoente mais baixo, de modo que consideremos o produto da multiplicação de valores sãos por ρWinsignificante.
Agora, podemos aproximarΔxt eliminando termos insignificantes:

Δ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-ρ)(Eur2jr2kr2)+ϵr=t+1-Wtρt-r(1-ρ)(umar2br2cr2)+ϵ(umatbtct)Δxt-(r=t-Wt-1ρt-1-r(1-ρ)Eur2+ϵr=t+1-Wtρt-r(1-ρ)umar2+ϵumatr=t-Wt-1ρt-1-r(1-ρ)jr2+ϵr=t+1-Wtρt-r(1-ρ)br2+ϵbtr=t-Wt-1ρt-1-r(1-ρ)kr2+ϵr=t+1-Wtρt-r(1-ρ)cr2+ϵct)
Oren Milman
fonte
1

No quora, você encontrará um guia mais completo, mas as principais idéias são que o AdaGrad tenta marcar esses problemas na seleção da taxa de aprendizado por gradiente no aprendizado de máquina:

1 Seleção manual da taxa de aprendizado η.

2 O vetor gradiente gt é escalado uniformemente por uma taxa de aprendizado escalar η.

3 A taxa de aprendizado η permanece constante durante todo o processo de aprendizado.

Ele resolve as preocupações 2 e 3 simplesmente dividindo cada componente de gradiente atual por uma norma L2 de gradientes observados no passado para esse componente em particular.

Possui em si os seguintes problemas:

1 Taxa de aprendizado em decadência contínua η.

2 Seleção manual da taxa de aprendizado η.

O AdaDelta resolve a preocupação 1 do AdaGrad somando os gradientes apenas dentro de uma determinada janela W.

A solução Concern 2 refere-se à incompatibilidade em unidades de gradiente e, portanto,

o processo de acumulação real é implementado usando um conceito de momento.

O último cálculo precisa ser entendido sobre a teoria do momento e logo foi explicado no artigo.

Minha idéia era fornecer as principais causas por trás do que se pretendia, talvez isso facilite a leitura.

mico
fonte