1. 引言
地震数据可以反映出一系列地下观测点的信息。单炮数据仅能对地下观测点提供一次覆盖的振幅数据,多炮数据则可以为地下观测点提供多次覆盖的振幅数据。剩余静校正可以通过对道集数据进行优化,增强道集数据有效信号的同相性,提高叠加数据信噪比。静校正可以将数据进行向上/向下位置微调,调整后再叠加,有效提高叠加质量。
图1. 静校正
如图1所示,静校正效果好时,结果信噪比高,直观表现为图像更清晰。
2. 基础知识
定义1. 一对<炮点, 检波器> 获得的数据,反映了炮点与检波器中间位置垂直方向的地质信息。该数据称为一个道(trace),可表示为
n
n
n维实数向量,其中每个分量表示相应时间(可换算为深度)的振幅。
定义2. 对应于同一地理位置的
k
k
k个道组成一个道集(trace set),可表示为
n
×
k
n \times k
n×k的矩阵。
一般情况下,一个道集中的不同道,是通过不同炮点、检波点获得的。
为获得一个地质剖面,应采集不同位置的数据,这些数据组成了一个三维矩阵
V
=
(
v
l
i
j
)
d
×
n
×
k
,
(1)
\mathbf{V} = (v_{lij})_{d \times n \times k}, \tag{1}
V=(vlij)d×n×k,(1)
其中
d
d
d表示观测的位置数,
n
n
n表示每道的长度,
k
k
k表示每个道集所含的道数。
在实际应用中,不同的道集可能有不同的列数(道数)。简便起见,理论上我们忽略这种差别。
3. 局部静校正
局部静校正仅考虑一个道集内部的优化。
3.1 问题描述
问题1:局部静校正
输入:第
l
l
l个道集
V
l
=
(
v
l
i
j
)
n
×
k
\mathbf{V}_l = (v_{lij})_{n \times k}
Vl=(vlij)n×k;
输出:校正量向量
A
=
(
a
1
,
…
,
a
k
)
\mathbf{A} = (a_1, \dots, a_k)
A=(a1,…,ak);
优化目标:
max
A
∑
i
=
1
n
(
∑
j
=
1
k
v
l
,
i
+
a
j
,
j
)
2
(2)
\max_\mathbf{A} \sum_{i = 1}^n \left(\sum_{j = 1}^k v_{l, i + a_j, j}\right)^2 \tag{2}
Amaxi=1∑n(j=1∑kvl,i+aj,j)2(2)
约束条件:
∀
1
≤
j
≤
k
\forall 1 \leq j \leq k
∀1≤j≤k,
∣
a
j
∣
≤
c
|a_j| \leq c
∣aj∣≤c,其中
c
c
c为一个常数如3.
3.2 问题分析
每个道可以浮动的方式有
2
c
+
1
2c + 1
2c+1种,
k
k
k个道导致的组合数为
(
2
c
+
1
)
k
(2c + 1)^k
(2c+1)k。优化目标值的计算量为
O
(
n
k
)
O(nk)
O(nk),因此总体时间复杂度为
O
(
n
k
(
2
c
+
1
)
k
)
(3)
O(nk(2c + 1)^k) \tag{3}
O(nk(2c+1)k)(3)
看起来不小。
一个道集有
k
k
k个需要优化的变量,
d
d
d个道集就有
d
k
dk
dk个需要优化的变量。另一方面,假设有
m
m
m炮,每炮有
p
p
p个检波器起作用,需要优化的变量个数也可写为
p
m
pm
pm. 按理说应该有
d
k
=
p
m
(4)
dk = pm \tag{4}
dk=pm(4)
3.3 解决方案
解决方案1:穷举法。
在 k k k不大(如5以内)可行。
解决方案2:简单逐道调整法。
Step 1. 将第1道设置为基准;
Step 2. for i = 2 to k do
Step 2.1 for j = -c to c do
Step 2.1.1 将第 i道浮动 j后与基准道相加,获得临时基准道
Step 2.1.2 if 临时基准道数据平方比原来的大,cm = c
Step 2.2 将第 i道浮动 cm后,与基准道相加,获得新的基准道
方案分析:本方案的时间复杂度很低,只有
O
(
n
k
c
)
(5)
O(nkc) \tag{5}
O(nkc)(5)
当然,也可能效果不好。只有做了才知道。
解决方案3:贪心逐道调整法。
Step 1. 从道集中,首先挑选一个比较合适的道。有很多策略,如:随机挑选,与平均值最接近的道,信噪比最大的道。
Step 2. 从剩下的道中,挑选一个最大化目标函数的道。这个目标函数只考虑当前已经选择的道。
方案3有不少的设计与优化空间。
4. 基于炮点与检波器的静校正
由于勘探行业的坚持,需要优化的参数并非(4)式中的
d
k
dk
dk或
p
m
pm
pm,根据炮点和检波器确定。
令炮点的校正量向量为
B
=
(
b
1
,
…
,
b
m
)
\mathbf{B} = (b_1, \dots, b_m)
B=(b1,…,bm), 检波点的校正量向量为
C
=
(
c
1
,
…
,
c
w
)
\mathbf{C} = (c_1, \dots, c_w)
C=(c1,…,cw)。如果某一道的数据来自于第
α
\alpha
α个炮点和第
β
\beta
β个检波器,则其校正量应为
b
α
+
c
β
b_{\alpha} + c_{\beta}
bα+cβ.
4.1 问题描述
问题2:基于炮点与检波器的静校正
输入:
V
=
(
v
l
i
j
)
d
×
n
×
k
\mathbf{V} = (v_{lij})_{d \times n \times k}
V=(vlij)d×n×k,从数据道向炮点的映射
f
:
[
1..
d
]
×
[
1..
k
]
→
[
1..
m
]
f: [1..d] \times [1..k] \rightarrow [1..m]
f:[1..d]×[1..k]→[1..m];从数据道向检波器的映射
g
:
[
1..
d
]
×
[
1..
k
]
→
[
1..
p
]
g: [1..d] \times [1..k] \rightarrow [1..p]
g:[1..d]×[1..k]→[1..p];
输出:炮点的校正量向量为
B
=
(
b
1
,
…
,
b
m
)
\mathbf{B} = (b_1, \dots, b_m)
B=(b1,…,bm), 检波点的校正量向量为
C
=
(
c
1
,
…
,
c
w
)
\mathbf{C} = (c_1, \dots, c_w)
C=(c1,…,cw);
优化目标:
max
B
,
C
∑
l
=
1
d
∑
i
=
1
n
(
∑
j
=
1
k
v
l
,
i
+
b
f
(
l
,
j
)
+
c
g
(
l
,
j
)
,
j
)
2
(6)
\max_{\mathbf{B}, \mathbf{C}} \sum_{l = 1}^d \sum_{i = 1}^n \left(\sum_{j = 1}^k v_{l, i + b_{f(l, j)} + c_{g(l, j)}, j}\right)^2 \tag{6}
B,Cmaxl=1∑di=1∑n(j=1∑kvl,i+bf(l,j)+cg(l,j),j)2(6)
约束条件:
∀
1
≤
j
≤
m
\forall 1 \leq j \leq m
∀1≤j≤m,
∣
b
j
∣
≤
c
|b_j| \leq c
∣bj∣≤c;
∀
1
≤
j
≤
w
\forall 1 \leq j \leq w
∀1≤j≤w,
∣
c
j
∣
≤
c
|c_j| \leq c
∣cj∣≤c,其中
c
c
c为一个常数如3.
注: f ( l , j ) f(l, j) f(l,j)表示第 l l l个道集中,第 j j j个道由来自于哪个炮点; g ( l , j ) g(l, j) g(l,j)表示第 l l l个道集中,第 j j j个道由来自于哪个检波器。
4.2 问题复杂度分析
与问题1相比,优化的参数个数增加了,为
m
+
w
m + w
m+w. 假设它们的取值范围为
[
−
b
,
+
b
]
[-b, +b]
[−b,+b], 例如
b
=
10
b = 10
b=10. 我们直接将方案编码成长度为
m
+
w
m + w
m+w 的向量. 问题的解空间大小为
(
2
b
+
1
)
m
+
w
(2b + 1)^{m+w}
(2b+1)m+w, 因此穷举算法不可行.
更要命的是, 对每种方案, 都要把三维的
V
\mathbf{V}
V拿来算. 这个事情好像不可避免.
4.3 解决方案
解决方案1: 从局部到全局
Step 1. 通过局部静校正获得
d
k
=
p
m
dk = pm
dk=pm个局部校正量
R
=
(
r
l
j
)
d
×
k
\mathbf{R} = (r_{lj})_{d \times k}
R=(rlj)d×k。
Step 2. 令在函数
f
f
f的帮助下,建立含
m
+
w
m + w
m+w个变量,
d
k
dk
dk个方程的超定方程组
r
l
j
=
b
f
(
l
,
j
)
+
c
g
(
l
,
j
)
,
r_{lj} = b_{f(l, j)} + c_{g(l, j)},
rlj=bf(l,j)+cg(l,j),
其中
1
≤
l
≤
d
1 \leq l \leq d
1≤l≤d,
1
≤
j
≤
k
1 \leq j \leq k
1≤j≤k,
1
≤
f
(
l
,
j
)
≤
m
1 \leq f(l, j) \leq m
1≤f(l,j)≤m,
1
≤
g
(
l
,
j
)
≤
w
1 \leq g(l, j) \leq w
1≤g(l,j)≤w.
Step 3. 为解此超定方程组,建立优化目标
min
B
,
C
∑
1
≤
l
≤
d
,
1
≤
j
≤
k
∣
r
l
j
−
b
f
(
l
,
j
)
+
c
g
(
l
,
j
)
∣
2
(7)
\min_{\mathbf{B}, \mathbf{C}} \sum_{1 \leq l \leq d, 1 \leq j \leq k} \left| r_{lj} - b_{f(l, j)} + c_{g(l, j)} \right|_2 \tag{7}
B,Cmin1≤l≤d,1≤j≤k∑∣∣rlj−bf(l,j)+cg(l,j)∣∣2(7)
其中2范数可以换为0范数、1范数等。特别是0范数,表示了多少个方程需要调整。
方案分析
该方案有两个主要问题:
- 优化(7)式不能保证优化(6)式;
- 多达 m + w m + w m+w个变量,不过每个方程都只涉及两个变量。
解决方案2: 遗传算法
遗传算法的关键在于输出方案的编码。根据式 (6), 共有
m
+
w
m + w
m+w 个参数,假设它们的取值范围境外为
[
−
b
,
+
b
]
[-b, +b]
[−b,+b], 例如
b
=
10
b = 10
b=10. 我们直接将方案编码成长度为
m
+
w
m + w
m+w 的向量. 根据每个方案, 可以根据式 (6) 计算其 fitness function.
至于选择、交叉、变异操作,参见一般的遗传算法.
优点: 输出方案的编码方便, fitness function 定义良好.
缺点 1: fitness function 的计算非常耗时. 但这一缺点好像无法克服.
缺点 2: 每换一个区域, 就需要用遗传算法运行一遍. 无法获得一个模型, 对不同的区域有效.
缺点 3: 收敛很慢. 需要想抓住静校正的特点,进行加速.
遗传算法加速方案
可以借鉴拼图游戏,先找到一些参数的解,并将其固定住. 然后再寻找其它参数的解. 这种方案, 越到后面越容易. 同时保证了收敛性.
常见的遗传算法, 应该没有这种技术.
5. 疑问
- 校正量均为整数吗?
- 是否可以强行用深度学习来做?
- 是否可以获得一个模型, 对不同区域有效? (目前认为不可行)
令人头秃 …