Está en la página 1de 10

ICS 2121 Métodos de Optimización, Sem 2024-1

Prof. Jorge Vera

Tarea 1. Solución

Las preguntas 1 y 2 tienen componentes de desarrollo computacional y hacen uso de los desarrollos del
taller-ayudantı́a del jueves 14 de marzo.

El problema a considerar es la optimización de la función Banana de Rosenbrok, en su versión multidimen-


sional. Recordemos que la función está dada por:
n−1
X
f (x) = b(xi+1 − x2i )2 + (a − xi )2
i=1

donde a = 1, b = 100. En el taller ustedes trabajaron con esta función, aplicando los métodos de Gradiente
y Newton, modificando los códigos originales de la clase, ası́ que disponen de lo necesario para trabajar con
estos métodos. Adicionalmente, en estas preguntas tendrá que usar, también, el método BFSG. Para esto,
tendrá que usar la rutina BFGS que se ha dejado disponible en clases.

Pregunta 1 (10 pts):


1. Estime el esfuerzo computacional en “flops” que requiere el cálculo de gradiente y el Hessiano de f , en
función de n y con eso estime el costo computacional de cada iteración de cada uno de los tres algo-
ritmos (esta estimación es usando la notación “O(·)”), sin incluir el eventual esfuerzo computacional
adicional del Linesearch. Justifique cualquier supuesto que haga.

Respuesta: Para esto basta usar las fórmulas del gradiente y Hessiano de esta función. De hecho,
fueron desarrolladas en el taller 1. Tenemos que calcular la derivada parcial de una componente k
cualquiera y es mejor escribir f de esta forma:
k−2
X
f (x) = b(xi+1 − x2i )2 + (a − xi )2 + b(xk − x2k−1 )2 + (a − xk−1 )2 + b(xk+1 − x2k )2 + (a − xk )2 +
i=1
n−1
X
b(xi+1 − x2i )2 + (a − xi )2
i=k+1

Entonces,

2b(xk − x2k−1 ) − 4b(xk+1 − x2k )xk − 2(a − xk ) k = 2, . . . , n − 1



∂f (x)
=
∂xk −4b(x2 − x21 )x1 − 2(a − x1 ) k=1

Siguiendo al Hessiano, las derivadas parciales son:

∂ 2 f (x)
= −4b
∂xk+1 ∂xk

∂ 2 f (x)
= −4bxk−1
∂xk−1 ∂xk
∂ 2 f (x)
= −4bxk+1 − 12bx2k + 2
∂x2k

1
∂ 2 f (x)
= −0, |l − k| > 2
∂xl ∂xk
Notemos que el Hessiano tiene una estructura muy especial, es lo que se llama una matriz “tridiagonal”
ya que todos sus elementos son = 0, excepto la diagonal y los inmediatamente contiguos.

Podemos ver que cada derivada parcial requiere calcular una cantidad de flops (contando sólo las
multiplicaciones), que es, a lo más, una constante, la más larga de evaluar requiere 6 multiplicaciones,
no son n multiplicaciones. Como esto se debe hacer para cada derivada parcial, concluimos que el
gradiente se evalúa en O(n) flops.
Por otro lado, para el Hessiano, vemos que las derivadas diagonales y sub y sup diagonales, requieren,
cada una, a lo más 5 flops (contamos sólo las multiplicaciones). Tenemos que calcular, a lo más, 3n de
esas derivadas, no n2 , como serı́a en un Hessiano de una función más tı́pica. Concluimos que el esfuerzo
para calcular el Hessiano es también O(n).
2. Discuta alguna forma que se le ocurra para estimar, también, el esfuerzo computacional en el que se
incurre en la resolución (aproximada) del problema de Linesearch.

Respuesta: Esto hay que hacerlo en referencia a alguno de los métodos que se usan para aproximar
una solución al problema de lineseach, que es

mı́n f (x + λd)
λ>0

(no estamos haciendo alusión a una iteración k particular aquı́). En el material del video complemen-
tario se discuten varios métodos, y también en el material de clases. Vamos a tomar el método de
bisección, el cual es simple de desarrollar. Repetimos acá la explicación que está en las notas de clases,
recordando que h(λ) = f (x + λd)

