论文笔记: 深度学习速度模型构建的层次迁移学习方法 (未完)

2023-11-01

摘要: 分享对论文的理解, 原文见 Jérome Simon, Gabriel Fabien-Ouellet, Erwan Gloaguen, and Ishan Khurjekar, Hierarchical transfer learning for deep learning velocity model building, Geophysics, 2003, R79–R93. 这次的层次迁移应该指从 1D 到 2D 再到 3D.

摘要

深度学习具有使用最少的资源 (这里应该是计算资源, 特别是预测时的计算资源) 处理大量地震资料的潜力.
神经网络直接将数据 (即地震记录) 映射到模型 (如速度模型).
由于数据量太大, 直接做 2D 或 3D 不可行, 因此在一个子问题 (1D) 上训练神经网络.
通过迁移学习, 减少了 2D 训练数据的使用量. 注: 如何从 1D 迁移到 2D 是一个核心问题.
root-mean-square 误差为 ( 198 ± 91 198 \pm 91 198±91) m/s.
再次用到了 RMS 速度模型 (参见 论文笔记: 循环神经网络进行速度模型反演).

引言

DL 不仅用于 FWI, 也用于常规处理的各个步骤.
DL-FWI 暂时还不能成为工业标准, 但它有可能在缩短训练时间后超越物理规律驱动的 FWI (即数值模拟 FWI).
当前的 DL-FWI 只处理尺寸小的速度模型 (如 301*301), 可能有些薄层和盐丘, 但总体不具有实际数据的代表性.
Fabien-Ouellet and Sarkar (2020) 的方法可以处理较大规模数据, 但获得的速度模型横向连续性不好 (不符合物理规律, 这个用我们的边界提取辅助任务可能会缓解).
共中心点 CMP 道集看来用得比较多, 我们用的是共炮点 CSP 道集.
图像处理任务使用几万至几百万带标签实际数据进行训练, 地震数据可能有这么多, 但标签非常少 (如果不是没有的话). 这确实是大家面临的难题.

方法

问题: 从叠前数据直接估计 (反演) 倾斜分层声波速度模型. 注: 声波太简单了吧.
输入: n t × n h × n x n_t \times n_h \times n_x nt×nh×nx 的张量, 其中 t t t 是双向 (下去再上来) 走时, h h h 是从炮点到检波点的 (水平) 偏移量, x x x 是 CMP 中心点的位置.

