Está en la página 1de 29

El problema general de Optimización: 1

I El problema:
(P ) min f (x)
x∈S

donde f : Rn →RyS⊆ Rn .

I Lo que necesitamos recordar antes de seguir adelante:


I ¿Qué tipo de solución buscamos?
I ¿Qué condiciones nos permiten identificar optimalidad?
I ¿Qué condiciones nos permiten estar seguros de tener una
solución?
El problema general: 2

I El problema:
(P ) min f (x)
x∈S

(donde S puede ser igual a Rn )

I ¿Qué posibilidades tenemos, en general, de poder encontrar


una solución a (P )?

I Busquen el mı́nimo de f (x) = x2 + e−x .

I ¿Y una solución aproximada?


El problema general: 3

I Sea x∗ solución óptima de (P ).


I Sea  > 0.
I Decimos que x̄ ∈ S es una solución -óptima de (P ) si

|f (x̄) − f (x∗ )| ≤ 

I Decimos que x̄ ∈ S es una -aproximación a la solución


óptima de (P ) (o solución -aproximada) si

kx̄ − x∗ k ≤ 

I Pregunta: ¿son equivalentes las dos nociones?


Cómo podemos calcular 4

I Para resolver el problema usaremos un “algoritmo”


I El algoritmo genera una sucesión de puntos, partiendo de
x0 :
x0 , x1 , x2 , . . .
I El algoritmo usa información de la función y las iteraciones
anteriores.
I El algoritmo es un “programa” que usa una subrutina a la
que se le “preguntan” caracterı́sticas de f .
I Esa subrutina es lo que se suele llamar un “oráculo”.
I Orden cero: valores de la función.
I Primer orden: valores y derivadas (o algo parecido).
I Segundo orden: valores, derivadas y segundas derivadas.
Y qué nos interesa saber 5

I Queremos saber qué tan eficiente es un algoritmo, qué tan


rápido podemos resolver un problema.

I Dado un error aceptable  > 0, ¿cuánto tiempo necesitamos


para obtener ese error?

I El “tiempo” podrı́amos medirlo en iteraciones del


algoritmo...
I Y eso analizaremos en los algoritmos que estudiaremos.
I Pero al final nos interesa el tiempo real....
Qué podemos calcular 6

I Un algoritmo en un problema sin información o poca, no lo


hará muy bien...
I Para lograr que los algoritmos funcionen mejor en nuestros
problemas, tendremos que ir pidiendo más propiedades a la
función y/o al conjunto de restricciones:
I Usar oráculos de mayor orden
I Pedir estructura más fuerte, como por ejemplo,
convexidad.

I Y esas propiedades adicionales permitirán mejorar la


eficiencia.
I Ahora iremos directo a repasar Métodos para problemas no
restringidos
I Recordaremos: Método del Gradiente y el Método de
Newton
I Pero avanzaremos más allá.

I El problema a estudiar:

(P ) min f (x)
x∈Rn

donde f es, al menos, continua.


La idea del Algoritmo de Descenso 8

I El enfoque básico: direcciones de descenso.

Definición
Un vector d 6= 0 se dice una dirección de descenso de f en x si
existe r > 0 tal que f (x + λd) < f (x) para todo 0 < λ ≤ r.
I Tenemos:
Proposición
Si d es tal que d> ∇f (x) < 0, entonces d es una dirección de
descenso en x.
La idea del Algoritmo de Descenso 9

I Método básico de descenso:


0. Sea x0 ∈ Rn , k = 0.
1. Sea dk una dirección de descenso en xk
2. Verificar criterio de parada y STOP si se cumple.
3. Si no, sea λk solución óptima de

min f (xk + λdk )


λ≥0

4. Sea xk+1 = xk + λk dk , k ← k + 1, Go to 1.
Lo métodos de descenso principales: 10

I La más simple dirección de descenso: hk = −∇f (xk ).


I Entrega la mejor tasa marginal de disminución de f .
I Y este es el Método del Gradiente o de Cauchy, un método
de “primer orden”.

I Pero hay una mejor dirección (bajo ciertas condiciones):


I hk = −[∇2 f (xk )]−1 ∇f (xk )
I Esta es la Dirección de Newton y da origen al Método de
Newton, un método de “segundo orden”.

I ¿Cuáles son las diferencias, ventajas y desventajas?


