1. 项目概述当机器学习“闻”到分子的气味预测一个分子闻起来是什么味道这听起来像是科幻小说里的情节但却是香料化学、食品科学和神经科学领域一个长久以来的“圣杯”式挑战。作为一名长期混迹于化学信息学和数据科学交叉领域的从业者我深知这个问题的复杂性它不像预测熔点或溶解度那样有清晰的物理化学规律可循。气味感知是主观的、多维的且高度依赖于人类语言描述——我们称之为“气味描述符”。一个分子可能被描述为“果香”、“花香”、“青草味”或“硫磺味”而这些描述之间又存在着微妙而复杂的层次关系。传统的“结构-气味”关系研究多依赖于化学家的经验规则但分子结构的微小改动比如增加一个甲基可能导致气味天差地别这让基于简单规则的预测举步维艰。近年来机器学习特别是图神经网络GNN为这个问题带来了曙光。通过将分子结构视为图原子是节点化学键是边GNN可以学习到更丰富的结构表征甚至构建出“主气味地图”Principal Odor Map。然而一个核心瓶颈依然存在我们如何组织和利用那多达数百个、看似杂乱无章的气味描述符直接让模型预测146个独立的描述符类别无异于让它在噪音中寻找微弱的信号。本文要探讨的正是我们团队近期完成的一项工作我们尝试为这些气味描述符建立“秩序”——即构建气味分类法Taxonomy并验证这种先验的结构化知识是否能成为机器学习模型预测分子气味的“导航仪”。我们采用了双管齐下的策略一方面依靠化学、调香和历史嗅觉文化领域的专家知识手动构建了一个多层级的专家分类法Expert Taxonomy, ET另一方面纯粹从数据出发基于描述符在分子数据集中的共现模式通过聚类算法生成了一个数据驱动分类法Data-driven Taxonomy, DT。我们的核心假设是一个能反映描述符之间语义或感知相似性的分类体系能够约束模型的输出空间让模型学习到更稳健、更可泛化的“结构-气味”映射模式。简单来说这不是一个从零开始构建预测模型的故事而是一个关于如何通过“整理标签”来显著提升现有模型性能的实战案例。无论你是从事计算化学、嗅觉信息学的研究人员还是对机器学习在感官科学中应用感兴趣的数据科学家亦或是希望理解AI如何辅助香料设计的从业者这篇文章将带你深入我们方法论的每一个细节分享从数据清洗、分类法构建、模型训练到结果分析的完整流程与踩坑心得。2. 核心思路与方案设计为什么是分类法在深入代码和结果之前我们必须先厘清核心思路为什么我们认为构建分类法能提升预测性能这背后是对问题本质和机器学习局限性的深刻理解。2.1 问题拆解从“大海捞针”到“分区域搜索”想象一下你面前有6711个分子每个分子可能带有1到17个不等的标签这些标签来自一个包含146个气味描述符的集合。你的任务是建立一个模型根据分子的结构特征比如原子类型、环的数量、电负性等713个描述符预测它可能属于哪些气味类别。这是一个典型的多标签分类问题。直接使用146个原始描述符作为输出标签面临几个严峻挑战数据稀疏与高维输出许多描述符只出现在极少数分子上导致正样本极少模型难以学习。146维的输出空间使得模型参数空间巨大容易过拟合。标签相关性被忽略“草莓”和“浆果”、“柠檬”和“柑橘”之间存在强烈的语义和感知相关性。一个具有“草莓”气味的分子也很可能被描述为“浆果”。原始标签体系没有显式利用这种相关性模型需要从数据中自行发现这需要海量、高质量的数据。噪声与不一致性气味描述具有主观性。不同数据库、不同评价者对同一分子的描述可能存在差异或侧重不同。这种噪声在细粒度标签上会被放大。引入分类法的核心思想是进行标签空间的降维与结构化。我们将146个细粒度描述符归纳到16个更宽泛的“气味家族”中如“果香”、“花香”、“木香”。这样模型的预测任务就从识别146个独立标签转变为识别16个高层级类别。这带来了几个直接好处减少输出维度从146降至16极大简化了分类任务降低了模型复杂度要求。增强类内样本原本稀疏的“草莓”、“覆盆子”样本被合并到“果香”大类下增加了该类别的正样本数量让模型更容易捕捉到“果香”相关的结构模式。引入先验知识分类法本身编码了描述符之间的相关性例如所有“花香”描述符被归为一类为模型提供了宝贵的领域知识引导。这就好比将“在大海中寻找特定种类的鱼”的任务转变为“先找到鱼群活跃的海域大类再在该海域内识别具体鱼种小类”。第一步的“分区域搜索”大大降低了任务的初始难度。2.2 双轨制分类法构建专家经验与数据真相的对话我们采用了两种截然不同但又互补的方法来构建分类法旨在相互验证探寻气味空间的本质。2.2.1 专家分类法基于领域知识的语义归纳我们的专家团队汇集了化学、调香和嗅觉文化史的背景。我们从Pyrfume仓库的14个数据集中合并、去重后得到了617个独特的气味描述符。构建ET的过程是高度人工和迭代的初步清洗与归并首先我们处理了拼写变体如“fish”和“fishy”使用编辑距离Levenshtein distance并结合人工校验确保描述符的一致性。概念分层我们将617个描述符分为两大类基于来源的描述符直接描述气味来源或感知类别的词汇如“柠檬味”、“木质调”、“青草味”。这是我们分类法的核心共557个。嗅觉品质描述符描述情感、强度或三叉神经感觉的形容词如“愉悦的”、“新鲜的”、“刺鼻的”。这类共60个因其主观性强在本研究中暂不用于模型训练。建立家族与子类对557个基于来源的描述符我们根据语义和感知相似性将其归纳为16个“气味家族”并进一步细分为31个子类。例如“酒精”家族下包含“酸”和“醇”两个子类。这个过程依赖于专家的共识并参考了调香业中常用的“香调轮”Fragrance Wheel概念但做了更细致的扩展。注意构建专家分类法最大的挑战在于处理“跨界”描述符。例如“香草”通常被认为是“美食调”但它也带有一些“青绿感”。最终将其归入“美食调”是基于其主要感知属性和行业惯例。这类决策需要记录在案以便后续与数据驱动结果对比。2.2.2 数据驱动分类法让共现模式说话与ET的“自上而下”不同DT是纯粹“自下而上”地从数据中涌现出来的。我们使用的数据是合并后的分子数据集MMD其中包含146个在数据中出现频率较高的描述符。构建共现矩阵我们计算了这146个描述符在所有分子中的共现关系。如果两个描述符如“葡萄酒”和“果香”经常同时出在同一个分子的标签中它们的共现值就高。层次聚类我们使用聚合层次聚类算法以欧氏距离和Ward连接方法对这个146x146的共现矩阵进行聚类。Ward方法旨在最小化簇内方差能产生大小相对均匀的簇。确定簇数量为了与ET的16个类别进行公平比较我们人为指定聚类数量为16。但通过“肘部法则”分析基于数据本身的最佳簇数可能在43左右。这暗示了气味空间可能具有比我们预设的16类更精细的层次结构。DT的魅力在于它的客观性。图4论文中展示了一个共现矩阵的子集可以清晰看到“酒精”和“果香”各自形成了紧密的簇。像“杏”和“桃”这样的描述符高度共现这与我们的直觉完全一致。然而DT也会产生令人意外的组合这恰恰是它能挑战或补充专家知识的地方。2.3 模型与评估策略公平的竞技场为了评估分类法的效果我们设定了严谨的实验方案模型选择我们选择了三种可解释性相对较好的经典机器学习模型逻辑回归、随机森林和XGBoost。没有一味追求最复杂的深度学习模型是为了确保过程透明便于后续分析特征重要性。特征工程使用Modred工具包从分子的SMILES字符串计算了713个分子描述符。经过方差过滤、ANOVA F检验和递归特征消除最终筛选出23个最具判别力的特征。这些特征涵盖了拓扑、几何和电子性质。关键基准随机分组为了证明性能提升不是简单地源于输出空间从146降到16所带来的任务简化我们设计了一个“随机分组”实验。我们创建了1000个随机分类法每个分类法都将146个描述符随机分配到16个组中但保持每个组的大小与ET或DT相同。如果ET/DT的性能仅仅是因为分类本身而非有意义的分组那么它们的表现应该与这1000个随机分组的平均表现无显著差异。评估指标我们采用宏观平均的AUC-ROC、F1分数、精确率和召回率。宏观平均意味着对每个类别单独计算指标后再取平均这对处理我们数据中存在的类别不平衡问题如“果香”样本远多于“樟脑”样本更为公平。数据划分使用二阶迭代分层法划分训练集和测试集。这种方法在划分多标签数据时能确保每个划分中标签对的分布保持一致避免了因随机划分导致的某些标签组合在训练集中完全缺失的情况。这个设计形成了一个完整的验证闭环原始标签 - 专家分类 - 数据驱动分类 - 随机分类。任何有效的结论都必须建立在ET和DT显著且稳定地优于随机分组的基础之上。3. 数据制备与特征工程实战理论设计得再完美落地到代码和数据处理上才是见真章的时候。这一部分我将分享我们从原始数据到模型可用特征的完整流水线以及其中遇到的诸多“坑”。3.1 多源数据集的整合与清洗我们的数据来源于Pyrfume开源仓库这是一个嗅觉研究领域的宝贵资源。但“开源”不等于“开箱即用”。数据集筛选从约50个数据集中我们根据“人类被试”、“单一气味分子非混合物”、“描述符可靠性”三个标准筛选出7个核心数据集Arctander, aromaDB, FlavorDB, Flavornet, Goodscents, IFRA, Leffingwell。这些数据集在香料和食品工业界有较高声誉。数据合并与去重将7个数据集合并后我们得到了超过2万个分子记录。但这里存在大量的重复和冲突分子去重同一个分子可能以不同的名称通用名、商品名或不同的SMILES表示如手性差异、互变异构体出现在多个数据集中。我们使用标准的分子规范化工具如RDKit的CanonicalSMILES进行统一并基于InChIKey进行去重。描述符标准化不同数据集对相似气味的描述用词不同如“fruity” vs “fruit-like”。我们进行了简单的词形还原和拼写校正但对于“green”和“grassy”这类有细微差别的词我们选择保留交给后续的分类法来处理其高层级关系。构建最终数据集经过清洗和去重我们得到了包含6711个独特分子和146个独特气味描述符的“合并分子数据集”。每个分子关联1到17个不等的描述符标签。实操心得数据质量是生命线。Pyrfume中部分数据来自网络爬取噪声很大。我们花了大量时间进行人工抽查校验。例如发现有些分子被标记了完全矛盾的气味如同时标记“香草”和“鱼腥”这类极端案例需要结合化学知识判断是数据错误还是分子确实具有复杂气味谱对于明显错误的数据予以剔除。这个过程无法完全自动化必须依赖领域知识。3.2 分子描述符计算与筛选我们使用Modred从标准化后的SMILES计算描述符。最初得到了713个特征但其中很多是冗余的、共线的或者方差几乎为零。初步过滤首先移除方差为零或接近零的特征。这些特征对区分不同分子没有贡献。基于统计检验的筛选我们面对的是一个多标签问题但特征筛选需要针对每个标签进行。我们采用了“一对多”的策略对于146个原始描述符中的每一个将其视为一个二分类问题是该气味/不是该气味然后使用ANOVA F检验评估每个特征对于区分该气味的的重要性。最后为每个特征取其在所有146个任务中的最大F值作为其代表性分数并保留排名靠前的特征。递归特征消除在初步筛选后我们使用随机森林模型配合排列特征重要性Permutation Feature Importance进行递归特征消除。这个过程会反复训练模型每次移除最不重要的特征直到模型性能这里用交叉验证的F1分数开始下降。最终我们稳定在23个核心特征上。这23个特征是什么它们通常包括拓扑描述符如分子量、重原子数、可旋转键数、环的数量、各种连通性指数。电性描述符如部分电荷总和、最高占据分子轨道能级估算值。官能团计数如羟基、羧基、酯基、芳香环的数量。空间描述符如惯性矩、范德华表面积等。注意事项特征筛选过程必须在训练集上进行并用筛选出的特征子集应用于测试集以避免数据泄露。我们使用了一个封装了特征筛选的交叉验证流程来确保这一点。此外对于树模型如随机森林、XGBoost特征之间的线性相关性影响不大但对于逻辑回归模型严重的多重共线性会导致系数估计不稳定必要时需进行相关性分析或使用正则化。3.3 处理数据不平衡与多标签划分我们的数据存在明显的类别不平衡。“果香”、“花香”类样本多达上千而“樟脑”、“硫磺”类样本仅有两三百。在划分训练集和测试集时简单的随机划分可能导致小类样本在训练集中代表性不足。 我们采用了iterative-stratification这个专门用于多标签数据分层的Python库。它不仅能考虑每个标签的分布还能考虑标签对label pairs的分布。例如确保“果香”且“甜”的分子在训练集和测试集中都有一定比例这对于学习标签之间的相关性至关重要。4. 模型训练、结果分析与可解释性探索一切准备就绪接下来就是训练模型、评估结果并试理解模型到底“学”到了什么。4.1 性能对比分类法真的有用吗我们首先训练了一个XGBoost模型在原始的146个描述符上作为基线其宏观AUC为0.604。这个数字高于随机猜测0.5说明模型确实捕捉到了一些信号但离实用还有很大距离。接下来是重头戏。表2和图5论文中清晰地展示了结果专家分类法宏观AUC提升至0.684F1分数从0.268跃升至0.496。数据驱动分类法表现略优于专家分类法宏观AUC达到0.698F1为0.513。随机分组1000次随机分组的平均宏观AUC为0.648显著低于ET和DT但其标准差显示其性能分布在一个范围内。结论非常明确ET和DT带来的性能提升远非仅仅因为将输出类别从146个减少到16个。随机分组同样减少了类别数但其性能提升有限。ET和DT显著优于随机分组证明有意义的、反映描述符内在关系的分类结构能为模型提供强大的先验知识引导其学习更本质的“结构-气味”关联。有趣的是随机分组的平均性能0.648也明显高于基线0.604。这说明即使是无意义的随机分组由于将相关描述符偶然分到一起的概率不为零毕竟146个描述符随机分到16组同组内出现共现描述符的概率不低以及分类任务本身的简化也能带来一定增益。但这更反衬出ET/DT通过有意设计的、高信息量的分组所能带来的额外巨大收益。4.2 分类法概念对比专家与数据的共识与分歧表3论文中的对比极具启发性。我们将DT的16个簇A-P与ET的16个类别进行映射并请ChatGPT-4o为DT的每个簇生成一个类别名称。高度共识领域对于“美食调”、“花香”、“酒精”、“鲜味”、“果香”、“硫磺”、“木香”这些类别DT和ET表现出高度一致性。这说明在这些领域数据的共现模式与人类的语义感知高度吻合。例如DT的“果香”簇清晰地包含了各种具体水果的描述符。有趣的分歧领域DT的某些簇揭示了数据中隐藏的、可能被专家忽略的关联。簇E包含了“肉桂”、“丁香”、“辛辣”、“香草”但也混入了“香脂”、“药味”、“苯酚味”、“烟熏味”。专家可能倾向于将前四个归为“辛香”后四个归为“药香/烟熏”。但数据告诉我们这些气味在分子层面上经常共存。ChatGPT将其概括为“辛辣”忽略了后半部分。这个簇或许揭示了某些分子结构如含苯环、酚羟基的化合物同时能唤起“辛香”和“药感”的复杂感知。簇F包含“黄油”、“奶油”、“椰子”、“甜”等DT将其映射为“乳制品/奶油”而ET中类似的描述符可能分散在“美食调”和“脂肪味”中。数据驱动的方法将它们聚在一起提示了“脂肪族酯类”等结构可能同时产生这些气味。簇K包含“柑橘”、“清新”、“松木”、“薄荷”等DT映射为“清新”而ET的“柑橘”类更纯粹。数据表明“清新”感可能与萜烯类柑橘、松木和薄荷烷结构都有关系。深度解读DT与ET的分歧不是谁对谁错而是提供了两种视角。ET反映了人类基于语义和经验的、相对清晰的概念划分。DT则反映了分子气味描述在现实数据中的“纠缠”状态——一个分子往往被赋予多个在感知上可能不直接相关、但在化学结构上有关联的描述符。这种“纠缠”恰恰是“结构-气味”关系复杂性的体现。DT可以作为一种工具来检验和修正专家分类法使其更贴近数据的真实分布。4.3 模型可解释性什么样的结构闻起来像什么我们使用SHAP值分析来解读XGBoost模型。SHAP能告诉我们对于预测某个气味类别如“果香”哪些分子特征贡献最大。对于“果香”类SHAP分析显示较低的分子量、较高的氧原子数量可能与酯基、醛基有关、特定的拓扑极性表面积值以及某些氢键受体的存在是正向贡献最大的特征。这与化学常识相符许多水果香气分子是低分子量的酯类或醛类。对于“木香”类高碳原子数、复杂的环系统如倍半萜结构、较高的疏水性描述符显示出高SHAP值。这对应了檀香、雪松等木质香气分子通常具有较大、疏水的碳骨架。对于“硫磺”类最重要的特征是分子中硫原子的存在这是显然的但SHAP进一步揭示了硫原子的特定化学环境如硫醇-SH vs 硫醚-S-以及其他辅助特征如短碳链的影响。可解释性的价值它不仅仅是为了满足好奇心。通过SHAP分析我们可以验证化学直觉确认模型是否学到了我们已知的化学知识。发现新线索对于某些分类模型可能依赖一些意想不到的特征组合这可以启发化学家设计新的分子。诊断模型错误分析模型对错误预测样本的SHAP值可以判断是特征表征能力不足还是数据标签本身有问题。5. 挑战、局限与未来方向尽管结果令人鼓舞但我们必须清醒地认识到当前工作的局限性和未来的挑战。5.1 当前方法的局限性数据质量与一致性的根本制约我们工作的天花板是数据本身。Pyrfume数据集是众包的不同来源的描述符主观性强且缺乏强度信息。“果香”是一个二值标签但“强烈的草莓香”和“微弱的苹果香”都被标记为“果香”这丢失了大量信息。未来需要更标准化、定量化的感知数据。分类法的粒度与刚性无论是16类的ET还是DT都是一种粗粒度的简化。气味空间很可能是连续、多维的。强制划分为离散的、互斥的类别会损失信息。更理想的方式可能是学习一个连续的“气味嵌入”空间。分子表征的瓶颈我们使用的713个传统分子描述符可能无法充分捕捉与嗅觉受体结合相关的立体电子特性。图神经网络GNN等深度学习方法能提供更丰富的表征但其“黑箱”特性又不利于可解释性。如何结合GNN的表征能力和我们分类法的约束是一个值得探索的方向。浓度效应的缺失如论文中提到的葡萄柚硫醇其气味会随浓度从“果香”变为“硫磺味”。我们的模型目前无法处理这种浓度依赖的效应这是一个重要的生物学现实。5.2 实际应用中的注意事项如果你打算复现或在此基础上进行开发请牢记以下几点不要过度解读DT的簇数据驱动的簇反映了统计相关性不一定是因果性或感知相似性。需要结合化学知识进行解读。分类法是领域相关的我们构建的ET偏向于西方调香和食品科学的语境。对于描述东亚特有气味如“沉香”、“抹茶”可能需要扩展或构建新的分类体系。模型适用于“类药”或“类香”分子我们的数据集主要来源于香料和食品添加剂分子量大多在300道尔顿以下。对于非常大的分子或无机物模型的预测能力未知。5.3 未来可行的拓展方向层次化多任务学习不将分类法作为硬性的标签替换而是设计一个层次化模型。底层预测16个大类然后每个大类下再预测具体的描述符。这样既能利用分类法的约束又能保留细粒度信息。融合多模态信息结合分子的3D结构构象、与已知嗅觉受体的对接分数如果数据可得甚至文本描述从专利或文献中挖掘构建更全面的预测模型。主动学习与实验设计利用模型的不确定性指导化学家合成哪些最有信息量的新分子以快速验证和迭代模型形成“计算-合成-测试”的闭环。面向应用的细化针对特定应用场景如“设计一种具有海洋调的新型香水分子”可以在我们的通用模型上进行微调或构建专门的数据集和分类法。回顾整个项目最大的体会是在充满噪声和复杂性的感官科学领域机器学习的力量不在于替代人类专家而在于提供一个新的、数据驱动的视角来辅助人类理解。专家分类法代表了人类智慧的结晶数据驱动分类法则揭示了数据中隐藏的规律。当两者对话、碰撞甚至产生分歧时往往是最有洞见产生的时刻。我们开源所有的数据集、分类法和代码就是希望邀请社区一起加入这场对话共同绘制那份尚未完成的“气味地图”。这项工作只是一个起点通往理性气味设计之路依然漫长但每一步都让我们离“闻香识分子”的梦想更近了一些。