Este método utiliza un oráculo de primer orden (usa el valor de las derivadas de f ) y su desempeño
es eficaz en la medida que f sea “unimodal”, vale decir, que tiene solo un mı́nimo local en el intervalo
de búsqueda [t1 , t3 ], de este modo, se busca el punto t∗ , tal que h′ (t∗ ) ≈ 0. La búsqueda se realiza
del siguiente modo (ver Figura 1): En primer lugar, se comienza evaluando la derivada en los puntos
t1 y t3 que definen al intervalo, posteriormente se evalúa la derivada en un punto t2 intermedio y
equidistante de t1 y t3 . En caso que h′ (t2 ) > 0, entonces se continúa iterando del mismo modo, pero
esta vez buscando entre t1 y t2 . Si h′ (t2 ) < 0 entonces se continúa iterando del mismo modo, buscando
entre t2 y t3 .

Figura 1: Bisección

Entonces, como el método divide sucesivamente el intervalo de búsqueda a la mitad, eventualmente va


a lograr encerrar la solución del problema en un intervalo que puede ser arbitrariamente chico. Acá
vamos a asumir que pedimos un error no mayor a δ para la solución encontrada. Esto se logrará después

2
que el método haya reducido el intervalo de búsqueda a un largo ≤ δ. Si el largo inicial del intervalo de
búsqueda es R, en la siguiente iteración será R/2, luego R/4, y ası́. En general, después de k iteraciones
de la búsqueda se tendrá que el largo del intervalo es 2Rk . Tenemos, entonces, que se requieren a lo más
log2 Rδ para lograr la precisión buscada.


Ahora bien, en cada iteración del método se requiere calcular h′ (λ) = ∇f (x + λd)T d. Por lo tanto,
el costo por iteración viene dado por el costo de evaluar el gradiente, O(n), más el costo de hacer el
producto punto, que es también O(n). Luego, el costo por iteración es O(n) y el costo total para llegar
a una aproximación con error δ es   
R
O n × log2
δ
Lo anterior es O(n), si se asume que δ se mantiene fijo siempre. Evidentemente, dependerá de la preci-
sión que se desee el esfuerzo computacional que se gasta en el linesearch. Sin embargo, puede terminar
representando una parte importante del tiempo, aun si tomamos un δ no muy exigente, buscando sólo
satisfacer una condición de Wolf-Armijo.

Al abordar esta pregunta, también podrı́a asumirse que se hace un número p fijo de iteraciones de
alguno de estos métodos, por ejemplo, bisección o búsqueda de la sección áurea. Cualquiera de estos
dos métodos requiere evaluar el gradiente de la función en un punto especı́fico en cada iteración de la
búsqueda, ası́ que el esfuerzo total es O(pn), que igual puede considerarse O(n) si se asume el p como
fijo.
Pregunta 2 (20 pts):
En esta pregunta le pedimos que ejecute sus implementaciones en un conjunto de instancias de problemas.
Estas instancias se generan cambiando la dimensión n. Les pedimos que usen los siguientes valores para
ejecutar, en cada caso, los tres algoritmo:

n = 10, 50, 100, 150, 200, 300, 400, 500, 600, 750, 1000, 1500, 2000, 3000, 4000, 5000.

Podrı́a ocurrir que con alguno de los valores más grandes, alguno de los métodos no le funcione (se caiga por
memoria, etc.). Llegue a los valores más grandes que pueda. Igualmente, podrı́a tener que modificar algunos
parámetros de la rutina fminbnd. Si tienen problemas en eso, consulten en el foro.
Para cada caso le pedimos que haga lo siguiente:
1. Corra los tres algoritmos hasta un valor de ϵ = 0, 00001.

2. En cada caso, registre el número de iteraciones y el tiempo de computación total de cada algoritmo
(para esto tendrá que introducir en las códigos algún tipo de comando que permita medir tiempo de
ejecución).
Con los datos recopilados, haga gráficos que permitan ver la forma en que aumenta el tiempo de compu-
tación para cada algoritmo. ¿Cómo se compara lo que está observando con lo que predice la teorı́a respecto
al aumento del tiempo de computación en función de las dimensiones del problema? Comente y explique.
Puede referirse al Problema 3 de esta tarea, en donde se aborda el tema en forma conceptual.

