O artigo de Adam diz: "... muitas funções objetivas são compostas de uma soma de subfunções avaliadas em diferentes subamostras de dados; nesse caso, a otimização pode ser mais eficiente, tomando etapas de gradiente em subfunções individuais ..." Aqui, elas apenas significa que a função objetivo é uma soma de erros em relação aos exemplos de treinamento, e o treinamento pode ser realizado em exemplos ou minibatches individuais. É o mesmo que na descida do gradiente estocástico (SGD), que é mais eficiente para problemas de grande escala do que o treinamento em lote, porque as atualizações de parâmetros são mais frequentes.
Quanto ao porquê de Adam trabalhar, ele usa alguns truques.
Um desses truques é o momento, que pode dar uma convergência mais rápida. Imagine uma função objetiva que tem a forma de um desfiladeiro longo e estreito que gradualmente se inclina para o mínimo. Digamos que desejamos minimizar essa função usando a descida do gradiente. Se começarmos a partir de algum ponto na parede do desfiladeiro, o gradiente negativo apontará na direção da descida mais íngreme, ou seja, principalmente em direção ao chão do desfiladeiro. Isso ocorre porque as paredes do canyon são muito mais íngremes do que a inclinação gradual do canyon em direção ao mínimo. Se a taxa de aprendizado (ou seja, tamanho do degrau) for pequena, poderemos descer até o fundo do cânion e segui-lo até o mínimo. Mas, o progresso seria lento. Poderíamos aumentar a taxa de aprendizado, mas isso não mudaria a direção das etapas. Nesse caso, ultrapassaríamos o chão do desfiladeiro e acabaríamos na parede oposta. Repetiríamos então esse padrão, oscilando de parede a parede enquanto progredíamos lentamente em direção ao mínimo. Momentum pode ajudar nesta situação.
Momentum simplesmente significa que uma fração da atualização anterior é adicionada à atualização atual, de modo que atualizações repetidas em um determinado composto de direção; nós construímos impulso, movendo-nos cada vez mais rápido nessa direção. No caso do canyon, ganharíamos impulso na direção do mínimo, pois todas as atualizações têm um componente nessa direção. Por outro lado, mover-se para frente e para trás através das paredes do cânion envolve inverter constantemente a direção; portanto, o momento ajudaria a amortecer as oscilações nessas direções.
Outro truque que Adam usa é selecionar adaptativamente uma taxa de aprendizado separada para cada parâmetro. Parâmetros que normalmente receberiam atualizações menores ou menos frequentes recebem atualizações maiores com Adam (o inverso também é verdadeiro). Isso acelera o aprendizado nos casos em que as taxas de aprendizado apropriadas variam de acordo com os parâmetros. Por exemplo, em redes profundas, os gradientes podem se tornar pequenos nas camadas iniciais e faz sentido aumentar as taxas de aprendizado para os parâmetros correspondentes. Outro benefício dessa abordagem é que, como as taxas de aprendizado são ajustadas automaticamente, o ajuste manual se torna menos importante. O SGD padrão exige um ajuste cuidadoso (e possivelmente um ajuste on-line) das taxas de aprendizado, mas isso é menos verdadeiro com Adam e métodos relacionados. Ainda é necessário selecionar hiperparâmetros,
Métodos relacionados :
O momento é frequentemente usado com o SGD padrão. Uma versão aprimorada é chamada momento de Nesterov ou gradiente acelerado de Nesterov. Outros métodos que usam taxas de aprendizado ajustadas automaticamente para cada parâmetro incluem: Adagrad, RMSprop e Adadelta. RMSprop e Adadelta resolvem um problema com o Adagrad que pode causar a interrupção do aprendizado. Adam é semelhante ao RMSprop com impulso. Nadam modifica Adam para usar o momento de Nesterov em vez do momento clássico.
Referências :
Kingma e Ba (2014) . Adam: Um método para otimização estocástica.
Goodfellow et al. (2016) . Aprendizado profundo, capítulo 8.
Slides do curso de Geoff Hinton
Dozat (2016) . Incorporando Nesterov Momentum em Adam.