¿Por qué usar el descenso de gradiente para la regresión lineal, cuando hay disponible una solución matemática de forma cerrada?

74

Estoy tomando los cursos de Machine Learning en línea y aprendí sobre Gradient Descent para calcular los valores óptimos en la hipótesis.

h(x) = B0 + B1X

¿Por qué necesitamos usar el Descenso de degradado si podemos encontrar fácilmente los valores con la siguiente fórmula? Esto parece sencillo y sencillo también. pero GD necesita múltiples iteraciones para obtener el valor.

B1 = Correlation * (Std. Dev. of y/ Std. Dev. of x)

B0 = Mean(Y) – B1 * Mean(X)

NOTA: Tomado como en https://www.dezyre.com/data-science-in-r-programming-tutorial/linear-regression-tutorial

Verifiqué las siguientes preguntas y para mí no estaba claro de entender.

¿Por qué se requiere el descenso de gradiente?

¿Por qué se resuelve la optimización con descenso de gradiente en lugar de con una solución analítica?

Las respuestas anteriores comparan GD versus el uso de derivados.

Purus
fuente
55
No necesita pendiente de gradiente para estimar los coeficientes de regresión lineal.
Restablece a Monica
8
@Sycorax "no necesita" es una declaración contundente. El método iterativo puede ser útil para grandes datos. Digamos que la matriz de datos es muy grande y no cabe en la memoria.
Haitao Du
8
@ hxd1011 Gracias por aclarar esta dimensión práctica del problema. Estaba pensando en términos puramente matemáticos.
Restablece a Monica

Respuestas:

90

La razón principal por la que se usa el descenso de gradiente para la regresión lineal es la complejidad computacional: es computacionalmente más barato (más rápido) encontrar la solución usando el descenso de gradiente en algunos casos.

La fórmula que escribió parece muy simple, incluso computacionalmente, porque solo funciona para casos univariados, es decir, cuando solo tiene una variable. En el caso multivariante, cuando tiene muchas variables, la fórmula es un poco más complicada en papel y requiere muchos más cálculos cuando la implementa en el software: Aquí, usted necesita calcular la matriz luego invertirla (vea la nota a continuación). Es un cálculo costoso. Para su referencia, la matriz X (de diseño) tiene columnas K + 1 donde K es el número de predictores y N filas de observaciones. En un algoritmo de aprendizaje automático, puede terminar con K> 1000 y N> 1,000,000. La matriz sí misma tarda un poco en calcular, luego hay que invertirX X X X K × K

β=(XX)1XY
XXXXK×K matriz - esto es costoso.

Entonces, el descenso de gradiente permite ahorrar mucho tiempo en los cálculos. Además, la forma en que se realiza permite una paralelización trivial, es decir, distribuye los cálculos en múltiples procesadores o máquinas. La solución de álgebra lineal también se puede paralelizar, pero es más complicada y aún cara.

Además, hay versiones de descenso de gradiente cuando mantiene solo una parte de sus datos en la memoria, lo que reduce los requisitos de memoria de la computadora. En general, para problemas extra grandes es más eficiente que la solución de álgebra lineal.

Esto se vuelve aún más importante a medida que aumenta la dimensionalidad, cuando tiene miles de variables como en el aprendizaje automático.

Observación . Me sorprendió cuánta atención se presta al descenso de gradiente en las conferencias de Ng. Pasa una cantidad de tiempo no trivial hablando de ello, tal vez el 20% de todo el curso. Para mí es solo un detalle de implementación, es exactamente cómo encuentras el óptimo. La clave está en formular el problema de optimización, y cómo exactamente lo encuentra no es esencial. No me preocuparía demasiado por eso. Déjelo en manos de los informáticos y concéntrese en lo que es importante para usted como estadístico.

Dicho esto, debo calificar diciendo que es realmente importante comprender la complejidad computacional y la estabilidad numérica de los algoritmos de solución. Todavía no creo que deba conocer los detalles de implementación y el código de los algoritmos. Por lo general, no es el mejor uso de su tiempo como estadístico.

