sábado, 27 de noviembre de 2021

Descenso de Gradiente, Tasa de Aprendizaje y optimización del aprendizaje profundo

El objetivo del descenso de gradiente es minimizar la función de error ajustando poco a poco los parámetros de aprendizaje representados por los distintos pesos. El descenso de gradiente se lleva a cabo mediante el ajuste de los distintos pesos de la red neuronal hasta obtener una convergencia, es decir, un mínimo de errores. Este ajuste se hace mediante pasos cortos, usando un hiperparámetro denominado tasa de aprendizaje (learning rate). 

Descenso de gradiente

El descenso de gradiente se puede definir como las derivadas parciales para un conjunto de parámetros con respecto a sus entradas, es un método iterativo que podemos usar para encontrar los valores de los parámetros de una función que tiende a minimizar el costo. Las tasas de aprendizaje juegan un papel importante en la optimización de los modelos de aprendizaje profundo.

La ilustración inferior, muestra un diagrama conceptual del descenso de gradiente y sus técnicas asociadas, algunas de las cuales veremos a continuación.

 

Descenso de gradiente

Podemos usar la Tasa de Aprendizaje y otras técnicas de optimización para optimizar el aprendizaje en modelos de redes profundas (Deep learning). Cuando queremos optimizar una red neuronal profunda, necesitamos ajustar la red durante el proceso de aprendizaje (asignar los pesos correctos a las neuronas). No podemos utilizar métodos estadísticos o analíticos para calcular el peso de las redes neuronales. Tenemos que adoptar el enfoque de sintonizar, configurar u optimizar los hiperparámetros para lograr un rendimiento óptimo en los modelos de redes neuronales profundas.

Tasa de Aprendizaje

La Tasa de Aprendizaje es uno de esos hiperparámetros que podemos configurar y ajustar para optimizar el aprendizaje. Es posiblemente el hiperparámetro más importante. Representa la cantidad de pesos que terminamos actualizando al entrenar redes neuronales. La cantidad de actualizaciones de peso durante el proceso de entrenamiento de la red neuronal también se conoce como tamaño de paso o paso. La Tasa de Aprendizaje brinda la capacidad de controlar la velocidad a la que aprenden los modelos de redes neuronales. La regla general es que una gran tasa de aprendizaje permite que los modelos aprendan más rápido, pero a costa de llegar a un conjunto final subóptimo de pesos, y esto puede afectar el rendimiento de los modelos de redes neuronales.

Una tasa de aprendizaje menor, por otro lado, permite que el modelo aprenda un conjunto de pesos más óptimo o incluso globalmente óptimo. Pero al mismo tiempo, puede llevar mucho más tiempo entrenar los modelos de redes neuronales profundas. La forma en que ajustamos las tasas de aprendizaje juega un papel importante en el rendimiento de los modelos. Y se recomienda que ajustemos las tasas de aprendizaje correctamente para lograr niveles de rendimiento mejores u óptimos a partir de modelos de redes profundas o neuronales. Las tasas de aprendizaje son un tipo de hiperparámetro que juega un papel crucial en el aprendizaje de las redes neuronales.

El entrenamiento de redes neuronales sobre todo si son profundas, puede ser una tarea de optimización muy difícil y compleja, ya que generalmente usamos diferentes tipos de algoritmos para entrenar redes neuronales. Para lograr un mejor rendimiento, podemos ajustar las tasas de aprendizaje, y este aprendizaje tiende a cambiar el proceso de entrenamiento iterativo. Existen diferentes enfoques que podemos adoptar para configurar y administrar las tasas de aprendizaje. 

El primer enfoque, consiste en disminuir gradualmente la tasa de aprendizaje en función de las épocas. Y el segundo enfoque consiste en disminuir las tasas de aprendizaje utilizando grandes caídas puntuales en épocas específicas. Aparte de estos dos enfoques, podemos adaptar otras técnicas que incluyen un ajuste de tasa de aprendizaje basado en el tiempo y un ajuste de tasa de aprendizaje basado en la caída. El uso del algoritmo de descenso radiante estocástico para la optimización implica un concepto de caída de la tasa, y la caída de la tasa representa la caída de la tasa de aprendizaje basada en el tiempo donde la tasa de aprendizaje se reduce siempre que cambia el valor de la caída. El programa de tasas de aprendizaje basado en caídas, por otro lado, es un enfoque de uso frecuente que implica reducir las tasas de aprendizaje en momentos específicos durante la fase de formación.

