2 votos

¿Adaptación del descenso de gradiente a la optimización funcional numérica?

Supongamos que tenemos una función $J[f] = \int_a^b L(x, f, f') dx$ que intentamos minimizar. Estoy tratando de pensar cuál es la mejor manera de hacer esto numéricamente, con algo así como el descenso de gradiente.

Mi idea es la siguiente:

  1. Sea $f_0 = [f(x_1), \ldots, f(x_n)]^T$ sea un vector que contenga mi estimación actual de la función (debido a restricciones computacionales, la función se representa por lo que evalúa en un puñado de puntos entre $a$ y $b$ [Por ejemplo $x_1=a, x_2 = a+\epsilon, x_3 = a + 2\epsilon$ etc.])
  2. Calcular la dirección $D=[D_1, \ldots, D_n]$ para intervenir

    • $D=\left. \frac{\delta J}{\delta f} \right|_{f=f_0,x=x^{(n)}}$ . Es decir, el derivada variacional evaluada en nuestra estimación actual de la función (y en los puntos $x^{(n)}=x_1, \ldots, x_n$ ).
    • $D=\left. \nabla_f J \right|_{f=f_0}$ que es el gradiente de $J$ con respecto a $f$ ser tratado como un $n$ -vector dimensional . Este gradiente puede estimarse numéricamente perturbando cada elemento del $f_0$ vector.
  3. Actualiza la suposición actual para que sea $f_0 \leftarrow f_0 - \eta D$ donde $\eta$ es un tamaño de paso adecuado.

Mi pregunta es, ¿cuál de estos dos métodos (si es que hay alguno) puede lograrlo? ¿O hay una forma mejor?

Nota: al evaluar $J[f_0]$ numéricamente, probablemente utilizaría algo como la interpolación spline para obtener $f'$ y una suma de Reimann para calcular la integral.

2voto

Hunaphu Puntos 151

Honestamente, no conozco ningún buen libro sobre cómo hacer esto bien, pero realmente estás trabajando en el área de optimización restringida PDE. Aunque no tengas restricciones, estás trabajando con espacios de funciones y esa comunidad se ocupa de ese tema. Si quieres un libro, puedes probar Optimization with PDE Constraints de Hinze, Pinnau, Ulbrich y Ulbrich.

Normalmente, el problema de optimizar en un espacio de Hilbert o Banach es que en algún momento hay que discretizarlo todo. La cuestión es si hacerlo antes o después de derivar las condiciones de optimalidad y los gradientes. Es el famoso debate discretizar-optimizar u optimizar-descretizar. Se trata en el capítulo 3 del libro mencionado.

Como alguien que ha lidiado mucho con esto, discretiza primero tu problema y listo. Hay algunos resultados técnicos que dicen que esto puede llevar a resultados de convergencia subóptimos. Al final del día, sin embargo, tratar de conseguir que esto funcione correctamente es difícil y usted estará constantemente tratando de ajustar el producto interno para no obtener error en el cálculo del gradiente. He visto equipos luchando con esto para años . Sólo discretizar y ser feliz. No, no me importa si mis constantes son independientes de la malla.

Dicho esto, el enfoque de discretización realmente dicta cómo debes enfocar las cosas. Lo que está de moda en esta comunidad es utilizar un método de elementos finitos. Eso está bien. La forma en que funciona es definir una base funcional $B:\mathbb{R}^m\rightarrow C^{1}(\Omega)$ . Técnicamente, probablemente podría salirse con la suya $L^2(\Omega)$ pero no te compliques la vida. De todos modos, entonces podemos definir algo como

$$ B \alpha = \sum\limits_{i=1}^m f_i \alpha_i $$

y

$$ B^\prime \alpha = \sum\limits_{i=1}^m f_i^\prime \alpha_i $$

Esencialmente, $B$ asigna los coeficientes de los elementos finitos al espacio de funciones. Es probable que necesites el operador adjunto, que en este caso es

$$ B^{*} f = \begin{bmatrix}\langle f,f_1\rangle\\\vdots\\\langle f,f_m\rangle\end{bmatrix} $$

Entonces, en tu caso, optimizarás

$$ J(\alpha) = \int_a^b L(x,B\alpha,B^\prime\alpha) $$

En este punto, tienes una función en $\mathbb{R}^m$ . Puedes usar cualquier método basado en el gradiente, pero dado el tamaño te recomendaré un método Newton sin matrices. Hay muchos matices en ese método, pero escalan adecuadamente. Algo como Numerical Optimization de Nocedal y Wright tiene suficientes detalles para empezar.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X