news 2026/3/14 14:48:12

多站融合的深度学习引力波信号搜寻方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多站融合的深度学习引力波信号搜寻方法

博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。

✅成品或者定制,扫描文章底部微信二维码。


(1)基于卷积神经网络的多探测器集成学习引力波搜寻方法

引力波信号的可靠探测是天文物理学领域的核心挑战之一,单一探测器的数据分析往往受到局部噪声干扰和仪器伪信号的影响,难以达到足够的置信度水平。为提高引力波搜寻的可靠性,本研究设计了一种基于卷积神经网络的多探测器集成学习方法。该方法的核心思想是分别构建针对不同探测站数据的子模型,然后通过合理的融合策略将各子模型的输出结果进行综合判决。具体而言,针对激光干涉引力波天文台的汉福德探测器和利文斯顿探测器,本研究分别设计了两个结构相似但参数独立的卷积神经网络子集成模型。每个子集成模型内部由多个具有不同超参数配置的基分类器组成,这些基分类器在相同的训练数据上进行训练,但由于初始化权重和网络结构的细微差异,它们能够学习到数据的不同特征表示。子集成模型通过对内部基分类器的输出进行加权平均或多数投票来生成该探测站的判决结果。在总集成模型层面,本研究采用了基于逻辑与运算的投票策略,只有当两个探测站的子集成模型同时给出正检测信号时,总模型才输出引力波事件的判定。这种保守的融合策略能够有效抑制单站噪声导致的误触发,显著提高搜寻结果的可靠性。卷积神经网络的特征提取能力使其能够自动学习引力波信号在时频域的特征模式,无需人工设计复杂的特征工程。网络的输入为探测器应变数据经过白化和带通滤波预处理后的时间序列,输出为该时间段内是否存在引力波信号的二分类概率。实验验证中,本研究将集成模型应用于激光干涉引力波天文台第一次和第二次观测运行期间报告的所有引力波事件数据,结果表明该方法能够清晰识别出绝大多数双黑洞并合事件。在对连续一个月的观测数据进行盲测分析时,集成模型的误触发次数为零,充分证明了多站融合集成学习方法在保持高检测灵敏度的同时能够有效控制虚警率。

(2)深度探测与站间并合时间检验相结合的引力波搜寻流水线

为进一步提升引力波搜寻系统的性能和物理可解释性,本研究提出了一种深度探测与站间并合时间检验相结合的完整搜寻流水线。该流水线包含探测阶段和检验阶段两个核心模块,通过级联的方式实现对候选事件的逐级筛选和验证。在探测阶段,本研究引入了小波包去噪技术对原始应变数据进行预处理,小波包分解能够将信号分解到不同的频带上,通过设定合适的阈值对各频带系数进行软阈值处理,可以有效去除高频噪声成分同时保留引力波信号的主要特征。此外,本研究创新性地提出了信噪比递进的训练策略,即在网络训练过程中按照从高信噪比到低信噪比的顺序逐步引入训练样本,使模型首先学习到清晰的信号特征,然后逐渐适应噪声环境下的特征提取任务。这种课程学习策略显著提升了探测模型在低信噪比条件下的性能表现,使得探测阶段的最低误报率达到了每月约一点七次的水平。在检验阶段,本研究首次提出利用深度学习方法提取候选引力波事件的波形包络信息。波形包络反映了信号幅度随时间的演化规律,对于致密双星并合事件而言,其包络呈现出特征性的啁啾模式,即频率和幅度在并合前快速上升并在并合时刻达到峰值。通过训练专门的卷积神经网络来学习从含噪数据中提取包络的映射关系,可以获得候选事件的并合时间估计。根据引力波以光速传播的物理约束,同一引力波事件到达不同探测站的时间差应在一定范围内,本研究利用这一先验知识对探测阶段给出的候选事件进行物理一致性检验。只有当两站提取的并合时间差满足物理约束时,候选事件才被最终确认为真实引力波事件。实验结果表明,加入检验阶段后,系统的误报率大幅下降至每年约零点零四六次,同时对真实引力波事件的检测效率可达传统匹配滤波方法的百分之八十以上。

(3)多种站间数据融合策略的对比分析与优化选择