La mayoría de las implementaciones de este enfoque implican un programador de tasas de aprendizaje, que proporciona una capacidad de programación para reducir las tasas de aprendizaje en diferentes épocas durante el proceso de capacitación.

Existen diferentes algoritmos de optimización que podemos utilizar para optimizar los modelos de aprendizaje profundo. Y algunos son el descenso de gradiente, el descenso de gradiente estocástico, la programación de la tasa de aprendizaje y el descenso del gradiente de la tasa de aprendizaje adaptativo. El estocástico es un proceso que está estrechamente relacionado con la probabilidad aleatoria.

Descenso de gradiente estocástico

Cuando trabajamos con descenso de gradiente estocástico, seleccionamos aleatoriamente ciertas muestras, en lugar de trabajar con todos los datos en cada iteración. Durante el proceso de entrenamiento, las muestras se barajan y seleccionan para realizar iteraciones, y se calcula el gradiente de la función de costo. Dado que trabajamos con una muestra seleccionada al azar, la ruta que sigue el algoritmo para alcanzar los mínimos es menos apropiada en comparación con la del algoritmo de descenso de gradiente. Pero dado que alcanzamos los mínimos con una cantidad de tiempo de entrenamiento significativamente más corta, generalmente no tiene ningún impacto en el proceso de optimización y entrenamiento.

Con el uso del ajuste de tasas de aprendizaje, el algoritmo ajusta dichas tasas de aprendizaje durante el proceso de capacitación en función de ajustes predeterminados. Dichos ajustes pueden basarse en el tiempo, en pasos o incluso en un mecanismo de disminución exponencial. Existen ciertos ajustes asociados con las tasas de ritmo de aprendizaje. Por ejemplo, los hiperparámetros deben definirse de antemano y las tasas de aprendizaje deben aplicarse a todas las actualizaciones de parámetros.

Para manejar los problemas asociados con la programación de la tasa de aprendizaje, podemos usar el tercer algoritmo de optimización que mencionamos anteriormente, que es el descenso adaptativo de gradiente de velocidad de aprendizaje.

Descenso adaptativo de gradiente de velocidad de aprendizaje

Los algoritmos adaptativos proporcionan un enfoque automatizado de los parámetros de ajuste para las tasas de aprendizaje, y no necesitamos un ajuste manual en estos algoritmos. Hay varios algoritmos de descenso de gradiente de velocidad de aprendizaje adaptativo que podemos implementar, e incluyen Adagrad, Adadelta, RMSProp y Adam. 

 

Descenso adaptativo de gradiente de velocidad de aprendizaje


¿cuáles son los principales métodos de tasa de aprendizaje adaptativo que podemos adoptar o implementar?  Incluyen, RMSProp, AdaGrad, Adam, Adadelta y Adamax. 

RMSProp   

Video explicativo aquí

Es un algoritmo de optimización para redes neuronales. El objetivo principal de RMSProp es restringir la oscilación en dirección vertical, convirtiéndolo en uno de los algoritmos más populares que se ocupa de manera eficiente de la disminución de las tasas de aprendizaje. RMSProp se usa o implementa con frecuencia con redes neuronales recurrentes. 

AdaGrad   

Es un optimizador que involucra tasas de aprendizaje específicas de parámetros, y las tasas de aprendizaje se adaptan en función de la frecuencia con la que se actualiza un parámetro durante el proceso de capacitación. Cuanto más actualizamos un parámetro, menor es la tasa de aprendizaje.

Adam  

Es un algoritmo de optimización que podemos utilizar en lugar del descenso de gradiente estocástico clásico para actualizar los pesos de la red de forma interactiva en función de los datos de entrenamiento. El optimizador de Adam es sencillo de implementar. Es computacionalmente eficiente y requiere muy poca memoria. 

Adadelta

Es esencialmente una extensión de Adagrad, que busca reducir las tasas de aprendizaje agresivas y monótonamente decrecientes en Adagrad. En lugar de acumular todos los gradientes cuadrados pasados, Adadelta restringe la ventana de gradientes pasados acumulados a un cierto tamaño fijo.

AdaMax

Es una variante de Adam, que se basa en la norma del infinito. En AdaMax, el factor de peso en Adam actualiza las reglas y escala el gradiente de manera inversamente proporcional a la norma de regularización L2 de los gradientes pasados. Entonces, dependiendo de nuestros requisitos de automatización, podemos seleccionar el algoritmo o método correcto de entre las opciones mencionadas anteriormente e implementarlas al mismo tiempo. También observamos que la mayoría de los marcos de aprendizaje profundo proporcionan paquetes integrados 


No hay comentarios:

Publicar un comentario