Método del Gradiente: velocidad de convergencia 11

I ¿Se acuerdan de cómo funciona el algoritmo y cómo son las


trayectorias?
I Los resultados fundamentales:
Proposición
(dk )> (dk+1 ) = 0, es decir, el método se mueve en direcciones
ortogonales.

Teorema
Si {x : f (x) ≤ f (x0 )} es acotado, entonces todo punto de
acumulación x∗ de la sucesión {xk }k generada por el algoritmo
satisface ∇f (x∗ ) = 0.
Método del Gradiente: velocidad de convergencia 12

I Para el caso de una función cuadrática:


1
min x> Qx + c> x
2
Se puede analizar la convergencia del Método del
Gradiente:

Teorema
Si Q es definida positiva, entonces
 2
∗ κ(Q) − 1
f (x k+1
) − f (x ) ≤ (f (xk ) − f (x∗ )), k = 1, 2 . . .
κ(Q) + 1

donde κ(Q) es el “condicionamiento” de la matriz Q.


I Esto es “convergencia lineal”
Complejidad del Método del Gradiente 13

I Convergencia lineal: el error disminuye en forma


geométrica.
I Supongamos nos dan  > 0, ¿cuántas iteraciones
necesitamos para estar seguros que tenemos una solución
-óptima?
I Necesitamos encontrar el menor k tal que
(f (xk ) − f (x∗ )) ≤ 
I Lo que da:
f (x0 ) − f (x∗ )
  
1
k= log
log(1/α) 
I Muchas veces queremos “ocultar” las constantes y decimos
que la complejidad es “del orden de log(1/)” y eso se
denota:  
1
k = O log

El Método de Newton 14

I Método de Newton (básico):


0. Sean x0 ∈ Rn , k = 0,  > 0.
1. xk+1 = xk − [∇2 f (xk )]−1 ∇f (xk )
2. Si k∇f (xk )k ≤  entonces STOP.
3. ir a 1.

I Esto está bien definido en la medida que ∇2 f (xk ) sea


invertible en los puntos involucrados.
Método de Newton: versión global 15

I Es necesario hacer que el método realmente funcione bien


para optimizar.
I Sea dk = −[∇2 f (xk )]−1 ∇f (xk ).
I Supongamos que ∇2 f (xk ) es definida positiva. Entonces:

∇f (xk )> dk < 0

I Es decir, dk es una dirección de descenso.

I Podemos, entonces, construir un método más general.


Método de Newton: versión global 16

I Supongamos que podemos garantizar que ∇2 f (xk ) será


siempre definida positiva.

I Algoritmo de Newton (para minimizar):


0. Sea x0 ∈ Rn , k = 0,  > 0.
1. Sea dk = −[∇2 f (xk )]−1 ∇f (xk )
2. Si k∇f (xk )k ≤  entonces STOP.
3. Sea λk solución óptima de

min f (xk + λdk )


λ≥0

4. Sea xk+1 = xk + λk dk , k ← k + 1, Go to 1.

I La condición en ∇2 f (xk ) garantiza que dk sea dirección de


descenso.
Ejemplo: 17

I Consideremos la función de n variables:


1
f (x) = x> Qx + c> x + α(5 − xn )4
2
I ¿Cuánto es el Gradiente y el Hessiano?
I Veamos los métodos de Gradiente y Newton funcionando
en un par de casos particulares del problema.
Método de Newton: convergencia 18

I Bajo condiciones adecuadas, hay convergencia a un punto


estacionario:

Teorema
Sea f dos veces continuamente diferenciable, x∗ un mı́nimo
local de f y tal que ∇2 f (x∗ ) sea definida positiva. Supongamos
además que existen r > 0 y L > 0 tales que

k∇2 f (x) − ∇2 f (y)k ≤ Lkx − yk, ∀x, y ∈ B(x∗ , r)

Entonces, existe γ > 0 tal que si kx0 − x∗ k < γ, entonces la


sucesión {xk }k generada por el método converge a velocidad
cuadrática, es decir, existe β > 0 tal que:

kxk+1 − x∗ k ≤ βkxk − x∗ k2 , ∀k = 0, 1, ...


Método de Newton: comentarios 19

I Si f es, además convexa (y tiene mı́nimo), entonces