站间数据融合策略的选择对多探测器引力波搜寻系统的最终性能具有决定性影响,本研究系统考察了四种不同的数据融合方法,包括特征融合法、且融合法、均值融合法和概率融合法,深入分析了各方法在真实探测率和误报率之间的权衡关系。特征融合法在神经网络的中间层将来自不同探测站的特征向量进行拼接,然后通过后续网络层对融合后的特征进行联合处理和分类。这种方法的优势在于能够让网络自动学习站间特征的相关性和互补性,但由于融合发生在高维特征空间,容易引入额外的噪声相关性,导致误报率的显著上升。且融合法要求所有探测站的子模型同时给出正检测判定才确认为引力波事件,这是一种最为保守的融合策略,能够实现极低的误报率,但可能会漏检一些在部分探测站信噪比较低的真实事件。均值融合法对各探测站子模型输出的检测概率取算术平均值,然后与预设阈值比较进行最终判决。实验分析表明,均值融合法在误报率和真实探测率之间取得了较好的平衡,在相同误报率条件下具有最高的真实探测率,是一种综合性能优异的融合策略。概率融合法基于贝叶斯推断框架,将各站的检测概率视为独立证据,通过概率乘法或对数似然比相加的方式计算联合检测概率。

import numpy as np import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, TensorDataset from scipy.signal import butter, filtfilt, cwt, ricker import pywt class GravitationalWaveDetector(nn.Module): def __init__(self, input_length=4096): super(GravitationalWaveDetector, self).__init__() self.conv1 = nn.Conv1d(1, 32, kernel_size=16, stride=2, padding=7) self.conv2 = nn.Conv1d(32, 64, kernel_size=8, stride=2, padding=3) self.conv3 = nn.Conv1d(64, 128, kernel_size=4, stride=2, padding=1) self.conv4 = nn.Conv1d(128, 256, kernel_size=4, stride=2, padding=1) self.pool = nn.AdaptiveAvgPool1d(16) self.fc1 = nn.Linear(256 * 16, 256) self.fc2 = nn.Linear(256, 64) self.fc3 = nn.Linear(64, 2) self.relu = nn.ReLU() self.dropout = nn.Dropout(0.3) self.bn1 = nn.BatchNorm1d(32) self.bn2 = nn.BatchNorm1d(64) self.bn3 = nn.BatchNorm1d(128) self.bn4 = nn.BatchNorm1d(256) def forward(self, x): x = self.relu(self.bn1(self.conv1(x))) x = self.relu(self.bn2(self.conv2(x))) x = self.relu(self.bn3(self.conv3(x))) x = self.relu(self.bn4(self.conv4(x))) x = self.pool(x) x = x.view(x.size(0), -1) x = self.dropout(self.relu(self.fc1(x))) x = self.dropout(self.relu(self.fc2(x))) return self.fc3(x) class WaveletDenoiser: def __init__(self, wavelet='db4', level=5): self.wavelet = wavelet self.level = level def denoise(self, signal): coeffs = pywt.wavedec(signal, self.wavelet, level=self.level) threshold = np.median(np.abs(coeffs[-1])) / 0.6745 * np.sqrt(2 * np.log(len(signal))) denoised_coeffs = [coeffs[0]] for c in coeffs[1:]: denoised_coeffs.append(pywt.threshold(c, threshold, mode='soft')) return pywt.waverec(denoised_coeffs, self.wavelet) class EnvelopeExtractor(nn.Module): def __init__(self): super(EnvelopeExtractor, self).__init__() self.encoder = nn.Sequential( nn.Conv1d(1, 16, 7, padding=3), nn.ReLU(), nn.MaxPool1d(2), nn.Conv1d(16, 32, 5, padding=2), nn.ReLU(), nn.MaxPool1d(2), nn.Conv1d(32, 64, 3, padding=1), nn.ReLU(), nn.MaxPool1d(2)) self.decoder = nn.Sequential( nn.ConvTranspose1d(64, 32, 4, stride=2, padding=1), nn.ReLU(), nn.ConvTranspose1d(32, 16, 4, stride=2, padding=1), nn.ReLU(), nn.ConvTranspose1d(16, 1, 4, stride=2, padding=1), nn.Sigmoid()) def forward(self, x): return self.decoder(self.encoder(x)) class MultiDetectorEnsemble: def __init__(self, n_base_models=5): self.hanford_models = [GravitationalWaveDetector() for _ in range(n_base_models)] self.livingston_models = [GravitationalWaveDetector() for _ in range(n_base_models)] self.denoiser = WaveletDenoiser() def preprocess(self, strain_data, sample_rate=4096): b, a = butter(4, [20, 500], btype='band', fs=sample_rate) filtered = filtfilt(b, a, strain_data) denoised = self.denoiser.denoise(filtered) return (denoised - np.mean(denoised)) / (np.std(denoised) + 1e-8) def predict_single_station(self, data, models): predictions = [] data_tensor = torch.FloatTensor(data).unsqueeze(0).unsqueeze(0) for model in models: model.eval() with torch.no_grad(): output = torch.softmax(model(data_tensor), dim=1) predictions.append(output[0, 1].item()) return np.mean(predictions) def detect(self, hanford_data, livingston_data, fusion_method='mean'): h_prob = self.predict_single_station(hanford_data, self.hanford_models) l_prob = self.predict_single_station(livingston_data, self.livingston_models) if fusion_method == 'and': return 1 if (h_prob > 0.5 and l_prob > 0.5) else 0 elif fusion_method == 'mean': return (h_prob + l_prob) / 2 elif fusion_method == 'probability': return h_prob * l_prob / (h_prob * l_prob + (1-h_prob) * (1-l_prob) + 1e-8) return max(h_prob, l_prob) class CoalescenceTimeValidator: def __init__(self, max_time_diff_ms=10, light_travel_time_ms=10): self.max_diff = max_time_diff_ms self.light_travel = light_travel_time_ms self.envelope_model = EnvelopeExtractor() def extract_coalescence_time(self, data, sample_rate=4096): data_tensor = torch.FloatTensor(data).unsqueeze(0).unsqueeze(0) self.envelope_model.eval() with torch.no_grad(): envelope = self.envelope_model(data_tensor).squeeze().numpy() peak_idx = np.argmax(envelope) return peak_idx / sample_rate * 1000 def validate(self, hanford_data, livingston_data): t_h = self.extract_coalescence_time(hanford_data) t_l = self.extract_coalescence_time(livingston_data) time_diff = abs(t_h - t_l) return time_diff <= self.light_travel + self.max_diff class GWSearchPipeline: def __init__(self): self.ensemble = MultiDetectorEnsemble() self.validator = CoalescenceTimeValidator() def search(self, hanford_strain, livingston_strain, threshold=0.5): h_processed = self.ensemble.preprocess(hanford_strain) l_processed = self.ensemble.preprocess(livingston_strain) detection_prob = self.ensemble.detect(h_processed, l_processed, fusion_method='mean') if detection_prob > threshold: is_valid = self.validator.validate(h_processed, l_processed) if is_valid: return {'detected': True, 'probability': detection_prob, 'validated': True} return {'detected': True, 'probability': detection_prob, 'validated': False} return {'detected': False, 'probability': detection_prob, 'validated': False}


