Logotipo de Zephyrnet

Ajuste de la tasa de aprendizaje en Pendiente de gradiente

Fecha:

descenso de gradienteEn la mayoría de los problemas de aprendizaje automático supervisado, necesitamos definir un modelo y estimar sus parámetros en función de un conjunto de datos de entrenamiento. Una técnica popular y fácil de usar para calcular esos parámetros es minimizar el error del modelo con Gradient Descent. Gradient Descent estima los pesos del modelo en muchas iteraciones minimizando una función de costo en cada paso.

El algoritmo de descenso de gradiente

Aquí está el algoritmo:

Repeat until convergence { Wj = Wj - λ θF(Wj)/θWj }

Donde Wj es uno de nuestros parámetros (o un vector con nuestros parámetros), F es nuestra función de costo (estima los errores de nuestro modelo), θF (Wj) / θWj es su primera derivada con respecto a Wj y λ es la tasa de aprendizaje .

Si nuestra F es monótona, este método nos dará después de muchas iteraciones una estimación de los pesos Wj que minimizan la función de costo. Tenga en cuenta que si la derivada no es monótona, podríamos quedar atrapados en el mínimo local. En ese caso, una manera fácil de detectar esto es repitiendo el proceso para diferentes valores iniciales de Wj y comparando el valor de la función de costo para los nuevos parámetros estimados.

Gradient Descent no siempre es el mejor método para calcular los pesos, sin embargo, es un método relativamente rápido y fácil. Si desea leer más sobre Gradient Descent, consulte las notas de Ng para Curso de aprendizaje automático de Stanford.

Ajuste de la tasa de aprendizaje

Para que funcione Gradient Descent, debemos establecer la λ (tasa de aprendizaje) en un valor apropiado. Este parámetro determina qué tan rápido o lento nos moveremos hacia los pesos óptimos. Si λ es muy grande, omitiremos la solución óptima. Si es demasiado pequeño, necesitaremos demasiadas iteraciones para converger a los mejores valores. Entonces, usar una buena λ es crucial.

Adaptar el valor de la tasa de aprendizaje para diferentes tamaños de conjuntos de datos

Dependiendo de la función de costo F que seleccionemos, podríamos enfrentar diferentes problemas. Cuando se selecciona la suma de errores al cuadrado como nuestra función de costo, entonces el valor de θF (Wj) / θWj aumenta cada vez más a medida que aumentamos el tamaño del conjunto de datos de entrenamiento. Por lo tanto, λ debe adaptarse a valores significativamente más pequeños.

Una forma de resolver este problema es dividir λ con 1 / N, donde N es el tamaño de los datos de entrenamiento. Entonces, el paso de actualización del algoritmo se puede reescribir como:

Wj = Wj - (λ/N)*θF(Wj)/θWj

Puede leer más sobre esto en Wilson et al. papel "La ineficiencia general del entrenamiento por lotes para el aprendizaje de descenso de gradientes.

Finalmente, otra forma de resolver este problema es seleccionando una función de costo que no se vea afectada por la cantidad de ejemplos de trenes que usamos, como los errores al cuadrado medio.

Adaptando la tasa de aprendizaje en cada iteración

Otra buena técnica es adaptar el valor de λ en cada iteración. La idea detrás de esto es que cuanto más lejos esté de los valores óptimos, más rápido debe avanzar hacia la solución y, por lo tanto, el valor de λ debe ser mayor. Cuanto más te acerques a la solución, menor debe ser su valor. Desafortunadamente, dado que no conoce los valores óptimos reales, tampoco sabe qué tan cerca está de ellos en cada paso.

Para resolver esto, puede verificar el valor de la función de error utilizando los parámetros estimados del modelo al final de cada iteración. Si su tasa de error se redujo desde la última iteración, puede intentar aumentar la tasa de aprendizaje en un 5%. Si su tasa de error realmente se incrementó (lo que significa que omitió el punto óptimo), debe restablecer los valores de Wj a los valores de la iteración anterior y disminuir la tasa de aprendizaje en un 50%. Esta técnica se llama Conductor audaz.

Consejo adicional: normalice sus vectores de entrada

En muchos problemas de aprendizaje automático, normalizar los vectores de entrada es una práctica bastante común. En algunas técnicas, la normalización es necesaria porque utilizan internamente distancias o variaciones de características y, por lo tanto, sin normalización, los resultados se verían muy afectados por la característica con la mayor variación o escala. La normalización de sus entradas también puede ayudar a que su método de optimización numérica (como Gradient Descent) converja mucho más rápido y con precisión.

Aunque hay varias formas de normalizar una variable, la normalización [0,1] (también conocida como min-max) y la normalización de puntuación z son dos de las más utilizadas. Así es como puede calcular ambos:

XminmaxNorm = (X - min(X))/(max(X)-min(X));
XzscoreNorm = (X - mean(X))/std(X);

¡Espero que esto funcione para usted! 🙂

¿Te gustó el artículo? Tómese un minuto para compartirlo en Twitter. 🙂

Nuestra Empresa Vasilis Vryniotis

Mi nombre es Vasilis Vryniotis. Soy un científico de datos, un ingeniero de software, autor de Datumbox Machine Learning Framework y un orgulloso geek. Más información

Fuente: http://blog.datumbox.com/tuning-the-learning-rate-in-gradient-descent/

punto_img

Información más reciente

punto_img