Método de descenso de gradiente

Gradient Descent es uno de los métodos más utilizados para resolver problemas de optimización sin restricciones. Es un método iterativo. La operación principal de cada paso es resolver el vector de gradiente de la función objetivo, utilizando la dirección de gradiente negativa de la posición actual como búsqueda. Dirección.
La representación intuitiva se puede representar mediante el siguiente diagrama:

Cada círculo aquí representa un gradiente funcional, cuyo centro representa el punto extremo de la función. Cada iteración encuentra una nueva posición basada en el gradiente obtenido de la posición actual (usado para determinar la dirección de búsqueda y determinar la velocidad de avance junto con el paso) , De modo que la iteración iterativa eventualmente alcanzará la mejor ventaja local de la función objetivo (si la función objetivo es convexa, se alcanzará la mejor ventaja global).
La esencia del método de descenso de gradiente es buscar continuamente la derivada parcial y actualizar la función de pérdida hasta que converja
1.
¿Cuál es la importancia de encontrar el vector de gradiente? ? ? En términos de geometría, es el lugar donde el cambio de función aumenta más rápidamente. Específicamente, para la función f (x, y), la dirección del vector de gradiente en el punto \ ((x_0, y_0) \) es \ ((\ frac {\ partial f} {\ partial x_0}, \ frac {\ La dirección de parcial f} {\ partial y_0}) ^ T \) es donde f (x, y) aumenta más rápidamente. En otras palabras, a lo largo de la dirección del vector de gradiente, es más fácil encontrar el valor máximo de la función. A la inversa, la dirección opuesta del vector gradiente, es decir, \ (- (\ frac {\ f parcial} {\ x_0 parcial}, \ frac {\ f parcial} {\ y_0 parcial}) ^ T \) dirección , El gradiente disminuye más rápido, lo que facilita encontrar el valor mínimo de la función.
2. Descenso de gradiente y ascenso de gradiente
En el algoritmo de aprendizaje automático, cuando la función de pérdida se minimiza, el método de descenso de gradiente se puede utilizar para resolver de forma iterativa paso a paso para obtener la función de pérdida minimizada y los valores de los parámetros del modelo. Por el contrario, si necesitamos encontrar el valor máximo de la función de pérdida, entonces necesitamos usar el método de ascenso de gradiente para iterar.
El método de descenso de gradiente y el método de ascenso de gradiente se pueden convertir entre sí. Por ejemplo, necesitamos encontrar el valor mínimo de la función de pérdida f (θ), luego debemos usar el método de descenso de gradiente para resolver de forma iterativa. Pero, de hecho, podemos resolver inversamente el valor máximo de la función de pérdida -f (θ), entonces el método de ascenso de gradiente es útil.
3. Explicación detallada del algoritmo de descenso de gradiente
3.1 Comprensión intuitiva del descenso de gradiente Veamos
primero una explicación intuitiva del descenso de gradiente. Por ejemplo, estamos en algún lugar de una montaña grande, porque no sabemos cómo descender la montaña, por lo que decidimos dar un paso a la vez, es decir, cuando alcanzamos una posición, resolvemos el gradiente de la posición actual, a lo largo de la dirección negativa del gradiente, también Es decir, dé un paso hacia abajo desde la posición más empinada actual, y luego continúe resolviendo el gradiente de la posición actual, y dé un paso hacia la posición donde este paso se encuentra a lo largo de la pendiente más empinada y más fácil de descender. Continúa así paso a paso hasta que sientas que hemos llegado al pie de la montaña. Por supuesto, si seguimos así, es posible que no podamos llegar al pie de la montaña, sino a cierta parte baja del pico de la montaña.
Como se puede ver en la explicación anterior, el descenso de gradiente no necesariamente encuentra la solución óptima global, pero puede ser una solución óptima local. Por supuesto, si la función de pérdida es convexa, la solución obtenida por el método de descenso de gradiente debe ser la solución óptima global.

