Si los hessianos son tan buenos para la optimización (ver, por ejemplo, el método de Newton ), ¿por qué detenerse allí? ¿Vamos a usar las derivadas tercera, cuarta, quinta y sexta? Por qué no?
Si los hessianos son tan buenos para la optimización (ver, por ejemplo, el método de Newton ), ¿por qué detenerse allí? ¿Vamos a usar las derivadas tercera, cuarta, quinta y sexta? Por qué no?
Respuestas:
Estoy interpretando la pregunta como "¿Por qué el método de Newton solo usa derivadas primera y segunda, no derivadas de terceros o superiores?"
En realidad, en muchos casos, ir a la tercera derivada ayuda; Lo he hecho con cosas personalizadas antes. Sin embargo, en general, ir a derivados más altos agrega complejidad computacional: debe encontrar y calcular todos esos derivados, y para problemas multivariados, ¡hay muchas más terceras derivadas que primeras derivadas! - eso supera con creces los ahorros en conteo de pasos que obtienes, si corresponde. Por ejemplo, si tengo un problema tridimensional, tengo 3 primeras derivadas, 6 segundas derivadas y 10 terceras derivadas, por lo que ir a una versión de tercer orden más que duplica el número de evaluaciones que tengo que hacer (de 9 a 19), por no mencionar la mayor complejidad de calcular la dirección / tamaño del paso una vez que he realizado esas evaluaciones, pero casi seguramente no reducirá a la mitad la cantidad de pasos que tengo que dar.
Ahora, en el caso general con variables, la colección de n t h derivados parciales número ( k + n - 1, entonces, para un problema con cinco variables, el número total de derivadas parciales tercera, cuarta y quinta será igual a 231, un aumento de más de 10 veces sobre el número de derivadas parciales primera y segunda (20). Tendría que tener un problema que es muy, muy cercano a un polinomio de quinto orden en las variables para ver una reducción lo suficientemente grande en los recuentos de iteraciones para compensar esa carga computacional adicional.
Realmente no veo cuál es el aspecto estadístico de esta pregunta, así que responderé la parte de optimización.
Casi todas las respuestas aquí se centran solo en el costo de iteración e ignoran el recuento de iteraciones . Pero ambos importan. Un método que itera en 1 nanosegundo pero que requiere iteraciones para converger no te servirá de nada. Y un método que explote tampoco ayudará, no importa cuán barato sea su costo de iteración.
Veamos qué está pasando.
En parte porque (y esto también es cierto para el segundo orden, pero más sobre eso en un momento):
¡Por otro lado, explotan más fácilmente cuando están más lejos de lo óptimo!
(Por supuesto, esto no siempre es cierto; por ejemplo, una cuadrática convergerá en 1 paso con el método de Newton. Pero para funciones arbitrarias en el mundo real que no tienen buenas propiedades, esto es generalmente cierto).
Esto significa que cuando está más lejos de lo óptimo, generalmente desea un método de bajo orden (léase: primer orden). Solo cuando está cerca desea aumentar el orden del método.
Para ver por qué, primero debes entender qué es la "convergencia cuadrática" significa .
Matemáticamente, la convergencia cuadrática significa que, si es su error en la iteración k , entonces lo siguiente finalmente es cierto para alguna constante c :
En inglés simple, esto significa que, una vez que esté cerca del óptimo (¡importante!), Cada paso adicional se duplica el número de dígitos de precisión .
¿Por qué? Es fácil de ver con un ejemplo: para y | ϵ 1 | = 0.1 , tienes | ϵ 2 | ≤ 0.01 , | ϵ 3 | ≤ 0.0001 , etc., que es ridículamente rápido. (Es súper exponencial !)
En realidad, las personas a menudo hacen esto cuando los derivados de segundo orden se vuelven demasiado caros. Pero la convergencia lineal puede ser muy lenta. por ejemplo, si obtuviste , necesitarías quizás 10,000,000 iteraciones con convergencia lineal para obtener | ϵ | < 0.5 , pero solo 23 iteraciones con convergencia cuadrática. Entonces puede ver por qué hay una diferencia drástica entre la convergencia lineal y cuadrática. Esto no es cierto para la convergencia de segundo y tercer orden, por ejemplo (ver el siguiente párrafo).
En este punto, si conoce alguna ciencia de la computación, comprende que con la convergencia de segundo orden, el problema ya está resuelto . Si no ve por qué, aquí está el por qué: no hay nada práctico que ganar triplicando el número de dígitos en cada iteración en lugar de duplicarlo : ¿qué le va a comprar? Después de todo, en una computadora, incluso un double
número de precisión tiene 52 bits de precisión, que son alrededor de 16 dígitos decimales.
Tal vez disminuirá el número de pasos que necesita de 16 a 3 ... lo cual suena genial, hasta que se dé cuenta de que tiene que calcular las terceras derivadas en cada iteración, que es donde está la maldición de la dimensionalidad.
La otra mitad es que generalmente obtienes un comportamiento peor cuando estás lejos de lo óptimo, lo que generalmente afecta negativamente la cantidad de iteraciones que tienes que hacer.
En una configuración general, los métodos de orden superior a 2 son una mala idea. Por supuesto, si puede aportar supuestos útiles adicionales a la tabla (por ejemplo, tal vez sus datos se parezcan a un polinomio de alto grado, o si tiene formas de delimitar la ubicación del óptimo, etc.), entonces tal vez pueda encontrar que son es una buena idea, pero será una decisión específica del problema y no una regla general para vivir.
Por lo general, la compensación no es favorable para ir más allá de Hesse. Me refiero a la compensación entre la ganancia potencial de velocidad mediante el uso de aproximaciones de mayor orden frente a la amplificación de ruido. Siempre tiene ruido en las entradas porque estamos hablando de aplicaciones estadísticas. Este ruido será amplificado por las derivadas.
Si juega al golf, entonces la analogía en la optimización es primero balancearse tratando de llegar al green, no preocuparse demasiado por un hoyo. Una vez, en el green, pondremos un hoyo.
Por lo general, cuando analiza la efectividad de dichos algoritmos, encontrará resultados como un paso de un algoritmo de cuarto orden que tiene aproximadamente la misma efectividad que dos pasos de un algoritmo de segundo orden.
Por lo tanto, la elección de qué algoritmo usar es relativamente simple: si un paso del algoritmo de cuarto orden requiere el doble de trabajo o más de un paso del algoritmo de segundo orden, debería usar el último.
Esa es la situación típica de este tipo de métodos: el algoritmo clásico tiene la relación óptima de trabajo a efectividad para problemas generales. Si bien hay problemas ocasionales en los que un enfoque de orden superior es inusualmente fácil de calcular y puede superar a la variante clásica, son relativamente poco comunes.
Puede pensar en el orden de las derivadas como el orden de una aproximación polinómica a la función. La mayoría de las rutinas de optimización dependen de la convexidad. Un polinomio cuadrático será convexo / cóncavo en todas partes, mientras que un polinomio de tercer orden o superior no será convexo en todas partes. La mayoría de las rutinas de optimización se basan en aproximaciones sucesivas de funciones convexas con cuadráticos por este motivo. Una aproximación cuadrática que es convexa requiere que se imponga una condición de definición positiva para que la cuadrática sea convexa.
¿Por qué el modelo de tercer orden de dirección única puede ser beneficioso? Por ejemplo, porque una derivada cercana a cero segundos en esta dirección básicamente significa dos escenarios alternativos: meseta o punto de inflexión: solo el primero requiere un tamaño de paso más grande, y la tercera derivada permite distinguirlos.
Creo que iremos hacia métodos híbridos de orden múltiple: método de segundo orden en un subespacio de baja dimensión, por ejemplo, de PCA de gradientes recientes, lo que aún permite el descenso de gradiente simultáneo de primer orden libre hacia parte del gradiente ortogonal a este subespacio ... y adicionalmente Agregaría, por ejemplo, el modelo de tercer orden para una dirección más relevante.