十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

E-SMILES:重塑深度学习中的SMILES分子表示策略

E-SMILES:重塑深度学习中的SMILES分子表示策略 开篇先说明一个现象现在做化学信息学和AI制药的人手里几乎都离不开SMILES。哪怕你用的是图神经网络、3D等变网络训练数据、下游任务对接、分子过滤和匹配最后还是得回到SMILES这一层。但越是用得多越会感觉到SMILES在深度学习场景下有点“别扭”字符串没有原子对齐信息、同一个分子能写出好几种等价的SMILES、模型学到的往往是“写法”而不是“结构”。这些问题直接影响了分子生成、属性预测甚至虚拟筛选的精度和稳定性。E-SMILES就是在这一堆痛点里冒出来的新思路它的核心不是简单改几个编码规则而是整个调整了“分子如何被表示为机器能处理的信息单元”。这篇内容我会从E-SMILES的设计动机、表示逻辑、实操转换、应用落地到踩坑排查完整拆一遍读完你至少能判断两件事你的任务适不适合切到E-SMILES以及切过去之后最需要盯住哪些细节。1. 内容整体设计与思路拆解1.1 为什么标准SMILES在深度学习场景下不够用做深度学习的人都知道SMILES本质上是一个序列化的分支结构。它用原子符号、键符号、括号和数字把二维分子结构转成一段ASCII字符串。这种表达对人和传统算法非常友好但对神经网络却不太友好。举个例子苯环在标准SMILES里可以写成c1ccccc1也可以写成c1cccc2c1cccc2共用边的写法甚至可以用不同的起始原子、不同的遍历路径表现成多种完全不一样但合法且同一分子的字符串。一个结构多个SMILES这在训练分子生成模型或做序列到序列的属性预测时等于给模型同时灌入了“同一答案的不同出题方式”模型会很自然地学到与化学无关的字符噪音。另外标准SMILES还存在一个比较隐蔽的问题它没有显式的原子对应关系。两个看起来完全不同的SMILES可能通过标准化以后能对齐到同一个分子但这个对齐过程需要外部工具去计算。如果把SMILES直接丢给一个BERT式的Transformer去预训练模型能学到上下文关联但学到的“上下文”和化学上的“官能团邻接关系”并不完全一致。E-SMILES这套方案的出现本质上是在保留SMILES低表达成本的同时把字符串里缺失的“结构一致性信息”补上。它并不否定SMILES而是给SMILES加了一层约束或增广策略让同一个分子在不同批次、不同写法之间依然有稳定的向量对应关系。用一句话概括E-SMILES在做的是把原来“人读了懂、机器读了懵”的SMILES转化成了“人和机器都能稳定读懂”的标准化序列形式。1.2 E-SMILES名字里的E到底指什么很多刚接触这个概念的人会误以为E-SMILES是一种新的线性表示法和SELFIES、DeepSMILES一样用一套新的语法来替代原版SMILES。实际上的定位不太一样。E-SMILES里这个“E”通常理解为Enhanced或者Extended也就是“增强的SMILES表达”它有两种主要落地形态。第一种形态是数据层面的SMILES增强也就是做数据增广。同一个分子利用RDKit枚举出多种不同的、等价的SMILES写法然后统一做标准化处理再喂给模型训练。这种做法的好处是模型不再过拟合某一种习惯写法鲁棒性会好很多。RDKit里的canonical_smiles可以做标准写法而枚举写法需要配合Chem.MolFromSmiles和Chem.MolToSmiles的组合以及基于等价类遍历或随机起始原子等策略。第二种形态是表示层面的E-SMILES嵌入增强简单说在做分子表示时把SMILES切词后的token序列进一步组装成带有位置编码、原子编号、父链关系的增强序列让Transformer在编码SMILES时能获取到更丰富的结构信息。常见的做法是在token嵌入之外再加入基于原子序数、手性、环信息的辅助特征向量。这就是E-SMILES被很多人称为“表示革命”的原因它不是换语法而是换编码策略。这两种形态不冲突在工程落地时经常一起用先增广再编码。后面我会重点讲第二种因为它在属性预测、分子生成和有条件生成任务中的收益更明显。1.3 E-SMILES要解决的具体问题清单从实际开发角度我会把E-SMILES要解决的问题列成一个清单方便你对照自己的场景做判断。等价表示歧义同一分子多种SMILES写法导致模型训练目标不稳定。序列长度敏感标准SMILES的环、分支表示会引入额外括号和数字序列变长注意力计算的效率变低。结构邻接缺失SMILES只表达了原子顺序没有直接表达哪些原子在空间或键级上相邻模型需要靠注意力隐式学习。生成有效性偏低用标准SMILES做生成模型时模型经常生成括号不配对、价态非法、原子不存在的字符串本质上是语法约束没有内嵌进表示。跨任务迁移差预训练和微调任务如果SMILES标准不统一迁移时需要对输入重新做标准化有时候还会对不上。E-SMILES通过标准化枚举和特征增强可以让上面这些问题在不同程度上缓解。尤其是生成有效性和等价歧义这两块效果最为显著。2. 核心细节解析与实操要点2.1 E-SMILES的原子级上下文生成策略要实现E-SMILES的完整流程首先要理解它的编码器是怎么工作的。我们以Transformer为基准模型来解释E-SMILES如何把一条SMILES字符串转成向量序列。第一步是分词。标准SMILES可以用正则表达式把原子如C、N、[nH]、Cl、键-、、#、括号、数字和特殊符号切成token序列。比如苯环c1ccccc1的长度很短但真实药物分子里一个五元环融合吲哚结构括号嵌套多切出来可能就是一两百个token。E-SMILES在这一步和标准流程没有差别差别在后面的特征拼接。第二步是构建辅助特征。E-SMILES会对每一个token对应的原子利用RDKit计算出它的原子序数、形式电荷、氢原子数、手性标记、是否在环内、所在环大小、邻接原子列表等特征。这些特征值归一化以后和token的embedding拼接在一起变成一个新的输入向量。这个操作等于给模型“开了一扇窗户”让它不用完全靠注意力去猜某个碳原子到底是芳香碳还是脂肪碳特征直接写明白了。第三步是位置编码增强。标准的Transformer位置编码用的是sin/cos函数但SMILES序列里位置距离二、三的token在化学上可能就是键连关系而括号跳跃之后的位置距离在化学上也可能关系密切。E-SMILES的做法是在绝对位置编码之外再叠加一个基于化学键距离的相对位置编码。具体计算方式从输入分子生成一个N×N的邻接矩阵做k步可达的矩阵乘法然后对每个token pair取它们在真实分子里的最短路径距离把这个距离做embedding加入注意力计算。这一步操作对图类任务的收益尤其大。2.2 写法枚举与标准化如何得到高质量E-SMILES数据E-SMILES训练数据的一个关键部分是“同一个分子的多种写法”也就是SMILES增广数据。这个环节看似简单实际操作中有几个很需要注意的细节。增广的基本原理是每次随机选择不同的原子作为起点随机选择遍历方向用RDKit生成新的SMILES。RDKit提供了一种方法先通过Chem.MolFromSmiles读入分子再设置random参数多次调用Chem.MolToSmiles即可得到不同的SMILES写法。这里的随机性来源主要是起始原子和遍历路径同一个分子一般可以枚举出几十到几百种不同写法。但直接枚举有两个坑。第一个坑是RDKit的随机SMILES并不总能覆盖所有等价格式因为它的遍历算法仍然基于特定的图遍历规则只是一部分是随机化的第二个坑是枚举出来的SMILES如果直接用于训练会造成数据集严重重复模型可能记住的是枚举写法列表而不是分子语义。所以实际操作中需要对增广结果做一个比例控制比如一个分子最多保留10-20种写法并在同一个batch里尽量保证没有同分子的不同写法出现。还有一个细节是标准化地址问题。不同SMILES写法之间可能有细微的差异比如芳香原子的写法c1ccccc1和c1cccc2c1cccc2虽然表示同一分子但标准化过程需要先转化为分子对象再做规范化处理。E-SMILES的标准化推荐分成三个层次语法标准化去掉多余空格、统一大小写、结构标准化用InChI或原子映射去重、表达标准化套用同一套枚举规则生成统一的SMILES。只做第一层是不够的很多项目在实际跑的时候都是在第二层出问题。2.3 模型输入的
返回列表