Respuesta: Entregamos acá una respuesta parcial, no mostramos todos los casos pero sı́ comentaremos
algunas cosas respecto a los comportamientos que podrı́an haber sido observados. La siguiente tabla muestra
resultados de corridas de los tres algoritmos para distintas dimensiones n.
El error se puso en ϵ = 0, 0001 y no lo que pedı́a el enunciado, sólo para obtener soluciones más rápido para
este documento. En la tabla se muestra, para cada método, el número de iteraciones, el tiempo total del
ciclo iterativo del algoritmo, y el tiempo por iteración (obtenido de dividir el tiempo total por el número de
iteraciones). Los ∗ en el método BFGS indican que no se completaron esas corridas ya que no se observaba
convergencia del método. El punto de partida fue el vector x0 = 0, decisión que se tomó después de algunos
ensayos con otros puntos, los cuales no llevaban a ninguna convergencia decente.

3
Podemos ver, de los resultados, que Newton muestra el menor número de iteraciones, lo que es consistente
con la teorı́a. El comportamiento de BFGS es el peor de todos, lo que puede sonar poco intuitivo. Esto puede
explicarse por el hecho que la función Banana es especialmente “indecente”. En primer lugar, no es una
función convexa, hipótesis que ayuda a la convergencia de casi cualquier algoritmo. BFGS tiene su mejor
comportamiento bajo esa hipótesis. La siguiente figura muestra el grafo de la función Banana:

Por otro lado, la selección del punto de partida ayuda a que los comportamientos (salvo BFGS) sean más razo-
nables. el vector (0, 0, . . . , 0) está “cerca” del óptimo del problema. Como ya se ha discutido, suficientemente
cerca del mı́nimo global, la función (no sólo esta, cualquiera que sea continua) tiene un comportamiento
parecido a una función cuadrática, y como el punto es cuestión es mı́nimo, resultará que es “localmente
convexa”, independientemente de que más lejos de ese punto puede ser cualquier cosa (esto se sigue, como
lo conversamos en clases, del desarrollo de Taylor hasta el orden 2).
Otro punto a observar es cómo crece el tiempo de computación, particularmente el tiempo por iteración.
Para ilustrar mejor eso, a continuación hay dos gráficos de tiempo por iteración versus dimensión n, tanto
para el método del Gradiente como para Newton:

4
Podemos ver que existe casi una relación lineal en el caso del método del Gradiente, lo que sugiere un
esfuerzo por iteración O(n). Por otro lado, para el Método de Newton, el esfuerzo crece mucho más, su-
gerente de un esfuerzo O(n3 ), que serı́a el del método de Newton genérico para una función cualquiera.
Si embargo, ¡esto está mal! Más especı́ficamente, los números sı́ están correctos, pero reflejan una imple-
mentación muy pobre del método de Newton para este problema especı́fico. Recordemos, de la Pregunta 1,
que la matriz Hessiana tiene una estructura muy especial: es tridiagonal. Una matriz tridiagonal de n × n
puede ser invertida en O(n) operaciones y no O(n3 ) como serı́a el caso general. Lo que aquı́ ocurre es que
la implementación de MATLAB que estamos usando usa la función inv(H) para invertir el Hessiano. Esta
función no reconoce que casi todos los elementos de H son nulos, ni la estructura tridiagonal. Es posible
determinar explı́citamente la inversa y el esfuerzo de esos cálculos es O(n). Pueden ver algo de esto en
https://en.wikipedia.org/wiki/Tridiagonal_matrix.

En resumen, el desarrollo de este problema deja algunas enseñanzas fundamentales:


1. Si la función objetivo del problema no es convexa, pueden esperarse comportamiento indeseados.
2. El punto de partida es relevante, especialmente si la función no es convexa. Partir desde “cerca”
aprovecha el comportamiento localmente convexo de una función en una vecindad del óptimo.
3. La implementación computacional debe tomar ventaja de la estructura del problema y no necesaria-
mente usr algoritmos genéricos.

Pregunta 3 (10 pts):


a) (4 pts) Muchos computadores tienen, por ejemplo, un procesador Intel, o de otro fabricante. Elijan el
computador de uno de los integrantes del grupo e identifiquen el tipo de procesador. Busquen en Internet
la información (no olvide poner la cita) que le permita determinar cuantos “flop” por segundo puede rea-
lizar ese procesador. Con esa información en mano, construyan una tabla que indique cuanto tiempo se
requiere para una iteración del Método de Newton, que asumiremos (como explicamos en clases) necesi-
ta ejecutar n3 flops, una iteración de un método Quasi-Newton, que asumiremos requiere n2 flops, y una
iteración del método de Gradiente, que asumiremos requiere n flops. En la tabla ponga su estimación del
tiempo que se requiere para realizar una iteración de cada uno de esos métodos. Haga esta tabla para los
siguientes valores de n, n = 10, 50, 250, 500, 1,000, 5,000, 20,000, 50,000, 100,000, 1,000,000, 10,000,000.
(Un problema de optimización con millones de variables podrı́a ser uno en que las variables son valores
de pixeles en una imagen, bastante común en cualquier cámara digital de un teléfono celular moderno).
Desde luego estos cálculos están ignorando otras operaciones que también requieren tiempo (estimar
los gradientes y Hessianos, el “linesearch”) y el hecho que el procesador no necesariamente estará ex-
clusivamente dedicado a su trabajo, pero se obtendrá, al menos, una idea aproximada de los tiempos
necesarios y su dependencia en n para cada método.

Respuesta: Para esta solución, usamos un procesador Intel i7-1065G7, que es el del computador del
profesor. En el sitio web https://www.intel.com/content/www/us/en/products/docs/processors/core/core-
technical-resources.html se entregan datos técnicos sobre este procesador y se indica que tiene un per-
formance teórico de 83 GFLOPS, que equivale a 83 × 109 operaciones de punto flotante por segundo.
Con esa información es posible construir una tabla de tiempos según las dimensiones pedidas:

Y en años:

5
b) (3 pts) Ahora, busque información respecto al supercomputador más rápido existente en este momento
(suele cambiar año a año, ası́ que busque información actualizada). Una vez identificado, fı́jese en la
información de su capacidad de cálculo, en “flops” por segundo. En su solución indique de qué super-
computador se trata y cuáles son sus caracterı́sticas (no olvide indicar las fuentes de su información),
y repita los cálculos de la parte a) para este caso y compare. ¿Qué opina respecto al balance entre ca-
pacidad de cálculo (según número de núcleos) y la posibilidad de resolver un problema? (Si les interesa
saber hacia dónde piensan algunos que podrı́a llegar la capacidad de computación, en algún futuro,
busquen en Internet lo que se dice sobre un “Matrioshka Brain”).

Respuesta:
El computador más rápido del mundo, según el sitio web https://top500.org/, actualmente es Fron-
tier, ubicado en Oak Ridge National Laboratory (ORNL), Tennessee, Estados Unidos, desarrollado por
Hewlett Packard. Su performance se estima en 1,102 ExaFlops. Un ExaFlop corresponde a 1018 flops,
operaciones de punto flotante por segundo. Con este dato, se puede repetir el ejercicio y tenemos (en
segundos y años):

La siguiente tabla muestra los resultados:

Claramente se logran mejores resultados en el supercomputador, pero no está al alcance de casi nadie!

c) (3 pts) Tome ahora las complejidades computacionales de los métodos de gradiente y de Newton, las que
son O(log 1ϵ ) y O(log log 1ϵ ) respectivamente. Como sabemos, la notación O() oculta diversas constantes
asi que, para simplificar, vamos a asumir explı́citamente lo siguiente: el número de iteraciones que
necesitan el algoritmo de Gradiente para llegar a una solución ϵ-aproximada es igual a K1 log 1ϵ y el
método de Newton es K2 log log 1ϵ , donde K1 y K2 son constantes conocidas.
Determine expresiones generales para el tiempo total de computación necesario para que el método de
Newton y de Gradiente, lleguen a una solución ϵ-aproximada y determine una relación que permita
definir a partir de qué valor de la dimensión n del problema, es más conveniente usar el Método de
Gradiente en vez del Método de Newton. Sea claro en sus supuestos y puede asumir conocidas otras
constantes que podrı́an estar ocultas en otras notaciones O().

Respuesta: Estamos asumiendo, entonces, que para llegar a un error ϵ, el método del Gradiente
requiere K1 log 1ϵ iteraciones y el método de Newton es K2 log log 1ϵ . En forma general, el costo de cada
iteración del Método del Gradiente es O(n) y el de cada iteración del Método de Newton es O(n3 )
(donde también hay constante escondidas). Luego, el costo total del Método del Gradiente es
1
K1 C1 n log
ϵ
y para el Método de Newton es:
1
K2 C2 n3 log log
ϵ
donde C1 y C2 son constantes, que dependen del computador y otros factores, como se vió en las partes
a) y b) de esta pregunta. Entonces, para que sea conveniente usar gradiente en vez de Newton, n debe

6
ser tal que
1 1
K1 C1 n log < K2 C2 n3 log log
ϵ ϵ
o, equivalentemente, que
1/2
K1 C1 log 1ϵ

n> 1
K2 C2 log log ϵ

Pregunta 4 (10 pts):


Queremos aplicar el Método BFGS a la función
1 T
f (x) = x Qx + cT x
2
donde Q es una matriz de n × n simétrica y definida positiva y c ∈ Rn .
1. Escriban explı́citamente el gradiente y Hessiano de las función f en un punto x cualquiera.

Respuesta: Esto ya lo sabemos: ∇f (x) = Qx + c, ∇2 f (x) = Q.

2. Escriban la fórmula de actualización de BFGS en forma explı́cita, reemplazando las expresiones para
los gradientes y Hessianos de la parte anterior. Es decir, la fórmula debe quedar en términos de los
puntos xk+1 y xk y de los datos Q y c.

Respuesta: La fórmula general de BFGS es:

H k+1 = (I − ρk yk sTk )H k (I − ρk sk ykT ) + ρk sk sTk

donde
1
ρk =
ykT sk
y sk = xk+1 − xk , yk = ∇f (xk+1 ) − ∇f (xk ).
Tenemos, entonces, que yk = (Qxk+1 + c) − (Qxk + c) = Q(xk+1 − xk ) = Qsk . Luego:
1
ρk =
sTk Qsk
(recordar que Q es simétrica) y para la fórmula completa tenemos:
   
k+1 1 T k 1 T 1
H = I− T Qsk sk H I − T sk sk Q + T sk sTk
sk Qsk sk Qsk sk Qsk

(podrı́a, además, dejarse explı́citamente reemplazando sk = xk+1 − xk , pero no es necesario).

3. Estimen el orden de esfuerzo computacional, en flops, en función de n, para evaluar la fórmula deter-
minada por ustedes en el punto anterior.

Respuesta: Vamos a aprovechar esta pregunta para comentar sobre los esfuerzos computacionales y la
importancia de la forma correcta de evaluar una fórmula aparentemente compleja como la de la parte
anterior. Esto, igualmente, complementa el análisis que se hizo en clases de la fórmula básica. En esa
ocasión dijimos que se podı́a hacer toda la evaluación en O(n2 ) flops y eso sigue siendo cierto aquı́.
En primer lugar, recordemos que si A y B son matrices generales de n×, el cálculo de A × B requiere
O(n3 ) flops. Tomemos, primero, el término central de la fórmula:
 
k 1 1
U =H I− T sk sk Q = H k − T
T
H k sk sTk Q
sk Qsk sk Qsk

