Adjoint State Method
Adjoint state method
伴随状态法【Adjoint state method】是用于求解优化问题的算法,可以快速得到目标泛函对自由函数的梯度,从而可以使用Newton法等迭代算法求解优化问题。
Date: 2024/03/17
考虑如下优化问题:
其中 \(J\) 是目标泛函,\(B\) 是与参函数 \(v\) 相关的线性约束泛函,\(u,v\) 是自由函数。此类优化常用于反问题建模,或者正问题求解。例如正问题中,\(J\) 是PDE弱形式导出的泛函积分,\(B\) 是PDE边界条件,\(v\) 是方程的解,\(u\) 是方程的参函数。反问题中 \(u,v\) 的地位互换。设满足约束条件的 \(u=u_v\),代入目标函数即有 \(j(v) = J(u_v, v)\)。
如果采用迭代法求解上述优化问题,需要求出如下梯度:
一般来说,泛函 \(J\) 的形式是已知的,因此 \(\nabla_1 J,\nabla_2 J\) 均容易得到。但 \(\nabla_v u\) 的求解往往是困难的,因为 \(u\) 通过约束泛函 \(B\) 隐式地依赖于自由函数 \(v\)。为了获得 \((2)\) 中梯度,需要利用 Lagrange 乘子法和伴随状态法。
考虑如下带 Lagrange 乘子的优化问题:
目标函数极值点应满足如下方程 \(\forall \delta_u\in \mathcal{U}, \delta_v \in \mathcal{V}, \delta_\lambda \in \mathcal{U}\):
上式的泛函导数是 Gateaux derivative。在 \((4)\) 中,称第一个方程为伴随状态方程,下导出其表达:
其中 \(B^*(\cdot;\lambda)\) 为 \(B(\cdot; \lambda)\) 的伴随。\((4)\) 中第二个方程是理解伴随状态法的关键,推导一下:
而 \((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)\),得到:
上式中 Lagrange 泛函对 \(v\) 求导时应当将 \(u,\lambda\) 看作常函数。\(u_v\) 从约束方程 \(B(u;v)=0\) 中解出,伴随状态 \(\lambda_v\) 从方程 \((5)\) 中解出。
参考资料:
- 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).

浙公网安备 33010602011771号