v i n t ( t i , x ) = v i n t ( z ( t i ) , x ) , z ( t i ) = ∑ j = 1 i − 1 v i n t ( t j , x ) ⋅ 2 Δ t (1) v_{\mathrm{int}}(t_i, x) = v_{\mathrm{int}}(z(t_i), x), z(t_i) = \sum_{j=1}^{i-1}v_{\mathrm{int}}(t_j, x) \cdot 2\Delta t \tag{1} vint(ti,x)=vint(z(ti),x),z(ti)=j=1i1vint(tj,x)t(1)
其中时间域被离散化为网格, 长度为 Δ t \Delta t Δt.
右式中 $z(t_i) $ 表示深度, 它是每个时刻的速度乘以时间片长度之和. 如 Δ t \Delta t Δt 1 m s 1 \rm{ms} 1ms, 则 t 0 = 0 m s t_0 = 0 \rm{ms} t0=0ms, t 1 = 1 m s t_1 = 1 \rm{ms} t1=1ms, t 2 = 2 m s t_2 = 2 \rm{ms} t2=2ms, … \dots . 相当于速度对于时间的积分, 即为路程. 在连续的情况下, 相当于把连加换成积分符号即可.
左式表示 t i t_i ti 时刻的速度, 就相当于深度为 z ( t i ) z(t_i) z(ti) 时的速度. 但从数学上来看是错的. 如: t i = 1 m s t_i = 1 \rm{ms} ti=1ms z ( t i ) = 150 m z(t_i) = 150\rm{m} z(ti)=150m, 由于没有办法在式子中间带单位, 所以也无法区分. 可以考虑写为 v i n t t ( t i , x ) = v i n t z ( z ( t i ) , x ) , z ( t i ) = ∑ j = 1 i − 1 v i n t t ( t j , x ) ⋅ 2 Δ t (1’) v^t_{\mathrm{int}}(t_i, x) = v^z_{\mathrm{int}}(z(t_i), x), z(t_i) = \sum_{j=1}^{i-1}v^t_{\mathrm{int}}(t_j, x) \cdot 2\Delta t \tag{1'} vintt(ti,x)=vintz(z(ti),x),z(ti)=j=1i1vintt(tj,x)t(1’)
反过来, 时间至深度区间速度转换可写为
v i n t ( z i , x ) = v i n t ( t ( z i ) , x ) , t ( z i ) = ∑ j = 1 i − 1 2 Δ z v i n t ( z j , x ) (2) v_{\mathrm{int}}(z_i, x) = v_{\mathrm{int}}(t(z_i), x), t(z_i) = \sum_{j=1}^{i-1} \frac{2\Delta z}{v_{\mathrm{int}}(z_j, x)} \tag{2} vint(zi,x)=vint(t(zi),x),t(zi)=j=1i1vint(zj,x)z(2)
其中深度域 (空间域) 被离散化为 Δ z \Delta z Δz 的网格, t ( z i ) t(z_i) t(zi) 就是达到深度 z i z_i zi 所花的时间. 按照我们的写法可以换为
v i n t z ( z i , x ) = v i n t t ( t ( z i ) , x ) , t ( z i ) = ∑ j = 1 i − 1 2 Δ z v i n t z ( z j , x ) (2’) v^z_{\mathrm{int}}(z_i, x) = v^t_{\mathrm{int}}(t(z_i), x), t(z_i) = \sum_{j=1}^{i-1} \frac{2\Delta z}{v^z_{\mathrm{int}}(z_j, x)} \tag{2'} vintz(zi,x)=vintt(t(zi),x),t(zi)=j=1i1vintz(zj,x)z(2’)
(1) 式和 (2) 式的 2 倍带来一些理解上的问题. 如果时间是往返的, 那么 (2) 式的 2 倍可以理解, 但 (1) 式的 2 倍反而应该是 1/2 倍.
另外, 定义
v r m s ( t i , x ) = ∑ j = 1 i v i n t 2 ( t j , x ) Δ t ∑ j = 1 i Δ t (3) v_{\mathrm{rms}}(t_i, x) = \sqrt{\frac{\sum_{j=1}^i v^2_{\mathrm{int}}(t_j, x) \Delta t}{\sum_{j=1}^i \Delta t}} \tag{3} vrms(ti,x)=j=1iΔtj=1ivint2(tj,x)Δt (3)
这个式子的问题在于, 如果 Δ t \Delta t Δt 是一个常数的话, 则 v r m s ( t i , x ) = v i n t ( t i , x ) v_{\mathrm{rms}}(t_i, x) = v_{\mathrm{int}}(t_i, x) vrms(ti,x)=vint(ti,x), 但实际上它应该是可变的, 应写为
v r m s ( t i , x ) = ∑ j = 1 i v i n t 2 ( t j , x ) Δ t j ∑ j = 1 i Δ t j (3’) v_{\mathrm{rms}}(t_i, x) = \sqrt{\frac{\sum_{j=1}^i v^2_{\mathrm{int}}(t_j, x) \Delta t_j}{\sum_{j=1}^i \Delta t_j}} \tag{3'} vrms(ti,x)=j=1iΔtjj=1ivint2(tj,x)Δtj (3’)
对于复杂的地形, 基于时间的模型 v i n t ( t , x ) v_{\mathrm{int}}(t, x) vint(t,x) 不可靠, 只能使用基于深度的模型 v i n t ( z , x ) v_{\mathrm{int}}(z, x) vint(z,x).

(5) 式是利用 1D 对 2D 进行初始化的操作.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文笔记: 深度学习速度模型构建的层次迁移学习方法 (未完) 的相关文章

随机推荐