3.2 Conceptos relacionados de descenso de gradiente

  1. Tasa de aprendizaje : el tamaño de aprendizaje determina la longitud de cada paso en la dirección negativa del gradiente durante el descenso del gradiente. Usando el ejemplo de descenso anterior, la longitud del paso es la longitud del paso a lo largo de la posición de descenso más empinada y fácil en el paso actual.
  2. Característica : se refiere a la parte de entrada de la muestra, como 2 muestras de una sola característica \ ((x ^ {(0)}, y ^ {(0))}), (x ^ {(1)}, y ^ {(1))}) \) , entonces la primera característica de muestra es \ (x ^ {(0)} \) , la primera salida de muestra es \ (y ^ {(0)} \)
  3. Función de hipótesis (función de hipótesis) : en el aprendizaje supervisado, la función de hipótesis utilizada para ajustar la muestra de entrada se escribe como \ (h_ \ theta (x) \) . Por ejemplo, para m muestras de una sola característica \ ((x ^ {(i)}, y ^ {(i)}) (i = 1,2, ..., m) \), la función de ajuste se puede usar de la siguiente manera: \ (h_ \ theta (x) = \ theta_0 + \ theta_1x. \)
  4. Función de pérdida (función de pérdida) : para evaluar qué tan bien se ajusta el modelo, la función de pérdida generalmente se usa para medir el grado de ajuste. La minimización de la función de pérdida significa que el grado de ajuste es el mejor y los parámetros del modelo correspondientes son los parámetros óptimos. En la regresión lineal, la función de pérdida generalmente ajusta la diferencia entre el resultado de la muestra y la función de hipótesis. Por ejemplo, para m muestras \ ((x_i, y_i) (i = 1,2,3 ..., m) \) , se utiliza la regresión lineal y la función de pérdida es:

\ [J (\ theta_0, \ theta_1) = \ sum_ {i = 1} ^ m (h_ \ theta (x_i) -y_i) ^ 2 \]

En donde, \ (x_i denota el i-ésimo características de la muestra, y_i i representa la muestra correspondiente de salida, h_ \ theta (x_i) \ ) como una función de asumido
algoritmo de descenso de gradiente 3,3 detallan
métodos algebraicos que caen método de gradiente describen

1. Requisito previo: determinar la función de hipótesis y la función de pérdida del modelo de optimización

Por ejemplo, para la regresión lineal, suponga que la función se expresa como: \ (h_ \ theta (x_1, x_2, ... x_n) = \ theta_0 + \ theta_ {1} x_1 + ... + \ theta_ {n} x_ {n} \ ) Donde >> \ (\ theta_i (i = 0,1,2, ..., n) \) es el parámetro del modelo y \ (x_i (i = 0,1,2 ..., n) \) es Para n valores de características de cada muestra, agregue una característica \ (x_0 = 1 \) , que se puede simplificar para:

\ [h_ \ theta (x_0, x_1, ... x_n) = \ sum \ limits_ {i = 0} ^ {n} \ theta_ {i} x_ {i} \]

En correspondencia con la función de hipótesis anterior, la función de pérdida es:

\ [J (\ theta_0, \ theta_1 ..., \ theta_n) = \ frac {1} {2m} \ sum \ limits_ {j = 0} ^ {m} (h_ \ theta (x_0 ^ {(j)} , x_1 ^ {(j)}, ... x_n ^ {(j)}) - y_j) ^ 2 \]

2. Inicialización de parámetros relacionados con algoritmos: principalmente inicialización \ (\ theta_0, \ theta_1 ..., \ theta_n \) , distancia de terminación del algoritmo \ (\ varepsilon \) y tamaño de paso \ (\ alpha \) . Cuando no hay conocimiento previo, me gusta inicializar todo \ (\ theta \) a 0 y el tamaño del paso a 1. Optimice de nuevo al sintonizar.
3. Proceso de algoritmo:

1) Determine el gradiente de la función de pérdida en la posición actual. Para \ (\ theta_i \), la expresión de gradiente es:

\ [\ frac {\ partial} {\ partial \ theta_i} J (\ theta_0, \ theta_1 ..., \ theta_n) \]

  1. Se multiplica por el tamaño de paso de la pendiente de la función de pérdida, obtenido a partir de la disminución de la corriente, es decir, \ (\ alpha \ frac {\ parcial} {\ partial \ theta_i} J (\ theta_0, \ theta_1 ..., \ theta_n) \) correspondiente a Da un paso en el ejemplo de montañismo anterior.
  2. Determine si todo \ (θ_i \) , la distancia de descenso del gradiente es menor que ε, si es menor que ε, el algoritmo termina, y todo el actual \ (θ_i (i = 0,1, ... n) \) es el resultado final. De lo contrario, vaya al paso 4.
  3. Actualizar todo θ. Para \ (θ_i \) , la expresión de actualización es la siguiente. Una vez completada la actualización, continúe con el paso 1.

\ [\ theta_i = \ theta_i - \ alpha \ frac {\ partial} {\ partial \ theta_i} J (\ theta_0, \ theta_1 ..., \ theta_n) \]

Tome la regresión lineal como un ejemplo para describir el descenso del gradiente en detalle.

Supongamos que la muestra es: \ ((x_1 ^ {(0)}, x_2 ^ {(0)}, ... x_n ^ {(0)}, y_0), (x_1 ^ {(1)}, x_2 ^ {( 1)}, ... x_n ^ {(1)}, y_1), ... (x_1 ^ {(m)}, x_2 ^ {(m)}, ... x_n ^ {(m)}, y_m ) \) La
función de pérdida es como se describe en los requisitos previos anteriores: \ (J (\ theta_0, \ theta_1 ..., \ theta_n) = \ frac {1} {2m} \ sum \ limits_ {j = 0} ^ {m } (h_ \ theta (x_0 ^ {(j)}, x_1 ^ {(j)}, ... x_n ^ {(j)}) - y_j) ^ 2 \)
en el proceso del algoritmo paso 1 para \ ( La derivada parcial de θ_i \) se calcula de la siguiente manera

\ [\ frac {\ partial} {\ partial \ theta_i} J (\ theta_0, \ theta_1 ..., \ theta_n) = \ frac {1} {m} \ sum \ limits_ {j = 0} ^ {m} (h_ \ theta (x_0 ^ {(j)}, x_1 ^ {(j)}, ... x_n ^ {(j)}) - y_j) x_i ^ {(j)} \]

Como no hay x0 en la muestra, todo \ (x ^ j_0 \) se establece en 1. La expresión
de actualización de \ (\ theta_i \) en el paso 4 es la siguiente:

\ [\ theta_i = \ theta_i- \ alpha \ frac {1} {m} \ sum \ limits_ {j = 0} ^ {m} (h_ \ theta (x_0 ^ {(j)}, x_1 ^ {(j) }, ... x_n ^ {j}) - y_j) x_i ^ {(j)} \]

Se puede ver a partir de este ejemplo que la dirección del gradiente del punto actual está determinada por todas las muestras, y \ (\ frac {1} {m} \) se agrega para una fácil comprensión. Dado que el tamaño del paso también es constante, sus posibilidades también son constantes, por lo que aquí> \ (\ alpha \ frac {1} {m} \) puede representarse mediante una constante.
Descripción matricial del método de descenso de gradiente

  1. Prerrequisitos: Similar a 3.3.1, es necesario confirmar la función de hipótesis y la función de pérdida del modelo de optimización.

Para la regresión lineal, suponga que la expresión matricial de la función \ (h_ \ theta (x_1, x_2, ... x_n) = \ theta_0 + \ theta_ {1} x_1 + ... + \ theta_ {n} x_ {n} \) es :

\ [h_ \ mathbf {\ theta} (\ mathbf {X}) = \ mathbf {X \ theta} \]

Entre ellos, supongamos que la función \ (h_ \ mathbf {\ theta} (\ mathbf {X}) \) es un vector de mx 1, que tiene n + 1 parámetros del modelo algebraico. X es una matriz de dimensiones mx (n + 1). m representa el número de muestras, y n + 1 representa el número de características de las muestras.
La expresión de la función de pérdida es: \ (J (\ mathbf \ theta) = \ frac {1} {2} (\ mathbf {X \ theta} - \ mathbf {Y}) ^ T (\ mathbf {X \ theta} - \ mathbf {Y}) \) , donde Y es el vector de salida de la muestra y la dimensión es mx1

  1. Inicialización de parámetros relacionados con el algoritmo: igual que el método algebraico
  2. Proceso de algoritmo:
  1. Determine el gradiente de la función de pérdida en la posición actual. Para el vector \ (\ theta \) , la expresión de gradiente es la siguiente:

