En mi última publicación, discutimos cómo se puede mejorar el rendimiento de las redes neuronales a través de ajuste de hiperparámetros:
Este es un proceso mediante el cual los mejores hiperparámetros, como la tasa de aprendizaje y la cantidad de capas ocultas, se “ajustan” para encontrar los más óptimos para que nuestra red mejore su rendimiento.
Desafortunadamente, este proceso de ajuste para grandes redes neuronales profundas (aprendizaje profundo) es minuciosamente lento. Una forma de mejorar esto es utilizar optimizadores más rápidos que el método tradicional de descenso de gradiente “vainilla”. En esta publicación, profundizaremos en los optimizadores y variantes de optimización más populares. descenso de gradiente ¡Eso puede mejorar la velocidad del entrenamiento y también la convergencia y compararlos en PyTorch!
Antes de profundizar, repasemos rápidamente nuestro conocimiento sobre el descenso de gradientes y la teoría detrás de él.
El objetivo del descenso de gradiente es actualizar los parámetros del modelo restando el gradiente (derivada parcial) del parámetro con respecto a la función de pérdida. Una tasa de aprendizaje, αsirve para regular este proceso para garantizar que la actualización de los parámetros se produzca en una escala razonable y no supere ni subestime el valor óptimo.
- θ son los parámetros del modelo.
- J(θ) es la función de pérdida.
- ∇J(θ) es el gradiente de la función de pérdida. ∇ es el operador de gradiente, también conocido como nabla.
- α es la tasa de aprendizaje.
Escribí un artículo anterior sobre el descenso de gradientes y cómo funciona si quieres familiarizarte un poco más al respecto: