服务调研关于联系
← 返回商業調查
2026-05-18資料分析·

一瓶香水裡有上百種分子,AI 怎麼把它們一個個挑出來GC-MS 香精反卷演算法,從原理到落地

一瓶香水裡有上百種分子,AI 怎麼把它們一個個挑出來

GC-MS 香精反卷演算法,從原理到落地


一、問題的起點

你拿到一瓶別人家的香精,聞起來很好。客戶問:「這個能不能照著做一瓶?」

傳統的做法是:送去做一次 GC-MS 檢測,拿回一張報告,然後請一位經驗豐富的調香師,對著那張報告坐 3 到 7 天,反推出一份可以打樣的配方表。

這位調香師做的事情,業內叫「反卷」。意思是:把光譜反推回配方。

3 到 7 天,是行業的下限。一份典型的複合香精裡可能有 80 到 150 種化合物,其中混著十幾種精油、幾十種合成單體、幾種載體溶劑。同一種分子,可能既來自薰衣草精油裡的「芳樟醇」,也可能是單獨加進去的「純芳樟醇單體」。調香師要憑經驗判斷:這個數字屬於誰。

可不可以讓演算法把這一步做了?

可以。但不是你想的那種「AI」。


二、GC-MS 不是答案,是被撕碎的答案紙

先講清楚 GC-MS 是什麼。

Gas Chromatography–Mass Spectrometry,氣相層析-質譜聯用。把香精樣品打進去,儀器會把它分離成幾十到上百個層析峰,每個峰對應一種分子,輸出大致是這樣的一張 Excel:

序號保留時間CAS 號化合物名面積%
14.3278-70-6芳樟醇8.68
25.11115-95-7乙酸芳樟酯3.60
36.89105-37-3丙酸乙酯2.10
...............
12622.41unknow0.22

一份烏木沉香類的複合香精,跑出來 126 行。

注意一個關鍵事實:GC-MS 給的是「分子層面的清單」,不是「原料層面的配方」。

調香師真正需要的是這種東西:

異構十二烷    80.46%   ← 載體
芳樟醇         8.80%   ← 純單體
乙酸芳樟酯     3.60%   ← 純單體
二丙二醇甲醚   2.60%   ← 溶劑
龍涎酮         1.55%
佳樂麝香       0.92%
... 共 24 行原料 ...
藿香油         0.10%   ← 唯一精油

這才是藥劑師能拿著去稱量配料的「配方表」。它的顆粒度是原料,不是分子

GC-MS 是把答案紙撕成了 126 片碎紙。反卷演算法做的事,就是把這 126 片紙重新拼回成 24 行原料的原稿

GC-MS 给的是"分子清单",调香师要的是"原料配方" 反卷算法就是把左边变成右边 GC-MS 原始报告(实测) 序号 保留时间 CAS 号 化合物名 面积% 14.3278-70-6芳樟醇8.68 25.11115-95-7乙酸芳樟酯3.60 36.89105-37-3丙酸乙酯2.10 48.2187-44-5β-石竹烯1.84 59.55123-35-3月桂烯1.42 610.1898-55-5α-松油醇1.21 711.425392-40-5柠檬醛0.96 812.71128-37-0丁基羟基甲苯0.83 913.858000-46-2广藿香醇2.72 1014.96469-61-4α-雪松烯1.51 1116.2317699-05-7α-愈创木烯0.41 12622.41unknown0.22 126 行 · 分子级颗粒度 · 算法不能直接打样 反卷 algorithm 药剂师配料表(反卷输出) 原料 类别 用量% 异构十二烷载体80.46 芳樟醇纯单体8.80 乙酸芳樟酯纯单体3.60 二丙二醇甲醚溶剂2.60 龙涎酮纯单体1.55 佳乐麝香纯单体0.92 广藿香油精油9.07 柏木油精油6.02 藿香油精油0.10 丁基羟基甲苯抗氧剂0.83 合计24 项原料100.00 24 行 · 原料级颗粒度 · 拿了就能称量打样 Robert · TryWay Labs · 2026-05-18

