El Descenso de gradiente estocástico (SGD) y las numerosas variaciones en él son los optimizadores más comunes utilizados para resolver el modelo de regresión y clasificación desde los modelos de regresión logística de una sola capa hasta el aprendizaje profundo.
La alternativa al SGD es el descenso de gradiente estándar o cualquier ligera modificación del mismo. Con un optimizador GD estándar, los pesos de una red se actualizan después de iterar a través de todos los datos. Su función de costo se vería así:
(theta es la matriz de pesos, y es el vector de etiquetas y x es la matriz de entradas. Alpha es la tasa de aprendizaje, (i) indexa las filas de una matriz ym es el número de muestras de entrenamiento)
- Cómo detectar patrones de respuesta de opción múltiple en R
- ¿Será un buen paso cambiar de carrera de pruebas de software a científico de datos con R, Tableau y sobresalir después de 9 años de experiencia?
- ¿La capacitación y la certificación de Big Data ayudarán a impulsar mi carrera como desarrollador de Java?
- ¿La ciencia de datos requiere más competencias que la ingeniería de software?
- Cómo aprender análisis de big data fácilmente desde un entorno que no sea de TI
Si tiene más de unos pocos miles de muestras de entrenamiento, esto es increíblemente lento. Usted iteraría sobre m muestras de entrenamiento cada iteración del algoritmo.
En un proceso estocástico, los pesos se actualizan después de iterar sobre cada lote de n muestras de entrenamiento. De esta manera, el modelo ML da pasos más rápidos y pequeños hacia el óptimo local. Se ha demostrado que esto funciona mucho, mucho más rápido que el descenso de gradiente estándar. Por ejemplo, un modelo de regresión podría calcular el error medio al cuadrado para 50 muestras de entrenamiento y tomar un paso de tamaño alfa multiplicado por el gradiente hacia el mínimo. Este paso puede ser menos “correcto” y más pequeño que un paso de descenso de gradiente, pero con un conjunto de datos de tamaño 100,000, será 2000 veces más rápido.
También hay formas de mejorar la precisión de SGD. Sebastian Ruder tiene una gran publicación de blog que describe todo esto, incluida una descripción de SGD básico sin campanas ni silbatos: una descripción general de los algoritmos de optimización de descenso de gradiente
Algunos de estos ajustes al SGD son un término momentáneo y una tasa de aprendizaje en decadencia. Un término de impulso multiplica una versión a escala del gradiente del último paso por el gradiente actual en el paso i. Una tasa de aprendizaje en descomposición cambia con el tiempo para alcanzar el óptimo más rápido. Algunos optimizadores como Adagrad hacen que la tasa de aprendizaje disminuya exponencialmente en cada paso. Otros optimizadores como Adam o Adadelta hacen que la tasa de aprendizaje disminuya en función del tamaño de la última actualización.
Existe una gran cantidad de información en Internet sobre SGD y optimizadores similares. Solo estoy tratando de darle una idea básica de qué es SGD y cómo se puede adaptar. ¡Espero que esto ayude!