基于机器学习的区域工程地质分层思路与方法研究
2024-01-15王寒梅
刘 映 ,王寒梅
(上海市地质调查研究院, 上海 200072)
上海地质资料信息专业技术服务平台通过地质资料汇交管理机制,构建起覆盖全市的岩土工程勘察资料数据库,并向社会提供基础地质信息服务[1]。随着社会经济发展,城市规划设计和建设对地质研究提出更高要求,要求更全面、更精细、更便捷的地质信息服务。
由于地下地质结构的不可见性及复杂性,区域地质研究除了需要开展野外调查工作外,还需要充分利用现有地质资料,准确刻画区域内的地质特征。如何将机器学习方法引入到地质问题的研究中,已成为近来地学领域的研究热点。区域地质分层是三维地质建模和可视化的基础,在区域工程地质研究中,传统的地质分层方法通常倚赖人工解释和经验判断,必须进行大量的人工交互,需经过屡次的对比和修改,才能最终完成,而且存在诸如过程繁琐、工作量巨大、受人为因素影响显著等缺点。
近年来,随着以机器学习为核心的人工智能技术迅猛发展,机器学习方法在自然语言处理(NLP)、计算机视觉(CV)等领域取得了突破性进展,在某些方面,它们的表现甚至已经超越了人类水平,这些技术的应用为地质学研究带来了全新的可能性。通过将机器学习算法应用于地质数据,地学家们能够识别潜在的地质模式,并提供更精确的地质预测。例如,利用机器学习方法进行地层类型序列模型和地层厚度序列模型构建,从而建立一个用于模拟地质地层序列的机器学习模型[2],利用深度神经网络对地震相分类从而判断岩层类型[3],利用随机森林等机器学习方法对三维地质模型进行地层分类[4],都取得了一定的成果。
本文提出了基于机器学习的区域工程地质分层思路。首先依据上海市相关规范,构建区域分层模型,在此框架下对于静力触探数据,将地层分层问题转换为序列到序列的地质体空间单元预测任务,对于取土孔数据,结合野外编录,提取土样的分层特征后,将地层分层问题转换为地质属性特征分类任务。本文主要创新是提出区域工程的整体分层的实现方法,并经过初步实验,证明了方法的可行性,提出对静力触探数据的一维卷积处理以及基于多个土工试验参数,计算土样力学指标综合值,从而有效增强数据特征,提升模型准确度。
1 技术路径与方法
基于机器学习的区域工程地质分层方法,主要运用深度学习方法对静力触探试验的原始数据进行地质分层的训练和预测。这一方法能够有效地从静力触探试验数据中提取分层特征,从而在分层模型基础上构建区域整体的地质分层框架,在这个框架中,区域内的静力触探试验孔被视为网格节点。使用取土孔的土样试验数据以及钻孔的地理坐标作为分类特征,并结合野外编录的信息,通过采用分类算法,提取取土孔的分层特征,最终纳入整体分层框架,这一综合性的方法使得区域内的地质分层得以实现,技术路径如图1 所示。
图1 基于机器学习的区域工程地质分层技术路径Fig.1 Technical path of regional engineering geological layering
1.1 钻孔数据处理
本文以原始钻孔测试试验数据为特征数据,以区域分层作为标签,建立训练和评估所用的训练集、测试集和验证集。首先建立区域标准分层作为标签,其主要依据是上海市岩土工程勘察规范,并结合专家经验而定。然后对每个单层进行编号,形成标签编码,并建立钻孔数据与标签的对应关系。最后对原始钻孔数据进行优化处理,原始钻孔数据主要包括静力探触探试验数据和取土孔土工试验成果数据,由于这两类数据的具有不同的数据特征,因而需要分别处理。
(1)原始数据提取与标注
根据上海市工程建设规范“静力触探技术规程”,静力探触探试验数据按10 cm 间距采集。本文将静力触探端承阻力(Ps)取整后作为特征数据,并建立与地层标签数据的对应关系,如图2 所示。
图2 静力触探试验数据地层标注Fig.2 Stratum annotation of static cone penetration test data
对于取土孔土样试验数据,依据上海市工程建设规范“岩土工程勘察规范”,提取土样取样深度、颜色、重要的物理力学指标以及取土孔地理坐标、孔口高程等,建立土样数据与地层标签数据的对应关系。
(2)数据清洗预处理
数据清洗预处理对提升数据质量起着至关重要的作用。数据清洗预处理主要指缺失值和异常值的处理以及数据标准化或归一化。首先,对数据向量中各变量的重要性进行分类,剔除重要特征如钻孔坐标、试验深度、土样分类指标等缺失的向量,剔除指标缺失率过高的向量,对于异常值或指标数值间存在冲突时,一般也予以剔除。其次,对数据进行标准化或归一化处理,以降低变量间的度量的差异。
标准化计算公式为:
式中:Xs为标准化值,x为标量,μ为该变量样本的均值,σ为该变量样本的标准差。
归一化计算公式为:
式中:xnor为归一化值,x为变量,xmas、xmin分别为变量样本的最大值、最小值。
(3)数据优化
优质数据可以显著提升模型的性能和准确度,数据优化处理的方法有很多种,本文数据优化处理主要使用特征工程等方法。特征工程可实现进一步提取数据的特征,帮助模型从数据中捕获基本模式。特征工程包括选择对模型预测最有影响的特征,排除对模型贡献不大的特征,以及创建新的特征,或者从现有特征中提取更有信息量的信息,以提升模型的效率和性能。
静力触探试验数据属于序列数据,具有前后邻近数据相关性强的特点。本文对静力触探试验数据向量进行一维卷积计算,如图3 所示,通过改变卷积核大小多次计算提取,以获取更多数据内部的模式和结构,最终将提取的特征与原始数据拼接,构成训练数据的输入向量。
图3 静探试验数据向量卷积计算示意图Fig.3 Schematic diagram of convolution calculation of CPT test data
取土孔土工试验数据指标变量,除了包括取样位置外,还包括土的物理力学性质指标。在物理性质指标部分,本文选用两个指标作为特征,一是综合塑性指数及颗分试验,根据经验公式,计算其土类定名综合值用作特征。二是选取土样含水量作为特征,对于缺失含水量数据的土样,选择适当方法进行插值补充。在力学性质指标部分,主要根据土的C、φ 值、压缩系数、压缩模型、密实度等力学指标,并参照含水量、液性指数等,根据经验公式,计算土样力学指标综合值,并用作特征。土样数据特征既包括地理坐标、深度等坐标度量,也包括含水量、综合值等物理力学性质的度量,由于度量差异较大,在标准化或归一化处理对学习效果不明显时,可利用权重向量对数据进一步处理,以确保不同特征间权重相对均衡;也可根据钻孔间距离的远近,划分训练子集。
1.2 算法及模型选择
机器学习模型的选择主要取决于数据和任务类型。本文中静力触探试验数据为连续序列数据,与相应地层存在序列到序列的对应关系,因此可以将静力触探试验孔地层分层问题转换为序列到序列的预测任务。对于取土孔,可以根据其土样试验数据,并依据业务规则确定土样特征后,将其地层分层问题转换为地质体单元属性分类问题。
(1)静力触探试验数据模型算法选择
序列到序列(Sequence-to-Sequence, Seq2Seq)模型是一种深度学习模型,用于处理输入和输出都是可变长度序列的任务。2014 年以来,Seq2Seq 模型经历了从基本RNN 到LSTM、GRU,再到编码—解码(Encoder-Decoder)结构、注意力机制等关键技术的演进,最终形成了一系列高效的模型架构,在自然语言处理领域取得了显著的成就。2017 年,随着Transformer 模型的提出,自注意力机制在Seq2Seq 任务中得到了广泛应用。Transformer 的出现彻底改变了传统的循环结构,通过并行计算显著提升了模型的训练速度,同时在机器翻译、文本生成、语言理解等任务上取得了前所未有的性能。目前Seq2Seq 模型一般都基于编码—解码结构,它由称为编码器和解码器的神经网络组成的模型。编码器读取一个输入序列并输出到解码器一组向量,而解码器读取该组向量以生成一个输出序列。不同的Seq2Seq 模型其编码器、解码器结构的不同。
循环神经网络(Recursive Neural Network, RNN),是NLP、语音识别等时间序列数据处理的基本网络框架,如图4 所示,可用于Seq2Seq 模型。图4 中的 U、V、W分别为输入层、输出层及上次输入的权重矩阵,输入是原始数据序列“x1x2x3x4x5…”,通过中间的隐藏层s,最终通过计算得到输出o。至于RNN 在训练中很容易发生梯度爆炸和梯度消失等问题,本文应用中通过设置梯度阈值及合理的初始化权重值来解决。
图4 RNN 及前向计算过程展开示意图[5]Fig.4 A recurrent neural network and the unfolding in time of the computation involved in its forward computation
Transformer 则是另一种Seq2Seq 架构,其编码器和解码器结构如图5 所示。在Transformer 模型中,输入是一个二维的矩阵,矩阵的形状可以表示为(N,D),其中N 是序列(sequence)的长度,即静力触探试验的数据长度,而 D 是序列中每个数据向量的嵌入(embedding)维度。Transformer最核心的操作就是自注意力(self-attention)机制,由于静力触探试验数据前后间存在较强的关联性,即存在明显分块特征,自注意力机制其实就是输入向量之间进行相互关注(attention)来学习到新特征,从而对输入信息赋予不同的权重来聚合信息。然后利用多层感知机(MLP),对输入序列进行线性变换,并通过非线性激活函数进行操作,每个层的输出都会通过残差连接和归一化处理。Decoder 中的每个层除了自注意力计算外,还使用编码器―解码器注意力机制来关注编码器中的信息,从而解码器可根据编码器的输出,动态地选择要关注的部分。
图5 Transformer 的编码—解码器结构[6]Fig.5 Encoder - Decoder Structure in Transformer
其它模型如LSTM、GRU 等网络,则是针对RNN 梯度消失问题,在RNN 网络结构基础上进行改进后的模型。本文选取基于序列到序列的RNN 和Transformer 模型,分别开展静力触探试验孔分层实验研究。
(2)取土孔数据模型算法选择
取土孔分层问题则可看成地质体空间单元的属性分类问题,选择不同的分类器会影响建模的结果。Kotsiantis[7]等 在2007 年、Trevor Hastie 等[8]在2008 年对分类器算法从不同侧面进行评估,Manuel Fernández-Delgado 等[9]在2014 年对17 大类179 个分类器进行分类评价。
基于上述研究,本文对常见的分类算法如决策树方法、K 最近邻算法(K-Nearest Neighbors,KNN)、贝叶斯分类、支持向量机(support vector machine,SVM)、随机森林方法和神经网络等进行比较,最终选取KNN 算法与朴素贝叶斯(Naive Bayesian Model,NBM)方法,开展对比实验研究。KNN 是一种基于实例的学习方法,它不依赖于对数据的线性假设。它的工作原理是在训练数据中找到与新样本最相似的K 个邻居,并将新样本分配给占据多数的类别。在线性不可分的情况下,数据可能分布得非常复杂,没有明显的线性边界可以将不同类别的样本分开。KNN 可以适应这样的数据分布,因为它是一种基于距离的方法,不受线性分割的限制。NBM 则结合先验概率和后验概率,避免了只使用先验概率的主观偏见,也避免了单独使用样本信息的过拟合现象。贝叶斯分类算法在数据集较大的情况下表现出较高的准确率,与KNN 一样,NBM 算法本身也比较简单。本文中的地层属性分类是一个多分类问题,而且数据集规模不大,在此情况下,简单的模型更容易训练,往往会取得较好的性能。
1.3 模型训练及评估
机器学习依赖于训练数据集,根据学习策略从假设空间中挑选出最优模型。其中一个重要挑战是确保模型不仅在训练集上表现良好,还要在新样本数据上有出色表现,这就是模型的泛化能力。除了高质量的训练数据,掌握必要的模型训练技巧也至关重要。通过改进训练方法、参数调优,并合理划分数据集进行训练评估,我们能够获得具有最佳泛化性能的模型。
(1)模型训练改进
在模型训练时需要引进适当方法改进训练过程,如对于深度学习,为提高训练速度,可设置合理的初始化权重w 和偏置b;也可以使用Adam,Adagrad 等自适应优化算法,实现学习率的自适应调整,从而保证准确率的同时加快收敛速度等。对于过拟合问题,可利用正则化直接改变模型的架构来解决。深度学习模型训练常用的正则化方法有L2 正则化和 Dropout 等。它们通过修改参数或权重的更新方式来确保模型不会过拟合。L2 正则化是在损失函数中添加L2 惩罚项,鼓励更小的权重并防止模型过拟合,Dropout 则是在训练过程中随机禁用一部分神经元,防止对特定神经元的依赖,提高模型的鲁棒性和泛化能力。
(2)超参数调优
超参数是指那些不会由算法自身学习得到的模型参数,它们需要在训练之前进行手动设置,以控制模型的训练过程和性能。超参数的选择是模型成败的一个关键步骤,因为不同的超参数组合可以导致不同的模型性能和收敛行为。一般通过实验和经验来选择合适的超参数,也可以使用自动调参技术来搜索最佳的超参数组合。本文通过实验和经验来选择合适的部分超参数,对另一部分超参数,则应用自动调参技术来搜索其最佳泛化性能的配置。
(3)模型评估
模型评估主要考察模型在新样本数据上的表现能力。一般可将数据集划分为训练集、验证集和测试集,训练数据集用来训练模型,验证数据集用来判断哪个参数下的模型表现最好,最后再用测试数据集进行评估模型性能和泛化能力。如果数据集比较小,可以采用交叉验证的方法来评估模型了。交叉验证指的是将数据集等分为k份(一般不超过10),然后用其中的k–1 份来训练、验证,剩下的1 份用来测试。每次都选取不同的1 份来测试,将这个过程重复k 次。最后可以采用混淆矩阵来评判模型表现,据此计算模型的准确率、精确度和召回率等。另外还需要考虑业务相关的指标,如计算分层Ps 值、分层各类土工试验指标等,从而综合评估模型的性能。
2 方法实验及结果
本文在上述思路基础上,选取上海某新城区域的工程地质钻孔数据,开展区域工程地质分层实验研究。在Windows 11 操作系统下,我们利用了Python 3.8 以及Scikit-learn 和PyTorch 等开源机器学习库进行了实验。训练环境配置了一块GeForce RTX 3070 显卡(CUDA 版本11.6.99),以提升实验效率。
2.1 数据集准备
研究区收集的静力触探试验孔3410 个( 深度49.2 ~90.0 m),取土孔2803 个(深度49.2 ~100.0 m)。参照上海市工程建设规范“岩土工程勘察规范”,研究区内场地属于属滨海平原——湖沼相地貌类型,100 m 以浅分为25 个主要层次及亚层。
静力触探试验数据在建立与土层标签的对应关系后,采用特征工程对数据进行优化处理。采用一维卷积操作,卷积核分别设为[0.3, 0.4, 0.3]T、[0.1, 0.25, 0.4, 0.25, 0.1]T、[0.1, 0.12, 0.14, 0.14, 0.14.1,0.12,0.1]T,卷积计算完成后,与已有静力触探试验数据进行拼接,形成训练向量数据。
取土孔土样试验数据特征向量数据包括钻孔坐标、取土深度(标高)、颜色、土性等。对颜色类别进行编码,计算物理、力学特征的综合值,最后提取土工试验数据特征向量。
2.2 结果评估
本文采用RNN 和Transformer 两种模型分别对静力触探试验数据集进行训练,训练过程如图6 所示。左图是平均精确度曲线,该曲线表明在本文数据集下,RNN的表现更好,在Epoch 数为200 时,达到最高精确度,此后围绕此数值稳定波动,右图Loss 曲线则表明epoch取值150 ~200 最为合理。在精确度方面,Transformer表现比RNN 逊色,在Epoch 数为120 时,达到最高精确度,Loss 曲线表明epoch 取值100 左右最为合理。
图6 序列到序列模型训练过程比较Fig.6 Comparison of training process from sequence to sequence model
在算力条件允许的情况下,还可对上述模型的超参数进一步调优,提升模型表现和可使用性。
本文对取土孔土工试验数据集,选取KNN 和朴素贝叶斯模型,进行分类实验研究。KNN 模型的表现主要取决于K 值的大小,如图7 所示。实验将按8:2 比例将数据集分为训练集和测试集,图中左图是KNN 在训练集上的表现,右图是在测试集上的表现,不同颜色曲线表示在不同批次训练测试的结果,其中带“x”的曲线为平均精确度曲线。结果显示,KNN 模型的K 值一般可设为4 ~6,此时精确度达到峰值。
图7 KNN 模型分类实验结果Fig.7 Results of KNN model Classification Experiment
本文利用朴素Bayes 模型进行训练和分类,实验将按8:2 比例将数据集分为训练集和测试集,总体精度达到0.78,稍优于KNN 模型。朴素Bayes 模型对缺失数据不太敏感,算法也比较简单,分类准确度高,速度快,具有一定的推广应用价值。
3 结语
本文针对区域工程地质研究中的分层问题,提出了一种基于机器学习的地质分层思路与方法。经过实验证明,所提出的方法可行,具有一定的分类精度。由于机器学习具备端到端的特性,所提出的框架用户友好性强,从而只需最少的人工干预,便能在短时间内实现分层功能。同时,交叉验证方法显示,这一成果具有推广价值,因此在研究和实际应用中具有积极意义。
然而,考虑到该方法是机器学习在区域地质分层方面的初步应用,仍然需要在以下方面进行进一步的研究和改进:(1) 进一步开展数据特征提取方法研究,更好地捕捉数据中的关键信息,提高模型性能,增加数据的可解释性。(2)研究多模态学习,使更多类型的地质勘探数据能加入到地层分类方法中,提高分类性能和泛化能力。(3)进一步开展各类机器学习方法在地质分层模型中适用性研究,研究超参数在分层模型构建中的地学意义。