跳到主要内容
DR20 里最值钱的是一个布尔值

DR20 里最值钱的是一个布尔值

原石
原石

· 阅读约 3 分钟

先贴 SQL。

SELECT plate, mjd, fiberid, z, zwarn, eyeballed
FROM specobj
WHERE survey = 'SPIDERS'
  AND eyeballed;   -- 只要人看过的

字段名我随手写的,别直接抄去跑。重点是最后那个 eyeballed——一个布尔,标着“这条光谱被人眼看过”。SDSS-V 的 DR20 我翻了一遍,330 万条光谱、50 万个星系、150 万颗恒星,这些数字都不是重点。整份发布里最值钱的,就是这一列。

事情是这样的。一部分新光谱超出了自动分析流程的预期,机器给的归约结果不可信了。团队的应对不是修 pipeline 修到天荒地老,而是加人工目视检查,并且把目视结论直接放进发布。没藏起来,没等下一版“修正”,就放在数据里。

我为什么对这个布尔这么上心。因为这是整套流程里唯一一处,机器的输出被一个具体的人按住说“这个不对”。其余 330 万条光谱,都是机器人焦平面排光纤、自动流水线跑归约、模板拟合给红移——一路自动到底。自动不坏。均匀是真均匀,SPIDERS 那批 X 射线源的光学证认能做成迄今最大且均匀度最高的数据集,靠的就是这种流水线纪律。但均匀的代价是:pipeline 看不懂的东西,在报表里不存在。

隐藏黑洞就是现成的例子。这次翻出来的那批“隐藏”黑洞——光学紫外巡天容易漏掉的——不是新物种,是一直坐在那儿,只是你的选择函数看不见它们。更狠的是总数账:局部宇宙里,软 X 射线选出来的黑洞只占超大质量黑洞总增长的一小部分,70% 到 90% 的增长发生在被尘埃气体遮挡、连 X 射线都受抑制的阶段。

七成到九成。你以为的“黑洞普查”,实际是一张 minority 报表。拿这张报表推高红移处亮 AGN 的空间密度、推到红移 6,结论可能是对的——早期宇宙里快速增长的大黑洞比过去以为的更普遍,这个方向我信——但每往前推一步,脚底下垫的都是“我们没看见的那八成长什么样”这个假设。

这跟我天天骂的软件问题是一个形状。pipeline 就是那个“看起来对”的 AI 输出。它学过太多看起来对的坏例子,产出的东西大面上都过得去,坏就坏在尾部——而科学上有意思的东西,恰恰老在尾部。SDSS 的做法是对的:自动跑 99%,人看那 1%,并且把“人看过”写进数据本身,让下游知道哪条结论踩在人眼的地基上。

对比我们这行。自动流程输出异常,第一反应是“调一下阈值让它别报警”。把告警关掉,pipeline 干净了,报表好看了。天文这边反过来:异常不够自动流程处理的,把人加进流程,把人的判断当第一等数据。两条路,半年后见分晓。

说句题外话。DR20 配套发了 Jupyter Notebook 教程,教你怎么查询、怎么用增值目录。我顺手翻了翻,教程里最诚实的一步就是教你怎么按质量标记过滤光谱。工具链长成这样挺好——不是给你一个“洞察平台”,是给你一个能跑的 notebook,你自己看数据。能自己 make 的东西天然更可信,数据这行同理:能自己 query 的目录,比任何替你总结好的结论可信。

所以你要做的是那两成被遮挡的增长怎么补——那是物理问题,不是查询问题。但至少先知道脚下的地基哪块是混凝土、哪块是 pipeline 的默认输出。

我从 DR20 拿走的就一条:任何大规模自动产出,都该带一个“这段被谁看过”的列。没有这列的数据,你用的不是数据,是流水线的自信。

本期就这句。

原石
原石

把代码当文章写的系统工程师,以源码立论、单线程式拒绝复杂度。

查看主页 →