system: [SYSTEM]

user: 2. 理论与方法 2.1. 截断牛顿法 对于全波形反演的极小化问题 min f ( m ) ， 牛顿法的主要思想是利用二次函数 ϕ ( m ) 去逐点近似或逼近目标函数 f ( m ) 。在点 m k 附近，对 f ( m ) 进行二阶Taylor展开有 ϕ ( δ m ) = f ( m k ) + ( ∇ f ( m k ) ) T δ m + 1 2 ( δ m ) T H k δ m ， 其中， δ m = m − m k ， ∇ f ( m k ) 表示目标泛函 f ( m ) 在点 m k 处的梯度， H k = ∇ 2 f ( m k ) 为目标函数的Hessian阵。对 ϕ ( δ m ) 关于 δ m 求导并令其导数为零，得 ∇ f ( m k ) + H k δ m = 0. (3) 线性方程(2)称为牛顿方程。若 H k 为非奇异阵，则有 δ m = − H k − 1 ∇ f ( m k ) . 于是牛顿迭代公式为 m k + 1 = m k + α k δ m ， (4) 其中， α k 表示迭代步长， δ m 称为牛顿下降方向。 FWI是大规模反演问题，采用矩阵分解方法直接求解牛顿方程(3)是不现实的。一方面，Hessian矩阵 H k 通常无法显式计算；另一方面，即便获得了 H k ，采用直接法求解(3)也是不切实际的。因此，通常用CG法来近似求解牛顿方程(3)，该方法的最大优点是在求解过程中只需要计算Hessian矩阵与向量的乘积。该类方法称为截断牛顿法(或不精确牛顿法)。算法1所示为一般截断牛顿型方法的算法描述。 在迭代公式(4)中，下降方向 δ m 满足 ( ∇ f ( m k ) ) T δ m < 0 ， 同时， δ m 还需满足充分下降条件 ( ∇ f ( m k ) ) T δ m ≤ − c ‖ ∇ f ( m k ) ‖ 2 ， 其中 c > 0 是常数。当下降方向 δ m 确定后， α k 的选取十分重要。在线搜索方法中，步长 α k 的选取有着相应的标准，根据步长是否精确，把线搜索分为精确线搜索和非精确线搜索。在非精确线搜索方法中，根据目标函数值在每步迭代过程中是否单调下降，将线搜索方法分为单调和非单调线搜索方法。本文只讨论非精确线搜索方法。 2.2. 单调线搜索方法 若步长 α k 的取值能够使目标函数 f ( m ) 得到一个可接受的下降量 f ( m k ) − f ( m k + α k δ m ) > 0. 满足这种条件的线搜索称为非精确线搜索。Wolfe准则是一种常见的非精确线搜索步长规则，不仅要求函数值下降，而且对函数值下降量有一定的要求，即 f ( m k + 1 ) ≤ f ( m k ) + σ 1 α k ( ∇ f ( m k ) ) T δ m ， (5) ( ∇ f ( m k + 1 ) ) T δ m ≥ σ 2 ( ∇ f ( m k ) ) T δ m . (6) 其中， 0 < σ 1 < σ 2 < 1 ， m k + 1 = m k + α k δ m 。(5)保证了目标函数值序列 f ( m k ) 单调下降，(6)为曲率条件，保证步长不能太小。Wolfe准则要求目标函数的每一步迭代都是单调下降的，满足 f ( m k + 1 ) ≤ f ( m k ) ， k ≥ 1. 称这样的步长选取方法为单调线搜索。算法2所示为本文实现的Wolfe型单调线搜索的算法描述。 2.3. 非单调线搜索方法 单调线搜索方法要求目标函数在每次迭代过程中严格下降。针对高度非线性、不适定性问题，这样的限制过于苛刻。一维函数具有多局部极值的函数图像如图1所示。 图1. 一维多局部极值示意图 当目标函数位于A点时，为了保证迭代的单调下降性，单调线搜索方法会使目标函数沿着峡谷下降至B点。此时搜索在谷底缓慢前行，步长很小，导致目标函数陷入局部极值，很难到达全局最优解C点。而非单调线搜索方法不要求目标函数的每一步迭代都单调下降，即在某些迭代步允许目标函数出现波动，只需保持总体呈下降趋势即可，使得其步长的选取更具有灵活性。因此，当目标函数位于A点时，非单调线搜索方法能够跳跃至A1点或A2点，最终到达全局最优解C点。 非单调线搜索技术已经得到了广泛应用。一种改进的非单调线搜索准则为在Wolfe条件中将(5)替换为 [ 13 ] f ( m k + 1 ) ≤ C k + σ 1 α k ( ∇ f ( m k ) ) T δ m . (7) 其中， C 0 = f ( m 0 ) ， Q k + 1 = η k Q k + 1 ， (8) C k + 1 = η k Q k C k + f ( m k + 1 ) Q k + 1 . 在(7)中， C k 是函数值 f ( m 0 ) ， f ( m 1 ) ， ⋯ ， f ( m k ) 的一个凸组合， η k 的选择控制非单调性的程度。如果 η k = 0 ，就是通常的单调Wolfe线搜索。如果 η k = 1 ，则 C k = B k ，其中 B k = 1 k + 1 ∑ i = 0 k f i ， f i = f ( m i ) ， 是函数的平均值。在算法实现中，取 η k = 0.5 ，算法3所示为非单调线搜索算法描述。这种非单调Wolfe线搜索算法不仅能够计算出更大的步长因子，而且还比单调Wolfe线搜索算法和传统的非单调线搜索算法平均使用更少的函数和梯度，极大地提高了算法的收敛速度和计算效率。 2.4. Lanczos对角化法 将线性方程(3)改写成如下形式： H k δ m = − ∇ f ( m k ) . 对矩阵 H k 进Lanczos三对角化 [ 18 ]，即 v 0 ≡ 0 ， β 1 v 1 = − ∇ f ( m k ) ， l = 1 p l = H k v l ， α l = v l T p l ， β l + 1 v l + 1 = p l − α l v l − β l v l − 1 ， l > 1 这里 β l 是使 ‖ v l ‖ = 1 的正实数。记矩阵 T l _ 为 T l _ ≡ [ α 1 β 2 β 2 α 2 ⋱ ⋱ ⋱ β l β 1 α l β l + 1 ] . 矩阵 T l 为 T l _ 的前l行l列组成的方正，则由Lanczos过程可知 T l 为非奇异对称三对角阵，且 T l _ ≡ [ T l β l + 1 e l T ] ， T l ≡ [ T l − 1 β l e l − 1 β l e l − 1 T α l ] . 于是Lanczos对角化过程可以改写为如下矩阵紧凑形式 H k V l = V l + 1 T l _ ， V l ≡ [ v 1 ， ⋯ ， v l ] ， 且 V l 的列是标准正交的。当 β l + 1 = 0 时Lanczos过程停止，此时有 V l T H k V l = T l ， V l T ∇ f ( m k ) = β 1 e 1 ， 其中， e 1 表示第一个元素为1其余元素为0的l维向量。设 y l 满足 T l y l = − β 1 e 1 ， (9) 于是(3)的解为 δ m = V l y l . 采用矩阵分解的直接法求解(9)并引入辅助变量便得到Lanczos版本的线性共轭梯度法 [ 19 ]。 2.5. 快速计算矩阵与向量乘积 针对FWI大规模计算问题，采用有限差分法求解Hessian阵显然不现实(因为需要求解与反演参数元素相同次数的波动方程，对于大规模反演问题这是无法承受的)。考虑到CG法只需要计算Hessian阵与向量的乘积。因此，它不需要直接计算Hessian阵巨大的计算量和海量的内存存储。为了行文方便，以下公式推导均省略迭代步索引k。为了高效计算Hessian阵与向量的乘积，对波动方程(3)关于参数m进行两次微分并利用微分链式法则有 ∂ A ( m ) ∂ m u s + A ( m ) ∂ u s ∂ m = 0 ， (10) A ( m ) ∂ 2 u s ∂ m 2 + 2 ∂ A ( m ) ∂ m ∂ u s ∂ m + ∂ 2 A ( m ) ∂ m 2 u s = 0. (11) 对任意向量 v s ，对目标函数(1)关于m进行两次微分并将(10)与(11)式代入得 H v s = ( ∂ A ( m ) ∂ m u s ) * λ s + ( ∂ 2 A ( m ) ∂ m 2 u s ) * u s † v s ， (12) 式中， ( A ( m ) ) * u s † = − R * ( R u s − d s ) . (13) ( A ( m ) ) * λ s = ( R ) * R ω s − 2 ( ∂ A ( m ) ∂ m ) * u s † v s ， (14) A ( m ) ω s = ∂ A ( m ) ∂ m u s v s . 在方程(13)和(14)中， ( A ( m ) ) * 表示微分算子 A ( m ) 的伴随算子，(13)、(14)分别称为一阶、二阶伴随状态方程。公式(12)表明，计算Hessian阵与向量乘积只需要四次波场模拟：两次正演波场和两次伴随波场。因此，利用伴随状态方法计算Hessian阵与向量的乘积是非常高效的。