¿Qué deben saber todos sobre el descenso de gradiente (estocástico)?

  • El descenso de gradiente es esencialmente un algoritmo de optimización, que no tiene nada que ver con el aprendizaje automático per se. Debido a que gran parte del aprendizaje automático implica la optimización, se utiliza bastante en el aprendizaje automático.
  • Para problemas convexos, converge al óptimo global; para problemas no convexos, converge a un óptimo local.
  • La distinción de las variantes por lotes y estocásticas entra en escena en el aprendizaje automático cuando la función objetivo es una función de puntos de datos [matemáticos] m [/ matemáticos], pero puede ser aproximada por datos [matemáticos] n < 1 [/ matemática], normalmente se conoce como SGD de mini lotes.
  • Al implementar el descenso de gradiente para una función no trivial, debe escribir un verificador de gradiente que compare la salida de su cálculo de gradiente con una aproximación de diferencia finita.
  • Normalice sus datos para una mejor convergencia.

Descenso de gradiente por lotes

  • Analiza todos los datos de entrenamiento para cada paso. Entonces calcula el gradiente exacto, pero es lento.
  • No tiene que preocuparse mucho por el tamaño del paso. Un tamaño de paso constante en toda la optimización funciona en la mayoría de los casos. Esto se debe a que para funciones objetivas con buen comportamiento, el gradiente es cero en el óptimo y pequeño cerca de él.

Descenso de gradiente estocástico

  • Mira un subconjunto de los datos de entrenamiento en cada paso. Entonces calcula un gradiente aproximado. Pero el cálculo del gradiente es muy rápido en comparación con la versión por lotes para grandes conjuntos de datos.
  • Aleatorice sus datos después de cada época para una convergencia más rápida.
  • Al implementar SGD, tenga un parámetro [math] n [/ math] que determine el número de puntos tomados en cada iteración para el cálculo del gradiente. Establezca [math] n [/ math] en un valor grande (cercano o igual a [math] m [/ math]) para verificar la cordura de su código; debe converger al óptimo.
  • Elegir el tamaño de paso correcto es crucial aquí, porque el gradiente aproximado no es cero en el óptimo. Por lo tanto, debe bajar manualmente el gradiente. Bajarlo demasiado lentamente hará que la convergencia sea lenta, bajarlo demasiado rápido hará que el algoritmo se detenga antes de acercarse al óptimo.
  • Use un subconjunto de los datos de entrenamiento para optimizar el tamaño del paso. Debido a que SGD es principalmente independiente del tamaño del conjunto de datos, puede tomar un pequeño subconjunto de datos para obtener un buen tamaño de paso.

Finalmente, aunque el descenso de gradiente es una de las técnicas más comunes utilizadas para la optimización en la práctica, no es la mejor técnica. Existe todo un espectro de técnicas de optimización iterativa. En un extremo, tiene técnicas como SGD que calculan una estimación ruidosa de la dirección y la magnitud del paso y toman muchas iteraciones para converger, y en el otro extremo, tiene técnicas como el método de Newton que calculan una estimación muy precisa de la dirección y la magnitud de paso y por lo tanto, tomar muchos menos pasos para converger. En el medio tienes técnicas como el algoritmo Levenberg-Marquardt.

Aquí hay un buen artículo que discute algunos consejos prácticos para SGD: Trucos de descenso de gradiente estocástico

Algunas cosas prácticas:

  • Si no funciona, verifique su tasa de aprendizaje. Intenta cambiarlo mucho . O pruebe un método como ADAGRAD o ADAM que sea menos sensible a la tasa de aprendizaje.
  • Trace los valores de su función objetivo. Eso ayudará a identificar si está haciendo algo completamente no sensitivo.
  • Haga una verificación de gradiente, o mejor aún, use la diferenciación automática.
  • El rendimiento es muy sensible a la variación de sus gradientes.
  • Si está utilizando estimadores, asegúrese de que sus estimadores sean imparciales.
  • Tenga en cuenta esto Algos de optimización de visualización. ¡A veces SGD falla mientras que otros algoritmos de optimización estocástica tienen éxito! Hay diferentes razones posibles. Una posibilidad es que los gradientes para diferentes parámetros estén en escalas muy diferentes, por lo que necesita una tasa de aprendizaje diferente para diferentes parámetros. En este caso, uno puede probar el descenso de gradiente natural u otros métodos que se adapten a la geometría de los datos.

More Interesting

¿Cómo es hacer un doctorado en aprendizaje automático / minería de datos / big data en una escuela de negocios?

¿Qué nivel de habilidades SQL se necesitan para la ciencia de datos?

¿Cómo está transformando el análisis de datos el mundo?

¿Cuál es la importancia de comprender las distribuciones de datos subyacentes en un conjunto de datos antes de aplicar cualquier algoritmo de aprendizaje automático, ya sea un algoritmo de predicción o de clasificación?

¿Cómo explicará la precisión media promedio ( [correo electrónico protegido] ) a un cliente comercial en una sola oración?

¿Alguien ha hecho alguna vez el curso de Sliderule (renombrado como Springboard) en Ciencia de Datos, y si es así, ¿qué le quitó a la experiencia?

¿Es el libro 'Excel 2007 Data Analysis for Dummies' un buen sustituto del libro 'Excel Data Analysis for Dummies'?

¿Está garantizado el entusiasmo por la ciencia de datos? Si es así, ¿por qué?

¿Cuáles son algunos paquetes de R que el científico de datos o un estadístico deben saber usar?

¿Cómo funciona la pestaña Instagram Explore?

¿Por qué debería aprender sobre el análisis de datos para mi trabajo?

¿Cuáles son algunos de los métodos que hacen los científicos para analizar datos?

¿Cuál es la diferencia entre roaming de datos y datos móviles?

¿Es útil el nanogrado de Udacity para cambiar el campo de la ingeniería mecánica a la ciencia de datos?

¿Qué es la piratería de datos en relación con la ciencia de datos?