AdaGrad
Um dos algoritmos mais populares para otimização em machine learning e deep learning é o gradiente descendente. Ele é usado para treinar modelos de machine learning.
Tipos de gradiente descendente
Atualmente, existem três tipos principais de gradiente descendente usados em algoritmos de machine learning e deep learning.
Gradiente descendente em batch
O gradiente descendente em batch é o mais simples. Ele calcula o erro para cada dado no conjunto de dados de treinamento, mas o modelo só é atualizado depois de todos os dados de treinamento terem sido computados.
Gradiente descendente estocástico
O gradiente descendente estocástico calcula o erro e atualiza o modelo para cada dado no conjunto de dados de treinamento.
Gradiente descendente em minibatch
Em vez de computar todos os dados de treinamento, o gradiente descendente em minibatch agrega uma pequena quantidade de dados com base no tamanho do batch e atualiza cada batch. O gradiente descendente estocástico é um método comum de otimização. É conceitualmente simples e, muitas vezes, pode ser implementado de forma eficiente. No entanto, requer ajuste manual de seus parâmetros (parâmetros de tamanho de etapa). Várias opções foram propostas para automatizar esse ajuste, uma delas é o AdaGrad. Enquanto os métodos de subgradiente estocástico padrão seguem principalmente um esquema processual predeterminado que ignora os recursos de dados observados, os algoritmos do AdaGrad incorporam de forma dinâmica informações da geometria dos dados observados em iterações anteriores para realizar um aprendizado baseado em gradiente mais informativo. O AdaGrad está disponível em duas versões. A versão utilizada na prática, Diagonal AdaGrad, tem como principal característica a manutenção da taxa de aprendizado, aplicando uma taxa de aprendizado por dimensão. A segunda versão, conhecida como Full AdaGrad, aplica uma taxa de aprendizado por direção (como a matriz completa do PSD). Adaptive Gradient Algorithm (AdaGrad) é um algoritmo de otimização baseado em gradiente. A taxa de aprendizado é aplicada aos parâmetros componente a componente, incorporando informações sobre observações passadas. Ele usa mais atualizações para parâmetros associados a recursos de baixa frequência (como alta taxa de aprendizado) e menos atualizações para recursos de alta frequência (baixa taxa de aprendizado). O pequeno tamanho de atualização do Adagrad o torna adequado para o processamento de dados esparsos (NLP e reconhecimento de imagem). Cada parâmetro tem sua própria taxa de aprendizado, o que melhora a resolução de problemas com gradientes esparsos.
Vantagens de usar o AdaGrad
- Não há necessidade de ajuste manual da taxa de aprendizado;
- Convergência mais rápida e mais robusta em comparação com o gradiente descendente estocástico simples quando os pesos são escalados de forma diferente;
- Menos sensível ao tamanho da etapa mestre.