\ [\ frac {\ partial} {\ partial \ mathbf \ theta} J (\ mathbf \ theta) \]

  1. Se multiplica por el tamaño de paso de la pendiente de la función de pérdida, la posición actual obtenida a partir de la bajada, es decir, \ (\ alpha \ frac {\ parcial} {\ partial \ theta} J (\ theta) \) un paso de escalada a los ejemplos anteriores
  2. Determine cada valor en el vector \ (\ theta \) , la distancia de descenso del gradiente es menor que \ (\ varepsilon \) , si es menor que \ (\ varepsilon \) , el algoritmo se detiene y el vector actual \ (\ theta \) es el final Resultado De lo contrario, vaya al paso 4
  3. Actualice el vector \ (\ theta \) , y su expresión de actualización es la siguiente. Una vez completada la actualización, continúe con el paso 1

\ [\ mathbf \ theta = \ mathbf \ theta- \ alpha \ frac {\ partial} {\ partial \ theta} J (\ mathbf \ theta) \]

Tome la regresión lineal como ejemplo:

La derivada parcial de la función de pérdida para el vector \ (\ theta \) se calcula de la siguiente manera:

\ [\ frac {\ partial} {\ partial \ mathbf \ theta} J (\ mathbf \ theta) = \ mathbf {X} ^ T (\ mathbf {X \ theta} - \ mathbf {Y}) \]

La expresión de actualización del vector θ en el paso 4 es la siguiente:

\ [\ mathbf \ theta = \ mathbf \ theta- \ alpha \ mathbf {X} ^ T (\ mathbf {X \ theta} - \ mathbf {Y}) \]

Esto usa la regla de la cadena de derivación de la matriz y dos fórmulas de derivación de la matriz.

\ [Fórmula 1: \ frac {\ partial} {\ partial \ mathbf {x}} (\ mathbf {x ^ Tx}) = 2 \ mathbf {x} \; \; x es un vector \]

\ [Fórmula 2: \ nabla_Xf (AX + B) = A ^ T \ nabla_Yf, \; \; Y = AX + B, \; \; f (Y) es un escalar \]

3.4 Ajuste del algoritmo de descenso de gradiente

Cuando se utiliza la pendiente de gradiente, se requiere sintonización ¿Qué necesita ser sintonizado?

  1. Selección de paso de algoritmo.
  2. Selección de valores iniciales de los parámetros del algoritmo.
  3. Normalizar La gama de diferentes características de la muestra no son lo mismo, puede conducir a la iteración muy lento, con el fin de reducir el impacto de las características de valor, la normalización de datos característica puede, que es característico para cada x, averiguar sus expectativas \ (\ overline {x} \) y desviación estándar std (x), luego convertida a:

\ [\ frac {x - \ overline {x}} {std (x)} \]

La nueva expectativa de esta característica es 0, y la nueva variación es 1, la velocidad de iteración puede acelerarse considerablemente.

4 La gran familia de descenso de gradiente (BGD, SGD, MBGD)
4.1 Descenso de gradiente discontinuo (Descenso de gradiente discontinuo) El
método de descenso de gradiente discontinuo es la forma más comúnmente utilizada del método de descenso de gradiente. El método específico es utilizar todas las muestras para actualizar los parámetros. Actualización, este método corresponde al algoritmo de descenso de gradiente de regresión lineal de 3.3.1 anterior, lo que significa que el algoritmo de descenso de gradiente de 3.3.1 es el método de descenso de gradiente por lotes. 

\ [\ theta_i = \ theta_i- \ alpha \ sum \ limits_ {j = 1} ^ {m} (h_ \ theta (x_0 ^ {(j)}, x_1 ^ {(j)}, ... x_n ^ { (j)}) - y_j) x_i ^ {(j)} \]

