A descida de gradiente e a descida de gradiente estocástica (SGD) são algoritmos de otimização utilizados para minimizar uma função, normalmente associada à minimização do erro num modelo.
As principais diferenças entre os dois são as seguintes:
Descida de gradiente (GD)
-
Na descida de gradiente padrão, o algoritmo calcula o gradiente da função de custo utilizando todo o conjunto de dados de treino.
-
Actualiza os parâmetros do modelo através de passos proporcionais ao negativo do gradiente de todo o conjunto de dados.
-
Este método garante a convergência para o mínimo (dadas certas condições como a convexidade e taxas de aprendizagem adequadas) mas pode ser computacionalmente dispendioso para grandes conjuntos de dados.
Descida de gradiente estocástica (SGD)
-
Na descida gradiente estocástica, o algoritmo actualiza os parâmetros do modelo utilizando o gradiente da função de custo para cada exemplo de treino individual.
-
Faz actualizações frequentes com base em exemplos de treino únicos ou em pequenos lotes, o que o torna muito mais rápido do que a descida de gradiente para grandes conjuntos de dados.
-
No entanto, devido às suas actualizações com ruído, o SGD tem mais flutuações e não converge necessariamente para o mínimo absoluto
Quando utilizar um em vez do outro:
-
Descida de gradiente (GD): É adequado quando o conjunto de dados é relativamente pequeno e pode caber na memória. Se a função de custo for suave e bem comportada, o GD pode convergir eficientemente para o mínimo.
-
Descida de gradiente estocástica (SGD): É preferível quando se lida com grandes conjuntos de dados em que o cálculo de gradientes para todo o conjunto de dados se torna computacionalmente dispendioso. Também é útil em cenários em que a função de custo tem muitos mínimos locais, uma vez que o ruído do SGD nas actualizações pode ajudar a escapar a mínimos locais pouco profundos. Além disso, o SGD é normalmente utilizado no treino de redes neurais devido aos seus vastos conjuntos de dados e espaços de parâmetros de elevada dimensão.
Além disso, variações como a descida de gradiente em mini-batch, que equilibra as vantagens do GD e do SGD ao considerar um subconjunto dos dados para cada atualização, são frequentemente utilizadas na prática. A escolha entre estes algoritmos depende frequentemente dos recursos computacionais, da dimensão do conjunto de dados e das características específicas do problema.