圖 1 · GC-MS 給的是「分子清單」,調香師要的是「原料配方」——反卷演算法做的就是把左邊變成右邊


三、反卷不等於訓練,更不是大模型

很多人第一反應是:「丟給 GPT 不就行了?」

不行。原因有三個,越往後越重要:

① 大語言模型從來沒「聞」過香精,它讀過的只是文字。 哪怕你把全網調香部落格都餵給它,它也只是知道「芳樟醇有薰衣草感」這種詞面知識,不知道「一份檸檬油會帶進來 8% 的檸檬烯」這種定量結構。

② GC-MS 的反推是一個有數學結構的逆問題,不是模式識別。 它本質上是在解一組線性方程——「已知 126 個化合物的實測百分比,求 30 種候選原料各放了多少。」這種問題有 50 年的統計學積累,傳統方法乾淨利索。深度學習反而需要「配方→GC-MS」的成對資料來訓練,而行業裡那種資料正是最不可能公開的——配方本身就是命脈。

③ 大模型會「編」。 它可能告訴你這瓶裡有 5.2% 的橙花叔醇,但 GC-MS 報告裡壓根沒這一行。在調香這種 ±1% 都要重打樣的場景,編一次就報廢一批料。

方式適合的問題這個場景適合嗎
訓練一個 LLM教 AI 理解語言不適合,也輪不到你
微調一個 LLM讓 AI 學某種語氣不適合,問題不是語言問題
Prompt 大模型開放式生成不適合,會編
傳統數值演算法有方程結構的逆問題正解

反卷演算法走的是第四條路。它不「聰明」,但它「誠實」——解不出來的部分會留空,絕不編。


四、完整管道:從光譜到配方

整個反卷流水線分五個階段:

階段輸入輸出關鍵技術
1. 解析GC-MS Excel化合物清單多格式 xlsx 解析
2. 分類化合物清單標註:精油 / 合成 / 溶劑 / 未知CAS 字典 + 名匹配
3. 歸一標註後的清單去溶劑、按 100% 歸一配方學慣例
4. 反推歸一後的化合物候選原料 + 用量本文重點
5. 出表候選原料 + 用量調香師配料表Excel 範本

前三步是工程苦活,沒什麼可講的。真正有意思的是第 4 步——「反推」。

第 4 步又分兩層:

下面挨個講。

GC-MS 香精反卷 · 五阶段流水线 前三步是工程苦活,第四步"反推"才是算法本体 ① 解析 输入 GC-MS Excel 输出 化合物清单 ② 分类 输入 化合物清单 输出 精油/合成/溶剂/未知 ③ 归一 输入 标注后的清单 输出 去溶剂 + 归 100% ④ 反推 ★ 输入 归一后的化合物 输出 候选原料 + 用量 本文核心 ⑤ 出表 输入 候选原料 + 用量 输出 调香师配料表 ④ 反推 — 三层算法的叠罗汉 锚定法(v1.5) 反算用量 · 解决 80% 简单问题 双信号合验(v1.9) 否决假阳性精油 NNLS + LASSO(v2.0) 多源化合物精确拆分 Robert · TryWay Labs · 2026-05-18

圖 2 · 五階段反卷流水線 —— 前三步是工程苦活,第④步「反推」才是演算法本體


五、第一步 · 錨定法:先找指紋

每一種精油都有自己的「指紋分子」。

精油錨定分子在該精油裡的典型佔比
薰衣草油芳樟醇~35%
廣藿香油廣藿香醇~30%
柏木油α-雪松烯~25%
橙葉油乙酸芳樟酯~50%
黑胡椒油β-石竹烯~22%

錨定法的思路很樸素:反著算回去。

舉個例子。GC-MS 報告裡測到廣藿香醇 2.72%。這個分子幾乎只在廣藿香油裡出現,典型佔比 30%。

那麼:

配方裡廣藿香油的用量 ≈ 2.72% ÷ 30% ≈ 9.07%

