多模态深度学习在系外行星搜寻中的应用:ExoNet系统设计与实战

发布时间:2026/6/23 22:32:56
多模态深度学习在系外行星搜寻中的应用:ExoNet系统设计与实战 1. 项目概述当AI遇见星空在过去的十几年里我参与过不少数据分析项目但把目光投向星辰大海用深度学习去“大海捞针”般寻找系外行星这绝对是最酷、也最富挑战性的经历之一。这个项目的核心就是ExoNet——一个专门为NASA的凌星系外行星巡天卫星TESS数据量身定做的、基于多模态深度学习的自动化识别系统。简单来说它的任务就是从TESS传回的、海量的恒星亮度变化曲线光变曲线中自动、快速、准确地揪出那些可能由行星凌星行星从恒星前面经过遮挡部分星光造成的微弱信号。为什么这件事如此重要且紧迫TESS卫星几乎扫描了整个天空产生了PB级别的数据。传统上科学家们依赖“盒最小二乘”BLS等算法进行初步筛选再结合大量的人工目视检查来确认候选体。这个过程不仅耗时费力而且容易因人类视觉疲劳和主观判断产生遗漏或误判。尤其是在处理那些信号微弱、噪声复杂或者出现多重凌星事件的曲线时传统方法的局限性就更加明显。ExoNet的诞生正是为了应对这一数据洪流带来的挑战它试图将天文学家从繁重的重复性劳动中解放出来让他们能更专注于后续的物理验证和科学发现。这套系统适合谁首先当然是天文学尤其是系外行星领域的研究者和学生。其次对于从事时间序列分析、多模态机器学习或计算机视觉的工程师和数据科学家来说这也是一个绝佳的研究案例你能看到如何将领域知识天体物理与前沿的AI技术进行深度融合。最后对于任何对“AI for Science”感兴趣的爱好者这都是一扇窥见如何用技术解决基础科学难题的窗口。2. 核心设计思路为什么是多模态与深度学习2.1 问题本质与数据特性拆解要理解ExoNet的设计必须先吃透我们要处理的数据——TESS光变曲线。它本质上是一个时间序列记录了某颗恒星亮度随时间的变化。一个理想的凌星信号会在光变曲线上呈现周期性的、U型的凹陷因为行星边缘先开始遮挡然后完全遮挡再逐渐离开。但现实远比理想骨感。数据的核心挑战在于信噪比极低行星凌星造成的亮度下降通常只有千分之几甚至更小而数据中混杂着仪器噪声、恒星本身的活动如星斑、耀斑、以及背景天体污染等多种噪声。形态多样性凌星信号的深度、宽度、形状由于行星的非点状、恒星亮度不均匀等千变万化。存在大量“仿冒信号”诸如食双星、脉动变星、仪器系统误差等都会产生类似凌星的凹陷是主要的假阳性来源。数据模态的单一与局限仅凭一条光变曲线有时很难区分真假信号。我们需要引入更多的“上下文”信息。传统的BLS算法本质上是一个匹配滤波器它假设凌星信号是标准的方波或U型波然后在不同周期和相位上进行扫描寻找匹配度最高的位置。这种方法对规则信号有效但对噪声和非理想形态的鲁棒性较差且无法有效利用除时序点之外的任何其他信息。2.2 从单模态到多模态的范式升级这就是ExoNet引入“多模态”深度学习的关键所在。我们的核心思路是不要只“听”星光亮度这一种“声音”还要“看”这颗恒星所处的“环境”综合判断。我们为每个TESS观测目标构建了三个模态的输入数据模态一原始相位折叠光变曲线。是什么将时间序列的亮度数据按照一个候选周期进行折叠把多个周期的数据叠加到同一个相位窗口通常是-0.2到0.2个相位围绕凌星中心内以增强信号。为什么这是最直接的凌星证据呈现方式。深度学习模型如1D CNN或Transformer可以从中学习凌星信号的局部形态特征深度、宽度、对称性和全局周期性模式。模态二目标像素文件TPF的时空摘要图。是什么TESS不仅记录目标星的亮度还记录其周围一小块天区的像素亮度。我们将目标星所在区域例如5x5像素在凌星事件发生前后一段时间内的亮度变化制作成一个二维图像。X轴是时间或相位Y轴是空间像素位置颜色代表亮度。为什么这是识别背景污染或仪器伪影的“火眼金睛”。如果一个“凌星”信号在目标星像素上很弱但在相邻的背景星像素上更强那它很可能就是背景食双星造成的假信号。通过2D CNN处理这类图像模型能自动学习到信号的空间来源特性。模态三恒星物理参数与观测元数据。是什么包括恒星的温度、大小、表面重力、金属丰度等来自星表的数据以及本次观测的扇区、相机、CCD位置、背景流量水平等。为什么这是融入领域知识的桥梁。例如一颗非常热的恒星周围存在巨行星的概率相对较低某个CCD可能存在已知的系统性噪声模式。将这些参数作为特征向量输入可以帮助模型建立物理先验减少不合理候选体的输出。多模态融合的策略我们并非简单地将三个模态的数据拼接起来。通常采用“晚期融合”或“中期融合”策略。例如分别用1D CNN处理光变曲线、用2D CNN处理TPF图像、用全连接网络处理物理参数各自提取高级特征后再将这三个特征向量在模型后端进行融合连接或加权相加最后由一个共同的分类头通常是全连接层Softmax输出“是行星候选体”或“不是”的概率。实操心得多模态数据的对齐与归一化是前期数据工程的重中之重。光变曲线需要去除长期趋势和异常点去趋势、sigma clippingTPF图像需要做背景扣除和相对光度校准物理参数则需要进行标准化StandardScaler。确保每个模态的数据都处于合理的数值范围是模型稳定训练的前提。3. 模型架构选型与核心实现细节3.1 主干网络的选择与权衡对于不同的数据模态我们测试并选用了不同的神经网络主干光变曲线模态1D序列1D Convolutional Neural Network (CNN)这是最自然的选择。卷积核可以有效地捕捉凌星信号的局部形状特征如凹陷的陡峭边缘和平坦底部。我们通常使用多层小卷积核如宽度为3或5来逐步提取从边缘到整体形态的特征。它的优点是参数效率高训练速度快对局部模式敏感。1D Residual Network (ResNet)当网络加深时为了防止梯度消失和性能退化我们引入了ResNet的残差连接。这对于学习光变曲线中非常微弱的深层抽象模式很有帮助。Transformer Encoder近年来我们也尝试了基于自注意力机制的Transformer。它对长程依赖关系建模能力更强理论上能更好地理解整个相位窗口内点的全局关系。但在我们的实际测试中对于TESS数据精心设计的1D CNN/ResNet在性能和训练成本上往往更具优势因为凌星信号的关键信息通常集中在局部。TPF图像模态2D图像2D CNN标准选择如VGG或ResNet的变体。第一层卷积核可以学习检测“斜线”模式即信号在时间和空间上的传播这对于区分目标星信号和背景星信号至关重要。注意力的引入我们在2D CNN的基础上加入了空间注意力模块如SE Block。这让模型能够学会“关注”图像中哪些像素区域对判断信号真伪更重要例如重点关注目标星中心像素与背景像素的对比。物理参数模态结构化数据多层感知机 (MLP)即全连接网络。结构相对简单但需要谨慎处理特征交互。我们通常会先做特征工程例如计算恒星密度结合半径和质量、或创建观测条件的独热编码再输入MLP。3.2 多模态融合层的设计这是ExoNet架构的灵魂。我们试验了两种主要方式连接后分类 (Concatenation Classifier)将三个模态分支提取出的特征向量假设分别为512维、512维、64维直接连接成一个长向量1088维然后输入到一个全连接层分类器。这是最简单直接的方法。加权特征融合 (Weighted Fusion)为每个模态的特征向量学习一个自适应的权重标量通过一个小型网络或可学习参数再进行加权求和得到融合特征。这种方式允许模型动态决定在判断某个具体样本时更应该信赖哪个模态的信息。例如对于一颗噪声很大的恒星模型可能会更依赖TPF图像来排除背景污染而对于一颗参数非常清晰的恒星物理参数可能权重更高。在我们的最终版本中采用了第二种方式的变体取得了更好的效果。3.3 损失函数与训练技巧损失函数由于真实的行星候选体在数据中极为稀少高度不平衡我们使用带权重的二元交叉熵损失。为“行星候选体”这个少数类别赋予更高的权重通常是其频率的倒数或经过平滑的值迫使模型更加关注难例。数据增强这是提升模型泛化能力的关键。对于光变曲线我们在线生成增强样本包括添加不同水平的高斯噪声。对时间轴进行轻微的拉伸或压缩模拟周期误差。随机丢弃一些数据点模拟数据缺失。在非凌星区域添加仿真的恒星耀斑或星斑信号。训练策略采用预训练-微调模式。先用大量模拟数据或公开的已标记候选体数据预训练模型再用我们手头精标的小批量数据做微调。优化器通常选择AdamW并配合余弦退火学习率调度。注意事项模拟数据的质量决定了预训练的上限。我们的模拟数据必须尽可能贴近真实的TESS数据特性包括噪声谱、采样规律、以及各种天体物理假阳性信号的生成。一个糟糕的模拟器训练出的模型在真实数据上可能会表现失常。4. 从数据到部署完整实操流水线4.1 数据预处理流水线构建这一步占据了整个项目60%以上的工作量。一个稳定、可复现的数据管道是生命线。原始数据获取从MASTMikulski Archive for Space Telescopes下载TESS的目标像素文件TPF和光曲线文件LC。使用lightkurve或astroqueryPython库可以自动化这个过程。光变曲线清洗import lightkurve as lk # 下载数据 tpf lk.search_targetpixelfile(TIC 123456789, sector27).download() lc tpf.to_lightcurve(aperture_maskpipeline) # 使用官方孔径提取光变曲线 # 清洗移除NaN裁剪异常值去趋势 lc_clean lc.remove_nans().remove_outliers(sigma5) lc_flat lc_clean.flatten(window_length101) # 使用Savitzky-Golay滤波器去除长期趋势候选信号提取为训练准备正样本使用astropy.timeseries的BoxLeastSquares或transitleastsquares库对清洗后的光变曲线进行初步的周期搜索找到所有可能的凌星信号周期、历元、深度、持续时间。这些信号将作为生成训练样本的种子。多模态样本生成光变曲线样本以每个候选信号的历元为中心按候选周期折叠截取相位[-0.2, 0.2]的数据点插值到固定长度如256个点。TPF图像样本以同样的历元和时间窗口从TPF中提取目标星周围区域的像素数据形成“时间-空间”二维数组并归一化。物理参数向量从TESS输入星表TIC或其他星表如GAIA交叉匹配获取目标星参数填充缺失值并标准化。标签制作正样本行星候选体来自已确认的系外行星目录如NASA Exoplanet Archive或经过人工严格验证的候选体列表。负样本则从BLS检测出的信号中随机选取被后续验证为假阳性如食双星、仪器噪声的样本以及大量无显著信号的“空”光变曲线样本。4.2 模型训练与验证框架我们使用PyTorch Lightning来组织训练代码它让实验管理和日志记录变得清晰。import pytorch_lightning as pl import torch from torch import nn class ExoNetLitModel(pl.LightningModule): def __init__(self, lr1e-4): super().__init__() self.save_hyperparameters() # 定义三个模态的子网络 self.lc_encoder LCEncoder() # 1D CNN self.tpf_encoder TPFEncoder() # 2D CNN self.param_encoder ParamEncoder() # MLP # 定义融合层和分类头 self.fusion nn.Linear(51251264, 256) self.classifier nn.Sequential( nn.ReLU(), nn.Dropout(0.5), nn.Linear(256, 1) ) self.loss_fn nn.BCEWithLogitsLoss(pos_weighttorch.tensor([10.0])) # 类别权重 def forward(self, lc, tpf, params): feat_lc self.lc_encoder(lc) feat_tpf self.tpf_encoder(tpf) feat_par self.param_encoder(params) fused torch.cat([feat_lc, feat_tpf, feat_par], dim1) fused self.fusion(fused) logits self.classifier(fused) return logits def training_step(self, batch, batch_idx): lc, tpf, params, y batch y_hat self(lc, tpf, params).squeeze() loss self.loss_fn(y_hat, y) self.log(train_loss, loss) return loss def configure_optimizers(self): return torch.optim.AdamW(self.parameters(), lrself.hparams.lr)训练时我们严格划分训练集、验证集和测试集。验证集用于监控模型是否过拟合和选择最佳检查点测试集是最终的性能试金石通常由完全未参与训练的人工精标数据组成。4.3 推理部署与结果解读训练好的模型被封装成一个推理服务。输入是一个TESS目标ID服务会自动完成数据下载、预处理、样本生成、模型预测的全流程。结果解读至关重要模型输出的是一个介于0到1之间的概率值。我们需要设定一个阈值如0.85来判定是否为“高置信度行星候选体”。但绝不能唯概率论。我们配套开发了一个可视化报告工具为每个高概率候选体生成一份“诊断报告”包括折叠光变曲线图模型看到的视图。TPF时空图高亮信号区域。恒星参数摘要。模型对三个模态的“注意力”或“贡献度”可视化如果架构支持。与已知假阳性类型的相似度评分。这份报告是交给领域专家进行最终人工复核的“病历本”极大地提高了复核效率。5. 实战中遇到的坑与解决方案5.1 数据层面的典型问题问题数据泄露Data Leakage现象模型在验证集上表现极好但在全新的、来自不同天区或观测扇区的测试集上性能骤降。排查检查数据划分方式。最初我们按“目标星”划分但同一颗星在不同扇区的观测被分到了训练集和测试集导致模型“记住”了这颗星的某些特性而非学会泛化的凌星模式。解决严格按“目标星”进行划分确保同一颗星的所有数据只出现在一个集合中。更严格的划分是按“天区”或“扇区”划分模拟模型面对全新天区的真实表现。问题负样本“不干净”现象模型对某类特定的假阳性如某些类型的食双星识别率很高但对另一类如某些仪器伪影却很差。排查检查负样本的构成。发现我们的负样本库中食双星样本过多而仪器噪声和恒星活动样本不足。解决对负样本进行分层抽样确保假阳性类型的分布尽可能均衡。同时主动生成一些难以区分的“对抗性”负样本例如用模拟器生成极其类似凌星的食双星信号加入训练提升模型的判别边界。5.2 模型训练与调优的挑战问题多模态学习不平衡现象训练过程中发现光变曲线分支的损失下降很快而TPF图像分支的损失几乎不变模型似乎主要依赖光变曲线做决策。排查检查各模态输入数据的尺度和梯度。发现TPF图像经过预处理后数值动态范围很小导致初始梯度微弱。解决对TPF图像进行更激进的对比度拉伸或直方图均衡化。为不同模态分支设置不同的初始学习率给“学习困难”的模态如图像分支更大的学习率。在融合前对每个模态的特征向量进行独立的归一化如LayerNorm。问题过拟合与泛化现象在包含模拟数据的训练集上准确率99%但在真实数据测试集上只有85%。排查模拟数据与真实数据之间存在分布差距Domain Gap。解决数据增强的针对性加强在模拟数据中注入更真实的TESS系统噪声模型从真实数据中估计。领域自适应采用对抗性训练让模型学习提取不受数据来源模拟vs真实影响的特征。测试时增强对同一个真实数据样本进行多种轻微的数据增强如添加不同噪声实例将多次预测结果平均作为最终输出提升稳定性。5.3 性能评估的陷阱问题评估指标选择不当现象准确率很高但天文学家反馈漏掉了许多他们关心的微弱信号。分析在极度不平衡的数据集上正样本可能不到1%准确率是毫无意义的指标。模型只要把所有样本都预测为负就能获得99%的准确率。解决采用更科学的评估指标精确率-召回率曲线PR Curve及平均精度Average Precision, AP这是不平衡分类问题的黄金标准它更关注模型对正样本的检索能力。受试者工作特征曲线下面积ROC-AUC同样有效但在不平衡极度严重时PR-AUC更具信息量。在特定召回率下的精确率例如“在召回率达到90%时精确率是多少”这直接对应了“在找到几乎所有真实候选体的前提下误报有多少”这一实际需求。问题与现有流程的对比不公现象声称ExoNet比传统BLS方法好很多。注意必须进行公平对比。BLS通常输出一个检测统计量如信号检测效率SDE我们需要为ExoNet的概率输出选择一个阈值使得两者的“误报率”或“候选体数量”在同一水平线上再比较“检出率”。否则单纯比较概率0.5的ExoNet结果和SDE7的BLS结果是没有意义的。6. 未来展望与扩展思考ExoNet的成功部署只是AI赋能系外行星搜寻的第一步。在实际使用中我们不断发现新的改进点和延伸方向。一个深刻的体会是模型的可解释性与天文学家的信任建立是一个长期过程。我们正在集成诸如SHAP或LIME等工具来量化每个输入特征甚至光变曲线上的某个数据点、TPF图像上的某个像素对最终决策的贡献。当天文学家能看到模型是“因为这里有一个清晰的U型凹陷并且信号在空间上局限于目标星像素同时恒星参数也支持行星存在”而做出判断时他们会更愿意采纳模型的建议。另一个方向是主动学习。目前我们依赖历史已标记数据。未来可以构建一个闭环系统模型对海量未标记数据做出初步预测将其最“不确定”的样本例如概率在0.4-0.6之间或最具“代表性”的样本推荐给天文学家进行优先标注。新标注的数据立即加入训练集让模型在迭代中越来越聪明形成“人机协同”的发现闭环。最后多任务学习也很有吸引力。除了判断“是/否”行星候选体我们能否让模型同时预测行星的半径、轨道周期甚至大致质量这需要构建更丰富的训练标签但一旦实现将能提供更立体的初筛信息。我们正在尝试在模型末端增加回归头用均方误差损失来联合优化分类和参数估计任务初步结果显示模型对深度关联半径和宽度关联轨道倾角、周期的预测已经展现出一定的潜力。这条路没有终点。每一次模型的迭代每一次与新数据的碰撞都可能让我们离发现下一颗“地球2.0”更近一步。而最让人兴奋的莫过于看到自己编写的代码真正地在人类认知边疆的探索中扮演了一个微小但切实的角色。