Portanto, a descida do gradiente com base no momento funciona da seguinte maneira:
onde é a atualização de peso anterior e g é o gradiente atual em relação aos parâmetros p , l r é a taxa de aprendizado e s e l f . m o m e n t u m é uma constante.
e a descida acelerada do gradiente de Nesterov funcionam da seguinte maneira:
que é equivalente a:
ou
fonte: https://github.com/fchollet/keras/blob/master/keras/optimizers.py
Então, para mim, parece que a descida acelerada do gradiente de Nesterov apenas dá mais peso ao termo lr * g do que o termo permeável de mudança de peso m (comparado ao momento antigo simples). Esta interpretação está correta?
optimization
gradient-descent
cidra de maçã
fonte
fonte
Respostas:
A resposta de Arech sobre o momento de Nesterov está correta, mas o código basicamente faz a mesma coisa. Portanto, a esse respeito, o método Nesterov atribui mais peso ao termo e menos peso ao termo v .l r ⋅ g v
Para ilustrar por que a implementação de Keras está correta, emprestarei o exemplo de Geoffrey Hinton .
O método de Nesterov adota a abordagem "jogo-> correção".v′=m⋅v−lr⋅∇(w+m⋅v)
w′=w+v′
m⋅v −lr⋅∇(w+m⋅v) (onde devemos realmente deslocar a). ∇ ( ⋅ ) é a função de gradiente.m⋅v−lr⋅∇(w+m⋅v) ∇(⋅)
w ′ = w + v ′ O vetor marrom é m ⋅ v (jogo / salto), o vetor vermelho é - l r ⋅ ∇ ( w + m ⋅ v ) (correção), e o vetor verde é m ⋅ v - l r ⋅
O código é diferente porque ele se move pelo vector integral em vez do vector verde , como o método Nesterov somente requer a avaliação , em vez de ∇ ( w ) . Portanto, em cada etapa, queremos∇(w+m⋅v)=:g ∇(w)
O código de Keras escrito para abreviação é , e fazemos algumas contasp′=p+m⋅(m⋅v−lr⋅g)−lr⋅g
fonte
Parece-me que a pergunta do OP já foi respondida, mas eu tentaria dar outra explicação (esperançosamente intuitiva) sobre o momento e a diferença entre o Momento Clássico (CM) e o Gradiente Acelerado de Nesterov (NAG).
tl; dr
Basta pular para a imagem no final.
O raciocínio de NAG_ball é outra parte importante, mas não tenho certeza de que seria fácil entender sem todo o resto.
Em outras notícias, ultimamente essas duas bolas selvagens sencientes apareceram:
Acontece (de acordo com o comportamento observado das bolas e de acordo com o artigo Sobre a importância da inicialização e do momento no aprendizado profundo , que descreve o CM e o NAG na seção 2) que cada bola se comporta exatamente como um desses métodos , e assim os chamaríamos de "CM_ball" e "NAG_ball":
(NAG_ball está sorrindo, porque ele assistiu recentemente ao final da Palestra 6c - O método do momento, de Geoffrey Hinton com Nitish Srivastava e Kevin Swersky , e assim acredita mais do que nunca que seu comportamento leva a encontrar um mínimo mais rápido.)
Aqui está como as bolas se comportam:
O raciocínio de NAG_ball
Portanto, devo considerar a situação como se eu já tivesse dado meu Momentum Jump e estou prestes a fazer meu Slope Jump.
Apêndice 1 - Uma demonstração do raciocínio de NAG_ball
Neste gif hipnotizante de Alec Radford , você pode ver o NAG apresentando um desempenho sem dúvida melhor que o CM ("Momentum" no gif).
(O mínimo é onde está a estrela e as curvas são linhas de contorno . Para obter uma explicação sobre as linhas de contorno e por que elas são perpendiculares ao gradiente, consulte os vídeos 1 e 2 do lendário 3Blue1Brown .)
Uma análise de um momento específico demonstra o raciocínio de NAG_ball:
Apêndice 2 - coisas / termos que inventei (pelo bem da intuição)
Apêndice 3 - termos que eu não inventei
fonte
Acho que não.
Há uma boa descrição das propriedades de Nesterov Momentum (também conhecido como Nesterov Accelerated Gradient) em, por exemplo, Sutskever, Martens et al. "Sobre a importância da inicialização e do momento na aprendizagem profunda" 2013 .
A principal diferença está no momento clássico: você primeiro corrige sua velocidade e depois dá um grande passo de acordo com essa velocidade (e depois repete), mas no momento de Nesterov, você primeiro dá um passo na direção da velocidade e depois faz uma correção em um vetor de velocidade no novo local (repita).
ou seja, momento clássico:
Enquanto o momento de Nesterov é este:
Na verdade, isso faz uma enorme diferença na prática ...
fonte
Adicionado: um curso de Stanford sobre redes neurais, cs231n , fornece mais uma forma das etapas:
Aqui
v
está a velocidade, também conhecida como etapa, ou estado, emu
é um fator de momento, normalmente 0,9. (v
,x
elearning_rate
pode ser vetores muito longos; com numpy, o código é o mesmo.)v
na primeira linha há descida gradiente com momento;v_nesterov
extrapola, continua. Por exemplo, com mu = 0,9,A descrição a seguir tem três termos: o
termo 1 por si só é descida em gradiente simples (GD),
1 + 2 gera GD + momento,
1 + 2 + 3 gera Nesterov GD.
O último termo é a diferença entre GD com momento simples e GD com momento Nesterov.
fonte