Nota 1 . Escribí que tienes que invertir la matriz para propósitos didácticos y no es cómo usualmente resuelves la ecuación. En la práctica, los problemas de álgebra lineal se resuelven utilizando algún tipo de factorización como QR, donde no invierte directamente la matriz sino que realiza otras manipulaciones matemáticamente equivalentes para obtener una respuesta. Hace esto porque la inversión matricial es una operación costosa y numéricamente inestable en muchos casos.

Esto trae otra pequeña ventaja del algoritmo de descenso de gradiente como efecto secundario: funciona incluso cuando la matriz de diseño tiene problemas de colinealidad. La trayectoria habitual de álgebra lineal explotaría y el descenso del gradiente continuará incluso para los predictores colineales.

Aksakal
fuente
17
Pero Ng es una persona informática.
ameba dice Reinstate Monica
21
Con respecto a su comentario: Como matemático, solía estar de acuerdo. Pero ahora entiendo que en el aprendizaje automático moderno, el método de optimización está inherentemente relacionado con el objetivo que se está optimizando. Algunas formas de regularización, como el abandono, se expresan de manera más clara en términos del algoritmo en lugar del objetivo. En resumen: si toma una red profunda, mantenga la función objetivo pero cambie el método de optimización, puede obtener un rendimiento muy diferente. De hecho, a veces un mejor optimizador produce peores resultados en la práctica ...
A. Rex
14
Minipick: ciertamente no invertirías ; en su lugar, resolvería el sistema de ecuaciones lineales para . En resumen, es lo mismo, pero numéricamente, es mucho más estable y potencialmente incluso más barato. X X β = X y βXXXXβ=Xyβ
S. Kolassa - Restablece a Monica
3
La solución @AnderBiguri con factorización QR, por otro lado, es estable hacia atrás, por lo tanto, ofrece una solución lo más precisa posible dada la incertidumbre en los datos de entrada.
Federico Poloni
77
Creo que todos deberíamos dejar de escribir y simplemente escribir todo el tiempo. X t X β = X t yβ=(XtX)1XtyXtXβ=Xty
Matthew Drury
21

Primero, recomiendo encarecidamente que lea las siguientes dos publicaciones (si no está duplicada)

Por favor verifique la respuesta de JM en

¿Qué algoritmo se usa en regresión lineal?

Verifique la respuesta de Mark (desde el punto de vista de la estabilidad numérica) en

¿Necesitamos un descenso de gradiente para encontrar los coeficientes de un modelo de regresión lineal?


En resumen, supongamos que queremos resolver el problema de regresión lineal con pérdida cuadrada Podemos establecer la derivada en , y está resolviendo el sistema lineal

minimize Axb2
2AT(Axb)0
ATAx=ATb

En alto nivel, hay dos formas de resolver un sistema lineal. Método directo y el método iterativo. Tenga en cuenta que el método directo está resolviendo , y el descenso de gradiente (un ejemplo de método iterativo) está resolviendo directamente .ATAx=ATbminimize Axb2

En comparación con los métodos directos (decir descomposición QR / LU ). Los métodos iterativos tienen algunas ventajas cuando tenemos una gran cantidad de datos o los datos son muy escasos.

Por otro lado, creo que una de las razones por las que Andrew Ng enfatiza es porque es un método genérico (el método más utilizado en el aprendizaje automático) y puede usarse en otros modelos, como la regresión logística o la red neuronal.

Haitao Du
fuente
Tienes toda la razón. SGD es muy útil mientras maneja una gran cantidad de datos. El método que demuestra el Prof Ng es el más clásico y puro. Uno debe comenzar desde ese punto para tener una idea clara. Si uno puede entender el lema de eso, entonces la estimación lineal completa será clara para él / ella.
Sandipan Karmakar
1
El tamaño de la matriz de datos no es realmente un problema, utilizando la relación ; puede calcular y una observación a la vez. Así es como se hizo en SAS en los días en que la memoria de la computadora era mucho más limitada que hoy. Es el número de columnas en el factor limitante. XTX=xixiTXTXXTyX
jbowman
6

Sycorax es correcto porque no necesita el descenso de gradiente al estimar la regresión lineal. Su curso podría estar usando un ejemplo simple para enseñarle el descenso de gradiente para presentar versiones más complicadas.

Sin embargo, una cosa interesante que quiero agregar es que actualmente hay un pequeño nicho de investigación que implica terminar el descenso del gradiente temprano para evitar el sobreajuste de un modelo.

