Descenso de gradiente e descenso de gradiente estocástico (SGD) son algoritmos de optimización que se utilizan para minimizar unha función, normalmente asociados coa minimización do erro nun modelo.
As principais diferenzas entre ambos son as seguintes:
Descenso de gradiente (GD)
-
No descenso de gradiente estándar, o algoritmo calcula o gradiente da función de custo utilizando todo o conxunto de datos de adestramento.
-
Actualiza os parámetros do modelo dando pasos proporcionais ao negativo do gradiente de todo o conxunto de datos.
-
Este método garante a converxencia ao mínimo (dadas certas condicións como a convexidade e as taxas de aprendizaxe adecuadas), pero pode ser computacionalmente custoso para grandes conxuntos de datos.
Descenso de gradiente estocástico (SGD)
-
No descenso do gradiente estocástico, o algoritmo actualiza os parámetros do modelo utilizando o gradiente da función de custo para cada exemplo de adestramento individual.
-
Fai actualizacións frecuentes baseadas en lotes únicos ou pequenos de exemplos de adestramento, o que o fai moito máis rápido que o descenso de gradientes para grandes conxuntos de datos.
-
Non obstante, debido ás súas actualizacións ruidosas, SGD ten máis flutuacións e non necesariamente converxe ao mínimo absoluto; converxe a unha zona próxima ao mínimo, oscilando ao seu redor.
Cando usar un sobre o outro:
-
Gradient Descent (GD): é adecuado cando o conxunto de datos é relativamente pequeno e pode caber na memoria. Se a función de custo é suave e ben comportada, GD pode converxer de forma eficiente ao mínimo.
-
Descenso de gradientes estocásticos (SGD): é preferible cando se tratan con conxuntos de datos grandes onde calcular os gradientes para todo o conxunto de datos resulta caro computacionalmente. Tamén é útil en escenarios nos que a función de custo ten moitos mínimos locais, xa que o ruído de SGD nas actualizacións pode axudar a escapar de mínimos locais pouco profundos. Ademais, SGD utilízase habitualmente no adestramento de redes neuronais debido aos seus amplos conxuntos de datos e espazos de parámetros de gran dimensión.
Ademais, adoitan usarse na práctica variacións como descenso de gradiente de mini-lote, que equilibra os beneficios tanto de GD como de SGD ao considerar un subconxunto de datos para cada actualización. A elección entre estes algoritmos depende a miúdo dos recursos computacionais, do tamaño do conxunto de datos e das características específicas do problema.