Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Métodos Quasi-Newton
Ideas Generales
• Los métodos vistos hasta el momento
(descenso más rápido y gradiente conjugado)
tienen orden de convergencia lineal
• El método de Newton, el cual utiliza información
de la matriz Hessiana de f(x), tiene orden de
convergencia cuadrático. Sin embargo, calcular
esta matriz es un procedimiento costoso y no
siempre factible
• Los métodos Quasi-Newton se basan en utilizar
aproximaciones sucesivas de la matriz Hessiana
para acelerar el proceso de convergencia
Programación no lineal sin restricciones
1er semestre de 2010
4/33
Definiciones Básicas
Gradiente y Matriz Hessiana
• Gradiente: vector formado por las derivadas parciales de una función. El
gradiente evaluado en un punto dado apunta en al dirección de mayor
ascenso de la función
∂f x( x )
∂f (1x )
∇f (x ) = x 2
...
∂f ( x )
xn
• Matriz Hessiana: matriz simétrica formada por las derivadas parciales del
gradiente de una función. La matriz Hessiana da información de la
curvatura de una función
∂ f (2x ) ∂2 f (x) ∂2 f (x)
2
∂x1∂x2
... ∂x1∂xn
2∂x1
∂∂x1f∂(xx2) ∂2 f (x)
... ∂∂x2f∂(xxn)
2
F ( x) = ∂x22
2... ... ... ...
∂∂xf∂(xx ) ∂ f (x)
... ∂ ∂fx(2x )
2 2
1 n ∂x2∂xn n d T F ( x * )d > 0
Definiciones básicas
Matriz definida positiva
• Matriz definida positiva
– Una matriz es definida positiva si para todo d, se
cumple dTAd > 0
– Una matriz es definida positiva si todos sus valores
propios son mayores a 0
Definiciones básicas
Orden de convergencia
∞
Sea k k =0 una secuencia de números reales
{r }
convergiendo al límite r*. Si la secuencia es de
orden de convergencia p , donde p es un número
no negativo, se cumple que asintóticamente
* p
rk +1 − r = β rk − r
*
Definiciones básicas
• Vectores ortogonales
Dos vectores a y b son ortogonales si aTb = 0
Definiciones Básicas
Series de Taylor
Representación de una función como una
suma infinita de términos calculados a partir
de los valores de derivadas de orden
superior en un punto
∞ (n)
f ( x) = ∑
f (a)
(x − a )n
n =0 n!
Método de Newton
• Para una función no lineal f(x) con matriz hessiana F(x) la
aproximación de Taylor de segundo orden es
f (x) = f (x k ) + ∇f (x k )T (x − x k ) + 12 (x − x k )T F (x k )(x − xk )
• El mínimo de esta aproximación está dado por
x min = x k − [F (x k )] ∇f (x k )
−1
x k +1 = x k − α [F (x k )] ∇f (x k )
−1
Método de Newton
Método de Newton
Precauciones
• Observe que el método de Newton puede ser visto como
perteneciente a la familia general de algoritmos
x k +1 = x k − α k M k ∇f ( x k )
Método de Newton
Precauciones
x k +1 = x k − α [F( x k )] ∇f ( x k )T
−1
x k +1 = x k − α [εI + F (x k )] ∇f (x k )T
−1
Método de Newton
Ejemplos
Para funciones cuadráticas la aproximación es exacta y el
método converge en un solo paso
T
1 T 2 0 3
f (x) = x x− x+4
2 0 8 5
Método de Newton
Ejemplos
f ( x, y ) = ( x 3 − 8 x 2 ) cos( x) + 3( y 3 − 8 y 2 ) cos( y )
x2 = [7.5 7.5]
x1 = [7 6] Método # iter
DMR1 16
NWT1 11
xopt = [6.09 6.09]
DMR2 16
El método de Newton tiende a converger más tol = 1x10-6
rápido que el de descenso por gradiente, sin NWT2 -
embargo falla si la matriz Hessiana no es
definida positiva LM2 14
Métodos Quasi-Newton
• Calcular la matriz Hessiana de una función y su
inversa puede ser un procedimiento muy
costoso e impráctico
• Una solución a este problema es utilizar
aproximaciones a la inversa de la matriz
Hessiana en lugar de la inversa real. Esta es
la idea subyacente de los métodos Quasi-
Newton
• Las aproximaciones se construyen a partir de
información del gradiente durante un proceso de
descenso
Programación no lineal sin restricciones
1er semestre de 2010
16/33
Métodos Quasi-Newton
Construcción de la inversa de la matriz Hessiana
• Sea f(x) en Rn una función con segundas derivadas parciales
continuas. Para dos puntos xk+1 y xk, con g i = ∇f ( x i ) y matriz
Hessiana constante F se cumple
q k ≡g k +1 −g k , p k ≡ x k +1 − x k
q k = Fp k (1)
• Esto implica que F puede ser determinada de manera única a
partir de n direcciones linealmente independientes y sus
respectivos valores del gradiente
Ejemplo ilustrativo
Descripción y puntos iniciales
f (x) = 2.5 x 2 + 2.5 y 2 + 2.5 z 2 + 2.5w2 + 2 xy + 2wz − x − 2 y − 3 z − 4w
f (x) = 12 x T Fx − bx
Método
∇f (x) = g (x) = Fx − b •Descenso más rápido
5 2 0 0 1
2 5 0 0 2
F= , b=
0 0 5 2 3
0 0 2 5 4
0 − 1
0 − 2
x0 = ∇f (x 0 ) = Fx 0 − b =
0 − 3
0 − 4
Ejemplo ilustrativo
Primera iteración
0.1456
0 − 1 0.2913
0 − 2 p 0 = x1 − x 0 =
x0 = ∇f (x 0 ) = Fx 0 − b = 0.4369
0 − 3
0.5825
0 − 4
1.3107
1.7476
q 0 = g1 − g 0 =
0.1456 0.3107 3.3495
0.2913 − 0.2524
3 .7864
x1 = ∇f (x1 ) = Fx1 − b =
0.4369 − 0.3495
1.3107
0.5825 − 0.2136 1.7476
Fp 0 =
3.3495
3.7864
Programación no lineal sin restricciones
1er semestre de 2010
19/33
Ejemplo ilustrativo
Segunda iteración
− 0.0992
0.0806
0.1456 0.3107
0.2913 − 0.2524 p1 = x 2 − x1 =
− 0.1115
x1 = ∇f (x1 ) = Fx1 − b =
0.4369 − 0.3495 0.0682
0.5825 − 0 .2136
− 0.3346
0.2045
0.0465 − 0.0240 q1 = g 2 − g1 =
0.3718 − 0.0479 − 0.4214
x2 = ∇f (x ) = Fx − b = 0.1177
0.3253 2 2
− 0.0719
0.6507 − 0.0958 1.3107 − 0.3346
1.7476 0.2045
F[p 0 p1 ] = = [q q1 ]
3.3495 − 0.4214 0
3.7864 0.1177
Programación no lineal sin restricciones
1er semestre de 2010
20/33
Ejemplo ilustrativo
Tercera iteración
0.0035
0.0465 − 0.0240 0.0070
0.3718 − 0.0479 p2 = x3 − x 2 =
x2 = ∇f (x ) = Fx − b = 0.0105
0.3253 2 2
− 0.0719
0.0140
0.6507 − 0.0958
0.0314
0.0500 0.0074 0.0419
0.3788 − 0.0060 q 2 = g3 − g 2 =
0.0803
x3 = ∇f (x ) = Fx − b =
0.3358 3 3
− 0.0084 0 .0907
0 .6647 − 0.0051
1.3107 − 0.3346 0.0314
1.7476 0.2045 0.0419
F[p 0 p1 p2 ] = = [q 0 q1 q 2 ]
3.3495 − 0.4214 0.0803
3.7864 0.1177 0.0907
Programación no lineal sin restricciones
1er semestre de 2010
21/33
Ejemplo ilustrativo
Cuarta iteración
0.0500 0.0074 − 0.0024
0.3788 − 0.0060 0.0019
x3 = ∇f (x ) = Fx − b = p3 = x 4 − x 3 =
0.3358 3 3
− 0.0084 − 0.0027
0.6647 − 0.0051 0.0016
Métodos Quasi-Newton
Condición Quasi-Newton
• Es natural intentar construir aproximaciones sucesivas
Hk de F-1 de forma tal que en cada iteración estas sean
consistentes con q k = Fp k para todas las direcciones
utilizadas. Es decir
H k +1q k = p k , 0 ≤ i ≤ k Condición Quasi-Newton
Métodos Quasi-Newton
Aproximación de rango uno
• Una solución sencilla es actualizar iterativamente añadiendo una
matriz simétrica de (a lo sumo) rango uno que satisfaga la
condición Quasi-Newton. Una forma de conseguir esto es hacer
H k +1 = H k +
(p k − H k q k )(pk − H k q k )
T
Matriz simétrica de (a lo
q k (p k − H k qk )
T
sumo) rango uno
siendo q k ≡g k +1 −g k y p k ≡ x k +1 −x k
Ejemplo ilustrativo
Descripción y puntos iniciales
f (x) = 2.5 x 2 + 5 y 2 + 1.5 z 2 + w2 + 2 xy + 2wz − x − 2 y − 3 z − 4w Métodos
•Descenso más rápido
f (x) = 12 x T Fx − bx •Actualización del Hessiano
∇f (x) = g (x) = Fx − b de rango uno
5 2 0 0 1 0.2174 − 0.0435 0 0
2 10 0 0 2 0
−1 − 0.0435 0.1087 0
F= , b = , F =
0 0 3 2 3 0 0 1 − 1
0 0 2 2 4 0 0 − 1 1.5
10 69 1 0 0 0
10 118 0 1 0 0
x0 = g0 = H0 = F −1 − H 0 = 1.9133
10 47 0 0 1 0
10 36 0 0 0 1
Ejemplo ilustrativo
Primera iteración
10 69 − 7.2359
10 118 − 12.3744
x0 = g0 = p 0 = x1 − x 0
10 47 − 4.9288
10 36 − 3 .7752
− 60.9281
− 138.2156
2.7641 8.0719 q 0 = g1 − g 0 =
− 2.3744 − 20.2156 − 22.3368
x1 = g1 =
5.0712 24.6632 − 17.4080
6.2248 18.5920 0.8646 − 0.3174 − 0.0439 − 0.0344
− 0.3174 0.2562 − 0.1029 − 0.0806
H1 =
− 0.0439 − 0.1029 0.9858 − 0.0111
− 0.0344 − 0.0806 − 0.0111 0.9913
F −1 − H 1 = 1.6869
Programación no lineal sin restricciones
1er semestre de 2010
26/33
Ejemplo ilustrativo
Segunda iteración
2.7641 8.0719 − 1.4210
− 2.3744 − 20.2156 3.5589
x1 = g1 = p 1 = x 2 − x1
5.0712 24.6632 − 4.3419
6. 2248 18.5920 − 3.2731
0.0126
32.7471
1.3431 8.0845 q1 = g 2 − g1 =
1.1845 12.5315 − 19.5719
x2 = g2 =
0.7293 5.0913 − 15.2300
0.7959 − 0.2443 − 0.2084 − 0.1634
2.9517 3.3620
− 0.2443 0.1784 0. 0722 0. 0568
H2 =
− 0.2084 0.0722 0.5918 − 0.3203
− 0.1634 0.0568 − 0.3203 0.7486
F −1 − H 2 = 1.4941
Programación no lineal sin restricciones
1er semestre de 2010
27/33
Ejemplo ilustrativo
Tercera iteración
− 0.8493
1.3431 8.0845 − 1.3165
1.1845 12.5315 p2 = x3 − x 2 =
x2 = g2 = − 0.5349
0.7293 5.0913
− 0.3532
2.9517 3.3620
− 6.8797
− 14.8638
0.4938 1.2048 q 2 = g3 − g 2 =
− 0.1320 − 2.3323 − 2.3110
x3 = g3 = − 1.7762
0.1944 − 2.7803
2.5985 1.5858 0.2140 − 0.0423 0.0415 − 0.0509
− 0.0423 0.1083 − 0.0145 0.0178
H3 =
0.0415 − 0.0145 0.4845 − 0.3687
− 0 .0509 0. 0178 − 0. 3687 0 .7269
F −1 − H 3 = 1.2924
Ejemplo ilustrativo
Cuarta iteración
1.2048 − 0.2145
0.4938 0.4152
− 0.1320 − 2.3323
g3 = p3 = x 4 − x 3 =
x3 =
− 2.7803 − 0.4949
0.1944
− 0.2823
2 .5985 1.5858
− 0.2420
3.7226
0.2793 0.9628 q3 = g4 − g3 =
0.2832 1.3903 − 2.0492
x4 = g4 = − 1.5543
− 0.3005 0.7311
0.2174 − 0.0435 − 0.0000 0.0000
2. 3162 0 .0315 − 0.0435 0.1087 − 0.0145 − 0.0000
H4 =
− 0.0000 0.0000 1.0000 − 1.0000
0.0000 − 0.0000 − 1.0000 1.5000
F −1 − H 4 = 2.5 × 10 −11
Programación no lineal sin restricciones
1er semestre de 2010
29/33
Métodos Quasi-Newton
Método de Davidon-Fletcher-Powell
• Este es el método más antiguo y uno de los más ingeniosos
(Davidon 1959 y Fletcher-Powell 1963)
Métodos Quasi-Newton
Método de Broyden-Fletcher-Goldfarb-Shanno
• Es posible actualizar la matriz Hessiana directamente (en
lugar de su inversa) utilizando la condición
q k = Fp k
⇒ q k = B k +1 p k , 0 ≤ i ≤ n
siendo Bk la k-ésima aproximación a la matriz Hessiana
Métodos Quasi-Newton
Método de Broyden-Fletcher-Goldfarb-Shanno
• Haciendo esta transformación para la fórmula de David-
Flecther-Powell tenemos
T T
q q B p p B
B k +1 = B k + k T k − k Tk k k
qk pk pk B k pk
• La inversa analítica de esta transformación es, conocida
como la actualización de Broyden-Fletcher-Goldfarb-Shanno
para H y está dada por
qk T Hk qk p k p k T p k q k T H k + H k q k pk T
H BFGS
k +1 = H k + 1 + T
T −
p q T
q k pk k k q k pk
Método de Broyden-Fletcher-Goldfarb-Shanno
Ejemplo
f ( x, y ) = ( x 3 − 8 x 2 ) cos( x) + 3( y 3 − 8 y 2 ) cos( y )
Método # iter