Adjoint state method
伴随状态法【Adjoint state method】是用于求解优化问题的算法,可以快速得到目标泛函对自由函数的梯度,从而可以使用Newton法等迭代算法求解优化问题。
Date: 2024/03/17
考虑如下优化问题:
\[\begin{aligned} \min_v & \quad J(u, v) \\ \text{s.t.} & \quad B(u;v) = 0 \end{aligned} \tag{1} \]其中 \(J\) 是目标泛函,\(B\) 是与参函数 \(v\) 相关的线性约束泛函,\(u,v\) 是自由函数。此类优化常用于反问题建模,或者正问题求解。例如正问题中,\(J\) 是PDE弱形式导出的泛函积分,\(B\) 是PDE边界条件,\(v\) 是方程的解,\(u\) 是方程的参函数。反问题中 \(u,v\) 的地位互换。设满足约束条件的 \(u=u_v\),代入目标函数即有 \(j(v) = J(u_v, v)\)。
如果采用迭代法求解上述优化问题,需要求出如下梯度:
\[d_vj(v;\delta_v) = \nabla_v J = \nabla_1J \cdot \nabla_v u + \nabla_2 J \tag{2} \]一般来说,泛函 \(J\) 的形式是已知的,因此 \(\nabla_1 J,\nabla_2 J\) 均容易得到。但 \(\nabla_v u\) 的求解往往是困难的,因为 \(u\) 通过约束泛函 \(B\) 隐式地依赖于自由函数 \(v\)。为了获得 \((2)\) 中梯度,需要利用 Lagrange 乘子法和伴随状态法。
考虑如下带 Lagrange 乘子的优化问题:
\[\begin{aligned} \min_v & \quad L(u, v, \lambda) = J(u,v) + (B(u;v), \lambda) \\ \end{aligned} \tag{3} \]目标函数极值点应满足如下方程 \(\forall \delta_u\in \mathcal{U}, \delta_v \in \mathcal{V}, \delta_\lambda \in \mathcal{U}\):
\[\begin{cases} d_u L(u, v, \lambda; \delta_u) = 0 \\ d_v L(u, v, \lambda; \delta_v) = 0 \\ d_\lambda L(u, v, \lambda; \delta_\lambda) = 0 \end{cases} \tag{4} \]上式的泛函导数是 Gateaux derivative。在 \((4)\) 中,称第一个方程为伴随状态方程,下导出其表达:
\[\begin{aligned} d_u L(u, v, \lambda; \delta_u) &= d_u J(u,v; \delta_u) + (d_u B(u;v; \delta_u), \lambda) \\ &= d_u J(u,v; \delta_u) + \left( \lim_{\tau \to 0} \frac{B(u + \tau \delta_u;v)-B(u;v)}{\tau} , \lambda \right) \\ &= d_u J(u,v; \delta_u) + (B(\delta_u;v), \lambda) \\ &= d_u J(u,v; \delta_u) + (\delta_u, B^*(\lambda; v)) = 0 \end{aligned} \tag{5} \]其中 \(B^*(\cdot;\lambda)\) 为 \(B(\cdot; \lambda)\) 的伴随。\((4)\) 中第二个方程是理解伴随状态法的关键,推导一下:
\[\begin{aligned} d_v L(u, v, \lambda; \delta_v) &= d_v J(u,v;\delta_v) + (d_v B(u;v;\delta_v), \lambda) = 0 \end{aligned}\tag{6} \]而 \((4)\) 中的第三个方程即为约束条件。
现考虑有 \(u_v,\lambda_v\) 满足 \((4)\) 中的第一、第三两个方程,将它们代入 \((4)\) 的第二个方程中,得到仅和 \(v\) 相关的泛函 \(L(u_v,v,\lambda_v)\),泛函 \(L(u_v,v,\lambda_v) = J(u_v,v) = j(v)\)。
综合上面结果,为求 \(J(u,v)\) 在约束 \(B(u,v) = 0\) 下对 \(v\) 的导数,可以写出方程 \((6)\),得到:
\[\begin{aligned} d_v j(v; \delta_v) = d_v L(u, v, \lambda; \delta_v) |_{u=u_v,\lambda = \lambda_v} \end{aligned} \]上式中 Lagrange 泛函对 \(v\) 求导时应当将 \(u,\lambda\) 看作常函数。\(u_v\) 从约束方程 \(B(u;v)=0\) 中解出,伴随状态 \(\lambda_v\) 从方程 \((5)\) 中解出。
标签:方程,Adjoint,nabla,泛函,State,delta,aligned,Method,lambda From: https://www.cnblogs.com/zhang-js/p/18079305参考资料:
- https://en.wikipedia.org/wiki/Adjoint_state_method
- https://en.wikipedia.org/wiki/Gateaux_derivative
- Plessix, R.-E. A review of the adjoint-state method for computing the gradient of a functional with geophysical applications. Geophysical Journal International 167, 495–503 (2006).