7
para lo cual se debe calcular el producto H k sk sTk Q. El orden en que esto se desarrolle es clave. Su-
pongamos que, primero, evaluamos A = sk sTk . Tal como vimos en clases, esto se puede hacer en O(n2 )
flops. Ahora, hay que calcular H k AQ, que es el producto de tres matrices, y que requerirá O(n3 ) flops.
¡Esta no es la forma correcta de desarrollar ese producto!
Hagamos, más bien, lo siguiente:
a) Calculamos u = H k sk , que es producto de matriz por vector y requiere O(n2 ) flops.
b) Calculamos v = Qsk , que también requiere O(n2 ) flops.
c) Finalmente podemos tener H k sk sTk Q = uv T lo que se evalúa en O(n2 ) flops.
De esta manera, el cálculo de esa parte se puede hacer en O(n2 ). Aún resta evaluar otros términos.
a) sTk Qsk se calcula evaluando primero w = Qsk , que requiere O(n2 ) y luego sTk w, que requiere O(n).
Luego, todo el cálculo es O(n2 ) (predomina el orden más grande).
b) sk sTk también se evalúa en O(n2 ).
c) Finalmente falta evaluar la otra parte de la expresión principal:
 
1 T
I− T Qsk sk U
sk Qsk

pero esto se evalúa de forma análoga al otro término principal que analizamos antes (y que ya
está calculado), ası́ que se hace en O(n2 ).
En consecuencia, todo el cálculo de la fórmula se puede hacer en O(n2 ).

Pregunta 5 (10 pts):


Esta pregunta requiere contenidos de las clases de las semanas del 25 de marzo y del 1 de abril. Consideremos
nuevamente el problema de la función Banana de Rosembrok.
1. Determine si acaso el gradiente ∇f (x) de la función Banana, para una dimensión especı́fica n, puede
cumplir o no la propiedad de Lipschitz.

Respuesta: Recordemos, primero, lo que necesitarı́amos: debe existir una constante L > 0 tal que

∥∇f (x) − ∇f (y)∥ ≤ L∥x − y∥ , x, y ∈ Rn

En nuestro caso, f es la función Banana. Tomemos y = x∗ , el punto donde la función Banana alcanza
un mı́nimo. Tenemos que ∇f (x∗ ) = 0. Entonces, tendrı́a q que cumplirse que:

∥∇f (x)∥ ≤ L∥x − x∗ ∥ , x, y ∈ Rn

Ahora bien, volvamos a las expresiones para las derivadas parciales de f que fueron desarrolladas en
la Pregunta 1. Acá las repetimos:

2b(xk − x2k−1 ) − 4b(xk+1 − x2k )xk − 2(a − xk ) k = 2, . . . , n − 1



∂f (x)
=
∂xk −4b(x2 − x21 )x1 − 2(a − x1 ) k=1

Podemos ver que se puede elegir un vector de forma adecuada de manera tal que ∥∇f (x)∥ crezca de
manera muy fuerte. De hecho, seleccionemos x de la siguiente forma, dependiendo de un parámetro t:

x1 (t) = t, xi (t) = 0, i = 2, . . . , n

Entonces, tenemos que:


∂f (x)
= 4bt3 − 2(a − t)
∂x1

8
∂f (x)
= −2bt2
∂x2
y todas las demás son idénticamente cero. Entonces, para este gradiente evaluado en este punto especial
x(t), tenemos: p
∥∇f (x(t))∥ = (4bt3 − 2(a − t))2 + 4b2 t4
Para t grande, este número es del orden de t2 . Por otro lado, ∥x(t) − x∗ ∥ es del orden de t. Con eso, se
concluye que no puede nunca cumplirse lo que buscamos ya que ∥∇f (x(t))∥ puede crecer mucho más
rápido que ∥x(t) − x∗ ∥ y no podrá estar nunca acotado por L∥x(t) − x∗ ∥, para ningún L. La conclusión
final es que ∇f no puede cumplir la condición de Lipschitz que buscamos.

2. Notemos que en los experimentos computacionales se observa que los puntos de las iteraciones de los
métodos de Gradiente y Newton tienden a concentrarse en, digamos, una región de radio 100 del es-
pacio Rn . Vamos a remitirnos, entonces, a la región R = {x ∈ Rn : ∥x∥2 ≤ 100}. Argumente que en
esa región R, sı́ se puede argumentar que ∇f (x) cumple una condición de Lipschitz, restringida a R.
Estime el valor que podrı́a tener esa constante de Lipschitz. Explique todos los supuestos que haga
para hacer su estimación (Indicación: para esto pueden serle útiles algunas relaciones entre distintas
“normas de matrices”, la de los valores propios no es la única).

