Comenzaré con una observación general: la información de primer orden (es decir, usando solo gradientes, que codifican la pendiente) solo puede brindarle información direccional: puede decirle que el valor de la función disminuye en la dirección de búsqueda, pero no por cuánto tiempo . Para decidir qué tan lejos ir a lo largo de la dirección de búsqueda, necesita información adicional (el descenso del gradiente con longitudes de paso constantes puede fallar incluso en problemas cuadráticos convexos) Para esto, básicamente tienes dos opciones:
- Use información de segundo orden (que codifica la curvatura), por ejemplo, usando el método de Newton en lugar del descenso de gradiente (para el cual siempre puede usar la longitud de paso suficientemente cerca del minimizador).1
- Prueba y error (por lo que, por supuesto, me refiero a usar una búsqueda de línea adecuada como Armijo).
Si, mientras escribe, no tiene acceso a segundas derivadas, y evaluar la función de obediencia es muy costoso, su única esperanza es comprometerse: use suficiente información aproximada de segundo orden para obtener una buena longitud de paso de candidato, de modo que una línea la búsqueda solo necesita evaluaciones (es decir, como máximo un múltiplo constante (pequeño) del esfuerzo que necesita para evaluar su gradiente).O(1)
Una posibilidad es utilizar las longitudes de paso Barzilai - Borwein (véase, por ejemplo, Fletcher: sobre el método Barzilai-Borwein . Optimización y control con aplicaciones, 235–256, Appl. Optim., 96, Springer, Nueva York, 2005 ). La idea es utilizar una aproximación de diferencia finita de la curvatura a lo largo de la dirección de búsqueda para obtener una estimación del tamaño del paso. Específicamente, elija arbitrario, establezca y luego para :g 0 : = ∇ f ( x 0 ) k = 0 , . . .α0>0g0:=∇f(x0)k=0,...
- Establezca yx k + 1 = x k + s ksk=−α−1kgkxk+1=xk+sk
- Evalúe y establezcagk+1=∇f(xk+1)yk=gk+1−gk
- Establecerαk+1=(yk)Tyk(yk)Tsk
Se puede demostrar que esta opción converge (en la práctica muy rápidamente) para funciones cuadráticas, pero la convergencia no es monótona (es decir, el valor de la función puede ser mayor que , pero solo de vez en cuando; vea el diagrama en la página 10 en el artículo de Fletcher). Para las funciones no cuadráticas, debe combinar esto con una búsqueda de línea, que debe modificarse para tratar la no monotonicidad. Una posibilidad es elegir (por ejemplo, retrocediendo) de modo que
donde es el parámetro típico de Armijo yf(xk+1)f(xk)σk∈(0,α−1k)
f(xk−σkgk)≤maxmax(k−M,1)≤j≤kf(xj)−γσk(gk)Tgk,
γ∈(0,1)Mcontrola el grado de monotonicidad (p. ej., ). También hay una variante que usa valores de gradiente en lugar de valores de función, pero en su caso el gradiente es aún más costoso de evaluar que la función, por lo que no tiene sentido aquí. (Nota: por supuesto, puede intentar aceptar ciegamente las longitudes de los pasos BB y confiar en su suerte, pero si necesita algún tipo de solidez, como escribió en sus comentarios, sería una muy mala idea).
M=10
Un enfoque alternativo (y, en mi opinión, mucho mejor) sería utilizar esta aproximación de diferencia finita ya en el cálculo de la dirección de búsqueda; Esto se llama un método cuasi-Newton . La idea es construir una aproximación incremental de la de Hesse utilizando diferencias de gradientes. Por ejemplo, podría tomar (la matriz de identidad) y para resolver
y establece
con como arriba y . (Esto se llama actualización Broyden∇2f(xk)H0=Idk=0,…
Hksk=−gk,(1)
ykxk+1=xk+skHk+1=Hk+(yk−Hksk)T(sk)T(sk)Tsk
ykxk+1=xk+sky rara vez se usa en la práctica; Una actualización mejor pero un poco más complicada es la
actualización BFGS , para lo cual, y más información, me refiero al libro de
Optimización numérica de Nocedal y Wright .) La desventaja es que a) esto requeriría resolver un sistema lineal en cada paso (pero solo del tamaño de lo desconocido, que en su caso es una condición inicial, por lo tanto, el esfuerzo debe dominarse resolviendo PDE para obtener el gradiente; también, existen reglas de actualización para aproximaciones de la arpillera
inversa , que solo requieren calcular una matriz única -vector producto) yb) todavía necesita una búsqueda de línea para garantizar la convergencia ...
Afortunadamente, en este contexto existe un enfoque alternativo que hace uso de cada evaluación de la función. La idea es que para simétrico y positivo definido (que está garantizado para la actualización BFGS), resolver es equivalente a minimizar el modelo cuadrático
En un método de región de confianza , lo haría con la restricción adicional que , donde es un radio de región de confianza elegido adecuadamente (que desempeña el papel de la longitud del paso ). La idea clave ahora es elegir este radio de forma adaptativa, en función del paso calculado. Específicamente, miras la relación
(1) q k ( s ) = 1Hk(1)‖S‖≤Δk
qk(s)=12sTHks+sTgk.
∥s∥≤ΔkΔkσkρk:=f(xk)−f(xk+sk)f(xk)−qk(sk)
de la reducción real y prevista del valor de la función. Si es muy pequeño, su modelo era malo y descarta e intenta nuevamente con . Si está cerca de , su modelo es bueno y configura y aumenta . De lo contrario, simplemente establezca y deje solo . Para calcular el minimizador real de
ρkskΔk+1<Δkρk1xk+1=xk+skΔk+1>Δkxk+1=xk+skΔkskmin∥s∥≤Δkqk(s), existen varias estrategias para evitar tener que resolver el problema de optimización con restricciones completas; mi favorito es
el método de CG truncado de Steihaug . Para más detalles, nuevamente me refiero a Nocedal y Wright.