Newton converge, desde cualquier punto de partida, al
mı́nimo de la función.
I La condición de que ∇2 f (x∗ ) sea d.p. garantiza
“convexidad estricta local”.
I La otra es una condición de Lipschitz local para ∇2 f .

I L y k∇2 f (x∗ )−1 k2 influyen en el valor de β y γ.


Gradiente v/s Newton 20

I ¿Por qué Newton converge mejor que Gradiente?


I Dijimos que porque usa más información... ¿Pero cómo usa
esa información?

I Notemos que dk = −[∇2 f (xk )]−1 ∇f (xk ) es −∇f (xk )


escalado por la inversa del Hessiano...
I Newton avanza “cambiando la geometrı́a”.
Sobre la selección del paso de avance (el λ)
Sobre la selección del “paso” 22

I la función “fminbnd” en mi código resuelve


aproximadamente el problema

min f (xk + λdk )


λ≥0

I Este problema es el mismo en Newton y en Gradiente.

I Veremos ahora algunas alternativas para el linesearch y


también veremos que no es necesario resolver ese problema
en forma exacta...
El problema de la búsqueda unidireccional 23

I Definamos h(λ) = f (xk + λdk ).

I Una primera idea es Bisección:

I Bisección aproxima arbitrariamente un punto t∗ tal que


h0 (t∗ ) = 0.
El problema de la búsqueda unidireccional 24

I Interpolación:
I Supongamos tenemos dos puntos, t1 , t2 tales que
conocemos h(t1 ), h(t2 ), h0 (t1 ).
I Se puede interpolar una función cuadrática y minimizar
esa.

I También se puede hacer interpolación cúbica, con más


información.

I Existen otras alternativas de métodos de búsqueda (están


en el libro)
En busca de un paso “adecuado” 25

I El cálculo exacto de un paso puede ser costoso y, en


realidad, sólo necesitamos avanzar una cantidad que
garantice “suficiente” descenso.
I Esto fue ya establecido en los años 60 y 70 por P. Wolfe y
L. Armijo.

I Queremos exigir que haya “suficiente disminución” en la


lı́nea de búsqueda:

f (xk + λdk ) ≤ f (xk ) + c1 λ∇f (xk )> dk

para un valor c1 tal que 0 < c1 < 1.


I Esta es la Condición o Regla de Armijo
I Interpretación...
En busca de un paso “adecuado” 26

I La regla anterior funciona si se está muy cerca de cero,


pero eso es muy poco avance.
I Es mejor combinarla con una condición que diga que se
debe presentar “suficiente curvatura”.
I Entonces imponemos elegir λ que cumpla:
f (xk + λdk ) ≤ f (xk ) + c1 λ∇f (xk )> dk
∇f (xk + λdk )> dk ≥ c2 ∇f (xk )> dk
donde 0 < c1 < c2 < 1.
I Esto se llama Condición de Wolfe (o de
Wolfe-Armijo)
I Interpretación...

I Se puede demostrar que si la función es acotada por abajo


en la dirección dk , entonces existe al menos un intervalo
para α en el cual se cumple la condición de Wolfe.
Las condiciones de Wolfe-Armijo 27

I No es necesario resolver el “linesearch” de forma muy


exacta
I Basta con que λ cumpla:

f (xk + λdk ) ≤ f (xk ) + c1 λ∇f (xk )> dk


∇f (xk + λdk )> dk ≥ c2 ∇f (xk )> dk

donde 0 < c1 < c2 < 1.

I Se puede demostrar que si la función es acotada por abajo


en la dirección dk , entonces existe al menos un intervalo
para α en el cual se cumple la condición de Wolfe.
En busca de un paso “adecuado” 28

I Tı́picamente se elige c1 bastante chico, ≈ 0, 0001 y c2 = 0, 9


(ver Nocedal y Wright).

I Un método muy usado en la práctica es “adivinar” un λ


inicial...
I Y después hacer backtracking: disminuir λ de la forma
ρ × λ, 0 < ρ < 1 hasta que se cumpla:

f (xk + λdk ) ≤ f (xk ) + c1 λ∇f (xk )> dk


∇f (xk + λdk )> dk ≥ c2 ∇f (xk )> dk

I Esto es lo que está implementado en varias rutinas de


Optimización Numérica en softwares como MATLAB y
también en lo que hay en NUMPY.
¿Podemos tener un método “más o menos”
eficiente como Newton pero “más barato”?

También podría gustarte