再去驗證:廣藿香油裡另外幾個特徵分子(α-廣藿香烯、α-愈創木烯…)的實測量是不是也對得上 9.07% 的帶入比例?如果對得上,HIGH 置信;只對一半,MEDIUM;完全不對,要麼用量算錯了,要麼根本不是這種精油。

這一步能解決香精分析裡大約 80% 的問題。你能識別出「這裡有 9% 的廣藿香油、6% 的柏木油、0.1% 的藿香油」,調香師就能直接開始打樣了。

锚定法:从实测分子反推精油用量 每种精油都有自己的"指纹分子",反着算回去就行 GC-MS 实测片段 化合物 实测 % 芳樟醇8.68 乙酸芳樟酯3.60 β-石竹烯1.84 广藿香醇 ★ 2.72 α-雪松烯1.51 α-愈创木烯0.41 ① 在 GC-MS 报告里找到广藿香醇的实测值 反算公式 2.72% ÷ 30% ≈ 9.07% ② 已知广藿香油里广藿香醇典型占比 30%,反推精油用量 推出的配方片段 原料 用量 % 异构十二烷(载体)80.46 芳樟醇(单体)8.80 广藿香油 ★ 9.07 柏木油6.02 藿香油0.10 ③ 把"广藿香油 9.07%"写进配方表 交叉验证: 再去看广藿香油的其他特征分子(α-愈创木烯 0.41% / α-雪松烯 1.51%)是否对得上 9.07% 的带入比例 对得上 → HIGH 置信 · 对一半 → MEDIUM · 完全不对 → 进入下一步「双信号合验」

圖 3 · 錨定法:實測廣藿香醇 2.72% ÷ 典型佔比 30% ≈ 推出廣藿香油用量 9.07%

但錨定法有個漏洞——它分不清「精油帶進來的分子」和「單獨加的純單體」


六、第二步 · 雙信號合驗:讓冒牌精油現形

回到開頭那瓶 8 號樣品。

調香師私下告訴我們:「這裡面沒有橙葉油。」

但演算法識別出來 7.54% 的橙葉油。為什麼?

橙葉油的主要成分是芳樟醇 + 乙酸芳樟酯。演算法看見這瓶裡芳樟醇 8.8%、乙酸芳樟酯 3.6%,反推回去就得出「7.54% 橙葉油」。

可真相是:芳樟醇和乙酸芳樟酯都是單獨加的純單體——便宜、純、量大。演算法把它們誤認成是「橙葉油帶進來的」。

這就是假陽性。在調香場景裡,假陽性比漏檢還危險——你按著假配方打樣,錢白花了。

解法是加一道「雙信號合驗」:

信號 ①:錨定主導性。

一種真精油裡,它的錨定分子應該是佔比最高的。橙葉油裡,乙酸芳樟酯(錨定)佔 50%,芳樟醇佔 30%,比例是 50:30。但 8 號樣品裡實測的乙酸芳樟酯 3.6%,芳樟醇 8.8%,比例倒掛了——芳樟醇比錨定還多。這種倒掛只能說明:芳樟醇是外加的,不是橙葉油帶進來的。 直接否決。

信號 ②:加權失敗率。

如果識別出一瓶 9% 的某精油,那這種精油裡所有特徵分子的實測量都應該「配得上 9% 的帶入」。把所有特徵分子的預期和實測一一對照,按 typical 佔比加權算出「失敗率」。失敗率超過 70%,否決;50%–70%,置信度降一檔。

加上這兩道關,演算法終於不會再被純單體騙。8 號樣品的橙葉油假陽性被乾淨否決了,剩下的真精油保留。

這一步看起來不起眼,但它是把這個系統從「能跑出報告」推到「能給客戶交付」的關鍵一步。真正的護城河,往往不是主演算法,而是「主演算法的邊界檢測」。