Tim Atreides
fuente
2
Para una declaración de sobreajuste, ¿podría proporcionar el enlace? ¿Es mejor agregar el término de regularización que limitar el número de iteraciones?
Haitao Du
Podrías mirar el Capítulo 7 de Aprendizaje profundo de Goodfellow et al, que menciona la detención temprana para evitar el sobreajuste en las redes neuronales.
Batman
2
La regularización mediante paradas tempranas no es en modo alguno una técnica nueva; Es una técnica bien conocida en, por ejemplo, la iteración de Landweber: en.wikipedia.org/wiki/Landweber_iteration
cfh
3

Si no me equivoco, creo que está apuntando hacia el MOOC ofrecido por el profesor Andrew Ng. Para encontrar los coeficientes de regresión óptimos, hay aproximadamente dos métodos disponibles. Una es mediante el uso de ecuaciones normales, es decir, simplemente descubriendo y la segunda es minimizar al mínimo criterio de cuadrados que se deriva de la hipótesis que ha citado. Por cierto, el primer método, es decir, las ecuaciones normales, es un producto del segundo método, es decir, el método de optimización.(XTX)1XTy

El método que ha mencionado, es decir, el uso de correlación, es aplicable solo para un predictor y una cantidad de intercepción. Solo tenga en cuenta la forma. Entonces, cuando el número de predictores es más de uno en número, ¿cuál es la salida? Entonces uno tiene que recurrir a los otros métodos, es decir, la ecuación u optimización normal.

Ahora, ¿por qué la optimización (aquí Pendiente de descenso) aunque la ecuación normal directa está disponible. Observe que en la ecuación normal uno tiene que invertir una matriz. Ahora invertir una matriz cuesta para el cálculo donde es el número de filas en la matriz , es decir, las observaciones. Además, si está mal condicionado, creará errores de cálculo en la estimación. Por lo tanto, es el tipo de algoritmo de optimización Gradiente de Descenso el que nos puede salvar de este tipo de problema. Otro problema es el sobreajuste y el subajuste en la estimación de los coeficientes de regresión.O(N3)NXX

Mi sugerencia para usted es no ir simplemente a resolver un problema. Intenta entender la teoría. El profesor Ng es uno de los mejores profesores del mundo que amablemente enseña Machine Learning en MOOC. Entonces, cuando está instruyendo de esta manera, debe tener algunas intenciones latentes. Espero que no te importen mis palabras.

Todo lo mejor.

Sandipan Karmakar
fuente
55
"Invertir una matriz" NO es muy recomendable. QR es más estable numéricamente para resolver un sistema lineal.
Haitao Du
1
Estoy de acuerdo con el argumento computacional. Sin embargo, el sobreajuste o la falta de ajuste no tienen nada que ver con el uso de GD frente a la ecuación Normal, sino más bien con la complejidad del modelo (de regresión). Ambos métodos (GD si funciona correctamente) encuentran la misma solución de mínimos cuadrados (si existe) y, por lo tanto, sobre o no ajustan los datos en la misma cantidad.
Ruben van Bergen
2

Primero, sí, la verdadera razón es la dada por Tim Atreides; Este es un ejercicio pedagógico.

Sin embargo, es posible, aunque poco probable, que uno quiera hacer una regresión lineal en, digamos, varios billones de puntos de datos que se transmiten desde un socket de red. En este caso, la evaluación ingenua de la solución analítica sería inviable, mientras que algunas variantes del descenso de gradiente estocástico / adaptativo convergerían a la solución correcta con una sobrecarga de memoria mínima.

(se podría, para la regresión lineal, reformular la solución analítica como un sistema de recurrencia, pero esta no es una técnica general).

Timothy Teräväinen
fuente
2

Otra razón es que el descenso de gradiente es un método más general. Para muchos problemas de aprendizaje automático, la función de costo no es convexa (por ejemplo, factorización matricial, redes neuronales), por lo que no puede utilizar una solución de forma cerrada. En esos casos, el descenso de gradiente se utiliza para encontrar algunos buenos puntos óptimos locales. O, si desea implementar una versión en línea, debe usar un algoritmo basado en descenso de gradiente.

Sanyo Mn
fuente