¿Un descenso de gradiente funciona en Big Data?

Meh

Digamos que tiene un conjunto de datos de 100,000,000 observaciones (como un censo). El descenso del gradiente por lotes no es tan eficiente.

Lee todos los registros (y tendrá que usar memoria de disco para eso) y realiza un paso (actualizar los parámetros al final del ciclo). Esto puede llevar mucho tiempo.

Además, las operaciones de E / S de disco también son una especie de cuello de botella del sistema.

# Pseudocódigo

n = observaciones
k = 0

mientras k <k_max
gradiente

k + = 1


Hay una ligera variación del método llamado “Descenso de gradiente estocástico”.

El algoritmo baraja aleatoriamente las observaciones (para evitar sesgos en el análisis) y procede de manera similar a la normal. Sin embargo, en lugar de actualizar los parámetros al final de cada ciclo, los actualiza después de cada paso. Eso acelera el procedimiento.

El inconveniente es que, bueno, es estocástico. Por lo tanto, converge más lentamente al resultado esperado. Sin embargo, es mucho más eficiente para grandes conjuntos de datos.

# Pseudocódigo

n = observaciones
k = 0

mientras k <k_max
para i en n:
gradiente estocástico
actualizar parámetros
k + = 1

sí, lo hace y puede implementarse a través de SGD