5 conceptos que debe conocer sobre el descenso de gradiente y la función de costo

Esta foto fue tomada en la cima de Brick Hill (Nam Long Shan, Hong Kong).

El descenso de gradiente es un algoritmo de optimización iterativo que se utiliza en el aprendizaje automático para minimizar una función de pérdida. La función de pérdida describe qué tan bien funcionará el modelo dado el conjunto actual de parámetros (pesos y sesgos), y el descenso de gradiente se usa para encontrar el mejor conjunto de parámetros. Usamos el descenso de gradiente para actualizar el parámetros de nuestro modelo. Por ejemplo, los parámetros se refieren a coeficientes en Regresión lineal y pesos en redes neuronales.

En este artículo, explicaré 5 conceptos principales de descenso de gradiente y función de costo, que incluyen:

  • Razón para minimizar la Función de Costo
  • El método de cálculo de Gradient Descent
  • La función de la tasa de aprendizaje.
  • Descenso de gradiente por lotes (BGD)
  • Descenso de gradiente estocástico (SGD)

La configuración principal para el aprendizaje de redes neuronales es definir una función de costo (también conocida como función de pérdida) que mide qué tan bien la red predice los resultados en el conjunto de prueba. El objetivo es encontrar un conjunto de pesos y sesgos que minimice el costo. Una función común que se utiliza a menudo es la error medio cuadradoque mide la diferencia entre el valor real de y y el valor estimado de y (la predicción). La ecuación de la siguiente línea de regresión es hθ(X) = θ + θ1Xque tiene solo dos parámetros: peso (θ1) y sesgo (θ0).

Función de minimización de costos

El objetivo de cualquier modelo de aprendizaje automático es minimizar la función de costo.

Nuestro objetivo es pasar de la montaña en la esquina superior derecha (alto costo) al mar azul oscuro en la parte inferior izquierda (bajo costo). Para obtener el valor de error más bajo, necesitamos ajustar el pesosθ0 y ‘θ1‘ para alcanzar el menor error posible. Esto se debe a que el resultado de un error menor entre los valores real y predicho significa que el algoritmo ha hecho un buen trabajo de aprendizaje. El descenso de gradiente es un algoritmo de optimización eficiente que intenta encontrar un mínimo local o global de una función.

Cálculo del descenso de gradiente

Gradient Descent se ejecuta iterativamente para encontrar los valores óptimos de los parámetros correspondientes al valor mínimo de la función de costo dada, usando cálculo. Matemáticamente, la técnica del ‘derivado‘ es extremadamente importante para minimizar la función de costo porque ayuda a obtener el punto mínimo. La derivada es un concepto del cálculo y se refiere a la pendiente de la función en un punto dado. Necesitamos conocer la pendiente para conocer la dirección (signo) para mover los valores de los coeficientes a fin de obtener un costo más bajo en la siguiente iteración.

θ1 converge gradualmente hacia un valor mínimo.

La derivada de una función (en nuestro caso, J(θ)) en cada parámetro (en nuestro caso peso θ) nos dice la sensibilidad de la función con respecto a esa variable o cómo el cambio de la variable afecta el valor de la función. Descenso de gradiente, por lo tanto, permite que el proceso de aprendizaje realice actualizaciones correctivas a las estimaciones aprendidas que mueven el modelo hacia una combinación óptima de parámetros (θ). El costo se calcula para un algoritmo de aprendizaje automático sobre todo el conjunto de datos de entrenamiento para cada iteración del algoritmo de descenso de gradiente. En Gradient Descent, una iteración del algoritmo se denomina lote, lo que indica el número total de muestras de un conjunto de datos que se utiliza para calcular el gradiente de cada iteración.

El paso de la derivación

Sería mejor si tienes conocimientos básicos de cálculo porque en este caso se está aplicando la técnica de la derivada parcial y la regla de la cadena.

Para resolver el gradiente, iteramos a través de nuestros puntos de datos usando nuestro nuevo peso ‘θ0 y sesgo ‘θ1’ valores y calcular las derivadas parciales. Este nuevo gradiente nos dice la pendiente de nuestra función de costo en nuestra posición actual (valores de parámetros actuales) y la dirección en la que debemos movernos para actualizar nuestros parámetros. El tamaño de nuestra actualización está controlado por la tasa de aprendizaje.