如有问题,可以直接沟通

👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/14 0:19:53

基于Qwen3-Embedding-0.6B的代码相似度检测系统设计全解析

基于Qwen3-Embedding-0.6B的代码相似度检测系统设计全解析 在软件开发与代码治理实践中&#xff0c;识别重复、抄袭或高度相似的代码片段&#xff0c;是保障代码质量、防范安全风险、提升研发效率的关键环节。传统基于语法树或哈希比对的方法&#xff0c;往往难以捕捉语义等价…

作者头像 李华
网站建设 2026/3/13 17:12:06

大模型教程丨浙大出品必属精品!大模型入门书籍 《大模型基础》开源了!

一、书籍介绍 由浙江大学DAILY实验室毛玉仁研究员、高云君教授领衔撰写的《大模型基础》教材第一版。这本教材为对大语言模型感兴趣的读者系统地讲解相关基础知识、介绍前沿技术。 本书包括传统语言模型、大语言模型架构、提示工程、高效参数、模型编辑、搜索增强增加生成等六…

作者头像 李华
网站建设 2026/3/13 19:35:50

从0到1:基于YOLO的手势识别智能控制系统完整实现(数据集+训练+部署+控制逻辑)

文章目录 毕设助力!从0到1构建基于YOLO的手势识别智能控制系统,让你的毕设技惊四座 一、项目背景:手势识别为啥火? 二、核心技术:YOLO三兄弟怎么选? 1. YOLOv5 2. YOLOv8 3. YOLOv10 三、项目目标:我们要做啥? 四、数据准备:让模型“看懂”手势 1. 数据集来源 2. 数据…

作者头像 李华
网站建设 2026/3/14 12:08:07

机场登机口排队人数监测系统:基于YOLOv5/v8/v10的完整实现与性能对比(附代码+数据集

文章目录 机场登机口排队人数监测毕设全流程:从YOLOv5到YOLOv10的深度学习实战指南 一、课题背景与意义:为什么选这个题目? 二、技术选型:YOLOv5、YOLOv8、YOLOv10怎么选? 三、数据准备与标注:让模型“看懂”登机口场景 3.1 数据集选择 3.2 数据标注 3.3 数据增强 四、模…

作者头像 李华
网站建设 2026/3/13 21:05:27

Paraformer-large实时录音识别:麦克风流式输入实现方法

Paraformer-large实时录音识别&#xff1a;麦克风流式输入实现方法 1. 为什么需要流式识别&#xff1f;离线版的局限在哪里 你可能已经用过那个带Gradio界面的Paraformer-large离线识别镜像——上传一个MP3&#xff0c;点一下“开始转写”&#xff0c;几秒后就看到整段文字出…

作者头像 李华