双信号合验:让冒牌精油现形 案例:8 号样品里识别出 7.54% 橙叶油 — 真的还是假阳性? 信号 ① · 锚定主导性 — 真精油里锚定分子应当占比最高 参考(真橙叶油里的典型比例) 乙酸芳樟酯(锚定) 50% 芳樟醇 30% 比例 50 : 30 → 锚定 ✓ 占优 实测(8 号样品 GC-MS) 乙酸芳樟酯(锚定) 3.6% 芳樟醇 8.8% 比例倒挂 3.6 : 8.8 → 锚定反而被压 ✗ 比例倒挂只能说明:芳樟醇是单独加的纯单体,不是橙叶油带进来的 → 否决 信号 ② · 加权失败率 — 真精油里所有特征分子都该"配得上"识别出的用量 若识别出 7.54% 橙叶油,则下列 marker 应有相应的"预期带入量",与实测对比 → Marker 预期 % (按 7.54% 推) 实测 % 判定 typical 权重 乙酸芳樟酯(锚定) 3.77 3.60 ✓ PASS 50 橙花叔醇 2.26 0.45 ✗ FAIL 30 香叶醇 1.36 0.05 ✗ FAIL 18 乙酸香叶酯 0.91 0.02 ✗ FAIL 12 β-蒎烯 0.75 0.68 ✓ PASS 10 加权失败率 = (30 + 18 + 12) / (50 + 30 + 18 + 12 + 10) = 60 / 120 = 50% < 70%,但叠加信号 ① 已 REJECT Robert · TryWay Labs · 2026-05-18

圖 4 · 雙信號合驗把橙葉油假陽性攔下 —— 信號①錨定比例倒掛 + 信號②加權失敗率超閾值


七、第三步 · 1974 年的禮物:NNLS

上面兩步處理的還是「哪種精油用了多少」。

現在到最難的問題:同一個分子,怎麼知道是哪些原料一起貢獻的?

舉個例子。這瓶香精裡測到芳樟醇 8.8%。它可能來自:

也可能是:

這就是經典的逆問題:已知「混合後的樣子」,求「每種原料各放了多少」。

寫成方程:

b = A · x

如果 A 是方陣且可逆,一行線性代數就解出來了。問題是:

1974 年,兩位數學家 Charles Lawson 和 Richard Hanson 在他們的書 Solving Least Squares Problems 裡寫下了一個演算法,專門解這種「帶非負約束的最小二乘問題」,叫 NNLS(Non-Negative Least Squares)

演算法本身只有幾十行程式碼,但它有兩個動人之處:

第一,它有「精確解」保證。 不是神經網路那種「訓練到差不多收斂」,而是真正的、有數學證明的、有限步收斂到最優解。

第二,它穿越了半個世紀。 從 1974 年發明到今天,從化學計量學到光譜反卷、醫學成像、地震學、天文學——所有「已知觀測、求源頭比例、且比例不能為負」的問題,背後都是它。

你今天用 Python 寫 scipy.optimize.nnls(A, b),調的就是 Lawson-Hanson 1974。

香精反卷拿來就用。它不屬於哪個程式設計師,它屬於半個世紀的統計學積累。


八、第四步 · 1996 年的革命:LASSO

NNLS 解決了「非負」,但還有一個問題沒解決:稀疏性

現實裡,一瓶香精最多用 20–30 種原料。但候選庫裡有上千種原料。

如果直接跑 NNLS,它會傾向於把用量「均勻攤開」——給每種原料分一點點。最後給你的答案可能是 800 種原料各佔 0.1%。理論上殘差最小,實際上不可用。

1996 年,史丹佛統計學家 Robert Tibshirani 在那篇至今被引用近 10 萬次的論文 Regression Shrinkage and Selection via the Lasso 裡給出了優雅的解法。

LASSO 全名 Least Absolute Shrinkage and Selection Operator。它在最小二乘的目標函數裡加了一個 L1 懲罰項:

minimize  ‖Ax - b‖² + λ · ‖x‖₁

後面那項 ‖x‖₁ 是所有 x 分量絕對值之和。係數 λ 越大,懲罰越狠,被壓成 0 的變數越多。