Tasa de aprendizaje (α)

Tenga en cuenta que usamos ‘:=’ para indicar una asignación o una actualización.

El tamaño de estos pasos se llama tasa de aprendizaje (α) eso nos da un control adicional sobre el tamaño de los pasos que damos. Con una gran tasa de aprendizaje, podemos cubrir más terreno en cada paso, pero corremos el riesgo de sobrepasar el punto más bajo ya que la pendiente de la colina cambia constantemente. Con una tasa de aprendizaje muy baja, podemos movernos con confianza en la dirección del gradiente negativo ya que lo estamos recalculando con tanta frecuencia. Una tasa de aprendizaje baja es más precisa, pero calcular el gradiente requiere mucho tiempo, por lo que nos llevará mucho tiempo llegar al fondo. Las tarifas más utilizadas son: 0,001, 0,003, 0,01, 0,03, 0,1, 0,3.

Ahora analicemos las tres variantes del algoritmo de descenso de gradiente. La principal diferencia entre ellos es la cantidad de datos que usamos al calcular los gradientes para cada paso de aprendizaje. La compensación entre ellos es la precisión del gradiente frente a la complejidad del tiempo para realizar la actualización de cada parámetro (paso de aprendizaje).

Descenso de gradiente estocástico (SGD)

Sin embargo, existe la desventaja de aplicar una técnica de optimización de descenso de gradiente típica en nuestro conjunto de datos. Se vuelve computacionalmente muy costoso de realizar porque tenemos que usar todas las muestras de un millón para completar una iteración, y debe hacerse para cada iteración hasta que se alcance el punto mínimo. Este problema se puede resolver mediante el Descenso de Gradiente Estocástico.

La palabra ‘estocástico significa un sistema o un proceso que está vinculado con una probabilidad aleatoria. El descenso de gradiente estocástico utiliza esta idea para acelerar el proceso de realización del descenso de gradiente. Por lo tanto, a diferencia de la típica optimización de descenso de gradiente, en lugar de usar el conjunto de datos completo para cada iteración, podemos usar el gradiente de costo de solo 1 ejemplo en cada iteración (los detalles se muestran en el gráfico a continuación). Aunque usar todo el conjunto de datos es realmente útil para llegar a los mínimos de una manera menos ruidosa o menos aleatoria, el problema surge cuando nuestros conjuntos de datos se vuelven realmente grandes.

Las dos diferencias principales son que el método de descenso de gradiente estocástico nos ayuda a evitar el problema de encontrar esos extremos locales o mínimos locales en lugar del mínimo global general.

Como se mencionó, el método de descenso de gradiente estocástico realiza una iteración o una fila a la vez y, por lo tanto, las fluctuaciones son mucho mayores que el descenso de gradiente por lotes.

Tres variantes del algoritmo de descenso de gradiente

  • Descenso de gradiente por lotes (BGD): calcula el error para cada ejemplo en el conjunto de datos de entrenamiento, pero solo actualiza el modelo después de que se hayan evaluado todos los ejemplos de entrenamiento.
  • Descenso de gradiente estocástico (SGD): calcula el error y actualiza el modelo para cada ejemploen el conjunto de datos de entrenamiento.
  • Descenso de gradiente de mini lotes: divide el conjunto de datos de entrenamiento en pequeños lotes que se usan para calcular el error del modelo y los coeficientes del modelo actualizados. (la implementación más común de gradiente descendente utilizada en el campo del aprendizaje profundo)

El descenso de gradiente de mini lotes puede encontrar un equilibrio entre la robustez de EUR y la eficiencia de BGD.

Después de leer este blog, ahora debería comprender mejor los 5 conceptos de descenso de gradiente y función de costo:

  • ¿Qué es la Función de Costo y cómo minimizarla?
  • ¿Cómo calcular el descenso de gradiente?
  • ¿Cuál es la tasa de aprendizaje?
  • ¿Qué es el descenso de gradiente por lotes (BGD)?
  • ¿Por qué es importante el descenso de gradiente estocástico (SGD) en el aprendizaje automático?

Fuente del artículo

¿Que te ha parecido?

Deja un comentario