Respuesta: Para este argumento vamos a reconstruir lo presentado en clases para estimar una cons-
tante de Lipschitz de ∇f (x). Nuevamente, para que se cumpla la condición buscada debe pasar que

∥∇f (x) − ∇f (y)∥ ≤ L∥x − y∥ , x, y ∈ Rn

lo que equivale a que


∥∇f (x) − ∇f (y)∥
≤ L , x, y ∈ Rn
∥x − y∥
Como argumentamos en clases, el lado izquierdo de esta desigualdad, cuando x está muy cercano a y,
“parece” una derivada. Más especı́ficamente, elijamos x = y + th, donde h es algún vector con ∥h∥ = 1.
Entonces, el lado izquierdo es:
∥∇f (y + th) − ∇f (y)∥
t
y aquı́ se ve mucho más claro la forma de derivada. Se puede argumentar, entonces, que, cambiando h
por los distintos vectores canónicos, que

∥∇2 f (x)∥ ≤ C(n)L

donde C(n) es una constante que depende de n. Para efectos de simplificar, vamos a suponer que
C(n) = 1 (lo que se puede hacer, cambiando de forma adecuada la norma). Entonces, podemos hacer
la siguiente estimación para L:
L = sup ∥∇2 f (x)∥
x∈Rn

Ya sabemos, por la parte anterior, que ese supremo no existe. Basta ver las fórmulas de las segundas
derivadas y darse cuenta que la matriz puede terminar teniendo números muy grande que harán que
∥∇f (x)∥ crezca sin lı́mite si x tiene ciertas componentes suficientemente grandes. Ahora bien, sin nos
reducen el “universo de interés” a R = {x ∈ Rn : ∥x∥2 ≤ 100}, las componentes de x no podrán
crecer arbitrariamente. Más aún, para este problema ∥∇f (x)∥ es una función continua en x y se sabe
que toda función continua alcanza sus valores extremos en un conjunto cerrado y acotado (compacto).
Entonces. sı́ podemos estimar:
L = máx ∥∇2 f (x)∥
x∈R

Esa será la constante de Lipschitz que podrı́amos quere usar.

9
3. Si se va a usar un Método Simple de Primer Orden, el paso debe ser 1/L. Con la estimación de la parte
2), ¿qué tan rápido cree usted que, realmente, funcionará ese algoritmo? Discuta sobre la base de los
contenidos de clases.

Respuesta: En primer lugar, podrı́amos cuestionarnos si acaso corresponde usar un método de primer
orden ya que la función Banana no es convexa. Eso invalida todo desarrollo. Sin embargo, siempre
podrı́amos asumir que partimos de un punto inicial “suficientemente cerca”del óptimo, y, en esa zona,
la función puede ser considerada convexa. Ahora bien, como no sabemos eso, lo único que podrı́amos
usar es el radio igual a 100 que nos han dado y con eso hacer la estimación de la constante de Lipschitz.
Veamos nuevamente las fórmulas para las segundas derivadas:

∂ 2 f (x)
= −4b
∂xk+1 ∂xk

∂ 2 f (x)
= −4bxk−1
∂xk−1 ∂xk
∂ 2 f (x)
= −4bxk+1 − 12bx2k + 2
∂x2k
∂ 2 f (x)
= −0, |l − k| > 2
∂xl ∂xk
Estimativamente, la norma del Hessiano podrı́a ser del orden de los elementos diagonales, para x con
coordenadas relativamente grandes. Ese orden es cuadrático en xk . Esto significa que si nos ubicamos
en los lı́mites de la región R, tendrı́amos números del orden de 104 . Si la constante L es de ese orden,
el paso es 1/L y podrı́a ser del orden 10−4 , bastante chico. Este es un argumento bastante informal
pero busca hacer una estimación rápida.

10

También podría gustarte