Como tenemos m muestras, los datos de gradiente de todas las m muestras se utilizan para encontrar el gradiente.
4.2 Descenso de gradiente estocástico (Descenso de gradiente estocástico) El
método de descenso de gradiente estocástico es en realidad similar al método de descenso de gradiente por lotes. La diferencia es que en lugar de usar todas las m muestras de datos al calcular el gradiente, solo se usa una muestra j para encontrar el gradiente. . La fórmula de actualización correspondiente es:

\ [\ theta_i = \ theta_i- \ alpha (h_ \ theta (x_0 ^ {(j)}, x_1 ^ {(j)}, ... x_n ^ {(j)}) - y_j) x_i ^ {(j )} \]

El método de descenso de gradiente estocástico y el método de descenso de gradiente por lotes de 4.1 son dos extremos, uno usa todos los datos para el descenso de gradiente y otro usa una muestra para el descenso de gradiente. Las ventajas y desventajas naturales son muy importantes. Para la velocidad de entrenamiento, el método de descenso de gradiente estocástico usa solo una muestra para iterar cada vez, y la velocidad de entrenamiento es muy rápida, mientras que el método de descenso de gradiente por lotes no puede satisfacer la velocidad de entrenamiento cuando el tamaño de la muestra es grande. Para mayor precisión, el método de descenso de gradiente estocástico se utiliza para determinar la dirección del gradiente con solo una muestra, lo que resulta en una solución que probablemente no sea óptima. Para la velocidad de convergencia, debido a que el método de descenso de gradiente estocástico itera una muestra a la vez, la dirección de la iteración cambia enormemente y no puede converger rápidamente a la solución óptima local.
Entonces, ¿hay algún método malo que combine las ventajas de ambos métodos? Si! Este es el método de descenso de gradiente de lotes pequeños.
4.3 Descenso de gradiente de mini lote (Descenso de gradiente de mini lote) El
método de descenso de gradiente de mini lote es un compromiso entre el método de descenso de gradiente de lote y el método de descenso de gradiente aleatorio, es decir, para m muestras, usamos x para iterar, 1 <x < m. En general, se puede tomar x = 10. Por supuesto, el valor de x se puede ajustar de acuerdo con los datos de la muestra. La fórmula de actualización correspondiente es:

\ [\ theta_i = \ theta_i- \ alpha \ sum \ limits_ {j = t} ^ {t + x-1} (h_ \ theta (x_0 ^ {(j)}, x_1 ^ {(j)}, .. .x_n ^ {(j)}) - y_j) x_i ^ {(j)} \]

5 Comparación del método de descenso de gradiente y otros algoritmos de optimización sin restricciones
En el aprendizaje automático, el algoritmo de optimización sin restricciones, además del descenso de gradiente, también tiene el método de mínimos cuadrados antes mencionado, además del método de Newton y el método cuasi-Newton.
En comparación con el método de mínimos cuadrados, el método de descenso de gradiente debe elegir el tamaño del paso, mientras que el método de mínimos cuadrados no lo hace. El método de descenso de gradiente es una solución iterativa, y el método de mínimos cuadrados es una solución analítica. Si el tamaño de la muestra no es muy grande y hay una solución analítica, el método de mínimos cuadrados tiene una ventaja sobre el método de descenso de gradiente, y la velocidad de cálculo es rápida. Sin embargo, si el tamaño de la muestra es grande, el método de mínimos cuadrados requiere una matriz inversa súper grande, que es difícil o lenta para resolver la solución analítica. El método de descenso de gradiente iterativo tiene ventajas.
En comparación con el método de Newton / método cuasi-Newton, el método de descenso de gradiente es iterativo, pero el método de descenso de gradiente es la solución de gradiente, y el método de Newton / método cuasi-Newton se resuelve utilizando la matriz inversa o la matriz pseudo-inversa de la arpillera de segundo orden . Relativamente hablando, el método Newton / método cuasi-Newton converge más rápido. Pero el tiempo de cada iteración es más largo que el método de descenso de gradiente.

Referencia: https://www.cnblogs.com/pinard/p/5970503.html

Supongo que te gusta

Origin www.cnblogs.com/whiteBear/p/12727080.html
Recomendado
Clasificación