LASSO 的神奇之處是:它會自動把絕大多數變數精確壓成 0,只留下少數真正「有貢獻」的。

這正是我們要的。

演算法解決的問題香精反卷裡的角色
NNLS(1974)用量不能是負數物理約束
LASSO(1996)只能用少數幾種原料稀疏先驗

把兩者合起來——NNLS 保證非負、LASSO 保證稀疏,得到的就是一份「30 種原料、每種用量都是正數、加起來等於 100%」的可打樣配方表。

注意這兩個數學家——Lawson、Hanson、Tibshirani——都不是化學家。 他們解決的是抽象的數學問題。但因為這種問題的抽象形式剛好對得上香精反卷,今天的演算法只要 80 行 Python 程式碼就能跑通。

這是數學最美的地方:在一個完全不相關的領域裡被發明,在 30 年後被另一個領域撿起來用。

半个世纪的统计学,被香精反卷捡了起来 两位数学家、一位统计学家——三个完全不相关的领域里出生,最后汇到一起 1970 1980 1990 2000 2010 2020 2030 1974 NNLS · 非负最小二乘 Charles Lawson & Richard Hanson Solving Least Squares Problems 保证答案非负 1996 LASSO · 稀疏选择 Robert Tibshirani · 斯坦福 Regression Shrinkage & Selection 保证答案稀疏 2026 香精反卷 · 我们这一代 NNLS + LASSO 组合用于 GC-MS 把光谱反推成可打样的配方表 化学计量学新落地 ↔ 22 年 ↔ 30 年 数学最美的地方: 在一个完全不相关的领域里被发明,在 30 年后被另一个领域捡起来用。 `scipy.optimize.nnls(A, b)` · `sklearn.linear_model.Lasso` — 你今天调的就是 1974 与 1996

圖 5 · 1974 Lawson-Hanson NNLS → 1996 Tibshirani LASSO → 2026 香精反卷,半個世紀的數學積累被撿起來


九、字典是護城河,原料資料是壁壘

寫到這裡,你應該已經發現一個反直覺的事實:

演算法本身沒有秘密。 NNLS 在 scipy 裡,LASSO 在 sklearn 裡,錨定法是常識。任何懂統計學的工程師花兩週都能搭出一套來。

真正難的是資料。

要跑這套反卷系統,你需要:

資料資產這是什麼難度
原料字典一千多條原料的中英文名、CAS、香氣描述、揮發度行業內部資料,外人買不到
精油 GC-MS 庫每一種常用精油的完整光譜指紋一份實測 1500–2500 元,全譜要 40+ 種
配方真值對照集已知配方 + 已知 GC-MS 的成對樣本行業裡最秘密的東西,幾乎不流通
CAS 一物多名標註同一個分子在不同廠商那裡的幾個商業名沒人願意做的髒活,但必須有

我們目前的系統裡:

經過 6 輪獨立第三方盲測(雙 LLM 交叉校對 188 個樣本),原料資料庫的真錯率從 17% 一路降到 1.5% 以下。

原料数据库 v1 → v5.1:6 轮盲测,真错率压到 1.5% 以下 外部双 LLM(ChatGPT-5 + Gemini 2.5 Pro)独立校对 188 条样本 0% 5% 10% 15% 20% 真错率(事实错误占比) v1 v2 v3 v4 v5 v5.1 17% 10% 6% 4.8% 1.5% <1.5% PubChem 全补 + LLM 审查 BP 解析修复 + 抛错 AI 香调 MW>200 重质大分子 + CAS 一物多名 MP>60 固体结晶 + 错配 hotfix 3 具名 FAIL + 65 翻译补全 后调白名单 +1 hotfix 工程化迭代的力量: 17% → 10% → 6% → 4.8% → 1.5% — 真错率压缩约 11 倍,靠的不是算法升级,是 137 条系统修订

圖 6 · 原料資料庫 v1→v5.1 真錯率:17% 一路壓到 1.5% 以下,6 輪獨立 LLM 盲測驗證

在一瓶典型的烏木沉香複合香精樣本上,系統的當前能力是:

3 到 7 天 → 1 天。這是行業目前能給出的提速比。


十、為什麼不主動擴庫?

讀到這裡你可能會問:既然演算法清晰、資料是壁壘,為什麼不直接花錢把資料補齊、把庫擴到 2000 條?

因為這條路有一個反直覺的陷阱——主動擴庫的邊際收益正在遞減

精油有上千種,但 80% 的香精只用到大約 40 種主精油。補到 50 種之後,每多補一份的「實戰命中率」漲幅迅速衰減。合成單體同理——商業名一千條之後,每多收 100 條只能再砍掉 1–3% 的佔位坑。

更重要的是,這套系統的下一步迭代是 NNLS + LASSO 的完整反卷,工程量 6–7 天。這一步不需要更多資料,需要更多「已知答案的樣本」——也就是「題目 + 真值」對照集。

而那種資料,市面上買不到。它只在兩類人手裡:

  1. 上游原料廠、獨立精油供應商——你們手裡有自己產品的完整 GC-MS。
  2. OEM 仿樣工廠、調香工作室——你們手裡有「打樣配方 + 客戶原品 GC-MS」的成對記錄。

如果你正在讀這篇文章,並且你恰好屬於這兩類——歡迎接入。合作模式不限於現金:資料互換、訂閱授權、按訂單分成都可以談。你貢獻一份精油 GC-MS 或一組配方真值,對應得到的是一套已經過 6 輪盲測的工程化反卷系統的優先使用權。

這不是宣傳話術。是因為這套系統的下一躍遷,本來就不是演算法問題,是資料合作問題。


十一、當前的能力邊界

誠實寫一下系統現在做不到什麼:

還做不到原因等什麼
多源化合物精確拆分NNLS+LASSO 還沒接入觸發後 6–7 天
用量精度 ±3%缺「題目+真值」對照集N=10–30 個樣本
高端天然香水級反卷精油庫覆蓋 18/40+補 22–25 份 GC-MS
大牌香水復刻法律紅線不做

v1.10 当前能力 · 六维准确率画像 在一瓶典型的乌木沉香复合香精样本上 — 不掩盖短板 25% 50% 75% 100% ① 形态覆盖率 87.6% ② 精油识别召回 100% ③ 精油识别精确 100% ④ 合成单体识别 ~65% ⑤ 用量数字精度 ±6.7pp ⑥ 多源化合物拆分 0% (v2.0 待解锁) v1.10 当前实测 100% 概念边界 "找东西 100% · 称数字 ±6.7pp · 拆来源 0%" Robert · TryWay Labs · 2026-05-18

圖 7 · v1.10 當前能力六維畫像 —— 找東西 100%、稱數字 ±6.7pp、拆來源 0%(待 v2.0 解鎖)

最後一行重要——任何讓我們去反卷 Chanel、Dior、Tom Ford 類成品的請求,一律不接。這不是技術問題,是智慧財產權問題。這套系統的合規用途明確:


十二、總結

GC-MS 反卷的本質: 不是 AI 聞香水,是用 50 年前的統計學解一個有結構的逆問題。

錨定法的本質: 反著算回去——從分子比例反推原料用量。

NNLS 的本質: 1974 年的禮物——保證答案非負。

LASSO 的本質: 1996 年的革命——保證答案稀疏。

雙信號合驗的本質: 不是讓演算法更聰明,而是讓演算法學會懷疑自己。

整個系統的本質: 演算法是公開的、字典是私有的、資料是稀缺的。演算法可以兩週復現,但 6 輪獨立盲測的資料庫、488 條 CAS 一物多名審計、一份「題目+真值」對照集——這些東西沒有捷徑。

不需要訓練一個 AI。不需要 GPU 叢集。不需要把香精交給大模型去「理解」。

需要的是:一份原料字典、一組精油指紋、幾個真值樣本,和半個世紀的統計學。

分享
← 返回商業調查列表

相關文章 · 長為試之

長為試之印(盖印版·自然崩口)