城市里有一间神秘的「分子作曲教室」,学生的任务不是写歌,而是写出一个个分子。分子不会说话,但它们有自己的「乐谱」——SMILES 字符串。一串看似随意的字符 CCO,记录的其实是乙醇这种分子的完整结构。教室里有三代乐手:逐字哼唱的 CharRNN、俯瞰总谱的 Transformer、只看前奏即兴接续的 GPT 风格乐手。他们都想学会「用字符写出合格分子」的本领。
写分子和写歌的难点一模一样:乐谱要符合语法(原子价、成环规则不能乱来),旋律要有新意(不能只会抄老歌),曲子要表达情感(分子要有活性)。于是这位老师教学生三件事:先认谱,再练基本功,最后上台即兴。整个过程就像一次「从抄写员到作曲家」的成长之旅,而我们要做的,就是看着这三代乐手如何用不同的思维方式,把一串字符变成改变世界的药物分子。
对 AI 从业者而言,SMILES 生成模型是「语言模型 × 科学发现」最鲜活的样板:你掌握的 Transformer、GPT 技能,可以直接迁移到药物设计这一高价值场景,打开 AI 生命科学的新职业通道。
可视化演示
演示CharRNN字符级序列生成、Transformer自注意力编码与GPT自回归生成的SMILES分子生成流程,交互切换查看三种架构差异。
本节配有交互动效(进入视口后自动加载,约 3KB)。
CharRNN字符级序列生成 逐字符生成SMILES隐状态逐步传递 LSTM/GRU捕获局部化学键依赖关系 h_t = LSTM(x_t, h_{t-1}) CharRNN结构简单但长序列依赖建模能力有限
SMILES 语言基础
在分子作曲教室里,老师发的第一份教材叫「分子乐谱入门」。每个音符对应一个字符:C 是碳原子、N 是氮原子、O 是氧原子,= 是双键,( 表示支链的开始。就像乐谱用音符记录旋律,SMILES(Simplified Molecular-Input Line-Entry System)用一行 ASCII 字符记录分子的完整连接方式。例如 CCO 这串“旋律”,记录的就是乙醇:两个碳原子手拉手,其中一个再牵一个氧原子。
分子乐谱不是乱写的。乐谱要合乐理——和弦不能随便堆;SMILES 也要合化学语法——碳必须有四个化学键、氮要有三个,环要配对闭合。写下一串字符后,解析器就像乐谱复核员,能自动判断这串符号是否对应一个真实合法的分子。若语法错了,如 CCCC 后面突然接一个 [O-] 而价键对不上,解析器就会直接判「非法乐谱」。
从语言模型的角度看,一串 SMILES 序列 S = c₁c₂…cₙ 的生成概率,可以分解成一个个字符的接力预测:
理解了这份分解式,就理解了所有生成模型的共同骨架——逐个预测字符。无论是 CharRNN 还是 GPT 风格模型,本质都在逼近这个条件概率 P(cₜ|历史)。而 SMILES 这份「分子乐谱」,正是最适合练习这套骨架的教材。
P(c₁))的概率,乘以「在看到第一个音符后写出第二个音符」的概率,再乘以「看到前两个音符后写出第三个」的概率……全部乘起来。- 乘积符号 \prod把从第 1 个到第 n 个字符的所有条件概率连乘起来,得到整条序列的概率。
- 条件概率 P(cₜ | 历史)竖线前的 cₜ 是“即将写下的字符”,竖线后的历史是“已经写出的所有字符”。
- 下标 t表示当前位置,模型每步只预测一个字符,并把它拼到历史末尾。
分子生成任务
学会了认谱,乐手们开始尝试作曲。最初的梦想是「随机创作」:给模型一把字符,它自由发挥,写出一堆分子。这就像爵士乐手随意弹几个音符,可能弹出悦耳旋律,也可能弹出噪音。随机生成解决的是「从零到有」的问题——为科学家提供海量候选分子,哪怕 99% 是废品,剩下 1% 也足以点亮灵感。
但药物研发要的不是随缘。科学家心里有一个“金耳朵”——比如一个预测分子与靶点结合活性的评分函数。这一下任务从「随便写」升级成「朝着高分写」。模型每写一个分子,就用评分函数打个分,高分就像老师的掌声,低分就像台下的嘘声,模型由此调整自己写字的策略,让下一次出手更接近“好旋律”。
这背后的数学语言非常简洁:假设模型参数为 θ,生成分子 S 的概率是 p_θ(S),评分函数给分子打 R(S) 分,那么模型的优化目标就是让「平均得分」最高:
有了这个目标,生成模型就不再是乱写一气的「灵感型选手」,而是能持续改进的「目标型选手」。随机生成拓宽边界,评分优化收敛方向——两者结合,正是现代分子生成的核心配方。
- 期望符号 \mathbb{E}对所有可能生成分子 S 的得分求平均,权重就是模型生成该分子的概率。
- 采样记号 S ~ p_θ分子 S 是从模型定义的分布中采样得到的,采样概率由模型参数 θ 决定。
- 评分函数 R(S)外部打分器,可以是性质预测器、活性预测器或化学规则过滤器,它把分子映射成一个实数分数。
CharRNN 逐字哼唱
教室里第一位成名乐手叫 CharRNN,他的表演方式很朴素:一边哼唱前一个音符,一边在「记忆小抄」上做标记,然后写下下一个音符。所谓记忆小抄,就是神经网络里的隐藏状态 h——一个装着「到目前为止这段旋律长什么样」的向量。每读入一个新字符,小抄就更新一次,旧旋律的精华被压缩保留。
CharRNN 的每个字符预测,本质是两步动作:第一步,用 LSTM 单元把小抄更新;第二步,把小抄通过一个全连接层变成所有候选字符的分数,再用 softmax 转换成概率分布。音乐教室里,这一步就像乐手看完小抄后,对七个音符各自报出一个“我想弹这个”的倾向值,然后按比例掷骰子。
把这两步写成数学就是:
CharRNN 的优点是轻巧、训练快,尤其擅长抓住短距离的字符规律——比如 C 后面常接 C、O 后面常接 (。但它有个天生的短板:记忆小抄容量有限,遇到很长的分子链,前面几十个字符的细节早已被“橡皮擦”擦模糊了。它适合写短旋律,却难驾驭结构复杂的长分子。
- 隐藏状态更新 h_t = LSTM(h_{t-1}, x_t)新记忆 = 旧记忆 + 新字符的信息,LSTM 用三个门(输入、遗忘、输出)决定哪些旧记忆该留、哪些新信息该记。
- 线性变换 W·h_t + b把记忆向量映射成每个候选字符的得分,W 和 b 是训练中学到的参数。
- softmax 归一化把一组分数压成总和为 1 的概率分布,分数越高,对应字符被抽中的概率越大。
Transformer 俯瞰总谱
第二位登场的乐手是 Transformer,他不像 CharRNN 那样逐字死记,而是出场就带着一整个总谱架——把乐谱上所有音符同时摊开,每个音符都能「看到」整页谱子里的所有其他音符,并判断谁跟自己最相关。这个“看”的动作,就是自注意力机制。
自注意力的计算像一次「全体乐手互相使眼色」:每个音符发出三个角色——查询 Q(我想找谁搭配)、键 K(我的特征标签)、值 V(我真正要提供的信息)。每个音符拿自己的 Q 去跟所有 K 比对,算出相关性权重,再用权重对所有 V 做加权求和。相关系数高的音符对,比如分子里配对成环的首尾原子,就会被模型牢牢绑定在一起。
相比 CharRNN 的记忆小抄,Transformer 的“全局视野”能轻松捕捉长距离依赖——比如苯环首尾成环的字符,可能隔着十几个位置也能互相关注。加上注意力可以并行计算(矩阵运算统一做,不用一步步走),训练速度大幅提升。不过代价是:没有自然的顺序感,必须靠位置编码告诉模型“第 3 个字符在 C 后面”,而且全局注意力的计算量随序列长度平方增长,长分子仍然昂贵。
- QKᵀ 相关性打分查询矩阵 Q 和键矩阵 K 做内积,算出每对字符之间的匹配程度。
- 除以 √d_k把分数缩放到合适范围,防止维度大时内积爆炸,让 softmax 的梯度不至于消失。
- softmax 归一权重把每行的相关性分数变成和为 1 的注意力权重,表示“我应该多关注谁”。
- 乘 V 融合信息用权重对值向量加权求和,得到融合了全局信息的新表示。
GPT 风格即兴
教室里的新晋明星是 GPT 风格乐手,他像爵士酒吧里的即兴钢琴师:只看着已经弹过的前奏,绝不偷看后面的谱子,逐音符往后接。这种「只看过去、不看未来」的约束,在 Transformer 里靠掩码自注意力实现——把未来的位置全部蒙住,让每个字符只能关注自己左侧的字符。这就是为什么它叫自回归生成:自己生成的内容,又成为自己的输入。
在分子领域,GPT 风格的乐手有一个绝活:上下文学习。给模型几个「分子问答示例」,比如「阿司匹林 → 它的水溶性类似物」,它就能模仿这种模式去写新分子,不需要重新训练。再加上一个轻量微调,模型就能快速适配新任务——就像乐手听两小节就能入戏,换一首歌也只需要热热身。
这种自回归生成的核心依然是我们熟悉的概率分解:
GPT 风格的魅力在于「通用」:同一个预训练模型,可以通过提示词玩出各种花样——生成、修复、转化 SMILES 都能干。但它的劣势也很直观:单向视野让它无法利用「未来信息」做全局优化,生成极长的分子链时可能偏离化学合理性,需要配合评分函数或约束解码来拉回正轨。
- 序列 x₁…xₙ把 SMILES 拆成 token 序列,每个 token 可以是单个字符或一个原子片段。
- 乘积分解整个分子出现的概率,等于每个 token 在自己历史条件下的概率相乘。
- 条件 P(xₜ | x\<t)下标 t 之前的全部 token 构成上下文,模型只利用这些「已知乐句」预测下一个音符。
评估与优化
无论哪代乐手,演出完毕都逃不过老师的评审。评审有三条硬标准:有效性、新颖性、多样性。有效性 = 生成的字符串能被分子解析器正确识别(是真正合法的分子乐谱);新颖性 = 生成的分子不在训练集的老歌单里;多样性 = 去重之后还剩多少首不同的曲目。三把尺子合起来,才能量出一位乐手的真实创作水平。
训练侧的优化也围绕这三把尺子转。生成一堆分子后,用评分函数过滤低分样本,把高分样本当“标准答案”再训练一遍模型,这种「生成—打分—再训练」的循环叫迭代式微调。更进阶的做法是用强化学习,把评分函数的分数当作奖励,直接优化前面第二节里的目标函数 J(θ)。强化学习的好处是模型会主动探索新写法,而不是死记高分分子的模板。
三把尺子的数学定义干净利落。令生成总数为 N_total,其中能被解析器验证合法的分子数为 N_valid,不在训练集中出现过的新分子数为 N_novel,去重后不重复的分子数为 N_unique:
一个优秀的分子生成模型,理想状态是三个指标都接近 1。现实中三者常打架:把模型训得太「规矩」,新颖性就掉下去;让模型太「自由」,有效性又崩盘。调平衡这一步,正是工程师的用武之地——调整温度参数控制随机性、增加语法约束解码、用强化学习引导目标方向,都是常用的优化手段。
- 有效性 Valid合法分子数占采样总分子数的比例,衡量乐手的基本功是否扎实。
- 新颖性 Novel训练集从未出现过的合法分子,占合法分子总数的比例,衡量乐手有没有新意。
- 多样性 Unique去重后分子数占合法分子数的比例,衡量乐手的曲风是否单调。
应用与挑战
有了这三代乐手,分子作曲教室终于开始接商演,舞台搬进了真实的药物发现和化学工业。第一个大舞台是从头药物设计:给定一个疾病靶点,乐手们创作成千上万个候选分子,配合活性预测器快速筛选,把原本需要数年的先导化合物发现周期压缩到数周。第二个舞台是逆合成分析——也就是文章所在的目录节点。给定一个目标产物 P,模型倒过来预测「用什么原料、什么反应条件能做出它」,把合成路线规划从查手册变成问模型。
逆合成本质是一个条件生成问题:在已知产物 P 的条件下,生成反应物集合 R。数学上可以写成条件概率:
但商演之路并不轻松。最大的挑战是数据稀疏:公开的分子反应数据库只有百万级规模,相比自然语言的万亿 token,乐手们的「排练曲目」少得可怜;而无效分子、反应不明确、标注错误又进一步污染乐谱。另一个挑战是化学约束的复杂性——乐谱的「乐理」远不止原子价,还有三维构象、手性、毒性等隐性规则,模型要学的东西远比一串文本更深。正因如此,SMILES 生成模型的前沿研究,正走向「生成 + 物理化学约束 + 专家经验」的融合路线。
- 条件概率竖线P 是已知条件(目标产物分子),模型生成的是 R(一组可能的反应物)。
- 联合概率 P(R, P)反应物与产物同时出现的概率,训练时由「已知反应式」数据库统计而来。
- 分母 P(P)目标产物本身出现的先验概率,做归一化,保证条件概率总和为 1。
AI 应用场景
先导化合物从头生成
阶段:药物发现早期的候选分子创作与虚拟筛选
解决的问题:传统药物发现依赖高通量筛选数百万个化合物,成本高、周期长;CharRNN 或 GPT 风格生成模型可以按需创作出全新的、具有类药性的分子结构,再用活性预测器批量打分,把筛选空间从「碰运气」变成「定向搜索」。
具体案例:某药企针对一款激酶靶点,用 GPT 风格模型预训练在 ChEMBL 分子库上,再以活性预测器为评分函数做强化学习微调。模型生成的 5000 个分子中,约 30% 通过了类药性过滤,其中 12 个分子的预测活性远超已知抑制剂,进入后续合成验证管线。
逆合成路线设计
阶段:化学合成路线的智能规划
解决的问题:经验丰富的化学家制定合成路线往往要数周,且严重依赖个人经验;Transformer 逆合成模型可以「倒着读乐谱」——输入目标产物 SMILES,输出多个可行的反应前体组合,相当于给化学家配了一位掌握数百万反应规则的虚拟助手。
具体案例:某化学制造公司使用基于 Transformer 的逆合成模型分析一款仿制药中间体,模型在 3 秒内给出 10 条候选路线,其中一条使用廉价原料的反应路线,成本比原工艺下降 40%,被采纳进入中试。
分子属性定向优化
阶段:候选分子的多目标优化
解决的问题:药物分子往往需要同时满足活性高、毒性低、溶解性好等多个指标,传统人工改构效率极低;CharRNN 以现有活性分子为种子做「逐字符变异」,配合多目标评分函数筛选,可实现分子的定向进化。
具体案例:某研究团队以一款水溶性差的候选药物为种子,用 CharRNN 生成 1000 个类似物,根据「活性 + 溶解度」联合评分挑选高分分子,最终获得 3 个溶解度提升 5 倍以上且活性保持的先导物。
Python 演示
import torchimport torch.nn as nnimport numpy as np # 分子乐谱库:一小批常见分子的 SMILESsmiles_lib = [ "CC(=O)Oc1ccccc1C(=O)O", # 阿司匹林 "CCO", # 乙醇 "c1ccccc1", # 苯 "CCN(CC)CC", # 三乙胺 "O=C(O)c1ccccc1" # 苯甲酸] # 1. 构建字符词典:把乐谱里的音符收集齐chars = sorted(set("".join(smiles_lib)))char2idx = {c: i for i, c in enumerate(chars)}idx2char = {i: c for i, c in enumerate(chars)}vocab_size = len(chars) # 2. 把字符串转成索引序列def encode(s): return [char2idx[c] for c in s] X_all = [encode(s) for s in smiles_lib] # 3. 定义 CharRNN 乐手:逐字符读入并预测下一步class CharRNN(nn.Module): def __init__(self, vocab_size, hidden_size=64): super().__init__() self.embed = nn.Embedding(vocab_size, hidden_size) self.rnn = nn.LSTM(hidden_size, hidden_size, batch_first=True) self.fc = nn.Linear(hidden_size, vocab_size) def forward(self, x, hidden=None): out = self.embed(x) out, hidden = self.rnn(out, hidden) logits = self.fc(out) return logits, hidden # 4. 训练:让乐手熟悉分子乐谱的语法model = CharRNN(vocab_size)loss_fn = nn.CrossEntropyLoss()opt = torch.optim.Adam(model.parameters(), lr=1e-2) for epoch in range(300): total_loss = 0 for x in X_all: t = torch.tensor([x], dtype=torch.long) logits, _ = model(t) loss = loss_fn(logits.view(-1, vocab_size), t.view(-1)) opt.zero_grad() loss.backward() opt.step() total_loss += loss.item() if epoch % 100 == 0: print(f"epoch {epoch}, loss={total_loss:.3f}") # 5. 生成:乐手从起点字符开始逐音符接龙def generate(model, start_char="C", length=25): model.eval() idx = char2idx[start_char] out = [start_char] hidden = None for _ in range(length): x = torch.tensor([[idx]], dtype=torch.long) logits, hidden = model(x, hidden) probs = torch.softmax(logits[0, 0], dim=0).detach().numpy() idx = np.random.choice(vocab_size, p=probs) out.append(idx2char[idx]) return "".join(out) print("生成分子:", generate(model))
chars = sorted(set("".join(smiles_lib)))收集所有出现过的字符,构成乐手的「音符表」,每个字符对应词典中的一个索引。self.rnn = nn.LSTM(hidden_size, hidden_size, batch_first=True)搭建「记忆小抄」:LSTM 把历史字符信息压缩进隐藏状态,供每一步预测使用。logits = self.fc(out)把记忆向量映射成每个候选字符的得分,得分越高代表乐手越倾向写这个音符。loss = loss_fn(logits.view(-1, vocab_size), t.view(-1))计算预测概率与真实序列之间的交叉熵损失,乐手通过降低损失来模仿真实乐谱。probs = torch.softmax(logits[0, 0], dim=0).detach().numpy()把得分转成概率分布,然后按概率随机抽样——这就是生成时「掷骰子」的瞬间。np.random.choice(vocab_size, p=probs)按概率分布抽一个字符索引,拼到已生成的序列末尾,完成一步自回归生成。
常见误区
误区SMILES 就是一行普通文本,模型只要能模仿字符串形状就够了,语法错误也没关系,反正看起来像分子。
正解SMILES 是分子的「乐谱」,有严格的化学语法——原子价必须饱和、环必须闭合、电荷要标注。一个字符错位,整个字符串就可能是非法分子。生成模型输出的字符串必须能被 SMILES 解析器(如 RDKit)成功解析成分子图,才算真正有效。评估「有效性」指标正是为了守住这条化学红线。
为何常见:从 NLP 迁移过来的开发者天然把 SMILES 当自然语言处理,忽视它底层对应着一个有物理化学实体的分子图结构,因此以为「字符串像就够了」。
误区只要生成模型输出的 SMILES 全部合法、语法完美,就说明模型已经掌握了药物设计,能直接产出候选药物。
正解语法合法只说明乐谱「读得通」,不说明「好听」。分子合法只保证结构可存在,不代表它有活性、低毒性、可合成。真实药物发现必须叠加评分函数(活性预测、类药性过滤、合成可行性评估)做目标导向优化,单纯的自回归生成只会输出一堆「合法但没用」的分子。
为何常见:初学者看到「有效性」指标常常误以为它就是终极目标,忽略了生成任务中「有效」只是入场券,「有价值」才是真正的比赛。
误区Transformer 和 GPT 模型这么强,CharRNN 作为老一代模型已经毫无用处,所有分子生成任务都应该用 Transformer。
正解在小规模分子数据集上,CharRNN 的参数量小、训练快、不易过拟合,效果常常不输大模型。分子数据不像自然语言那样海量,Transformer 的全局注意力优势在短序列上并不明显,反而可能因为数据不足而欠拟合。实践中许多工具仍然以 RNN 作为生成器,只是配合强化学习或约束解码使用。
为何常见:人们习惯用 NLP 领域的「大模型碾压小模型」直觉来套分子生成,忽略了数据规模和应用场景的根本差异。
误区GPT 风格模型能生成像样的 SMILES,说明它真正理解了化学原理、原子之间的成键规律。
正解模型学到的是字符序列的统计关联模式,它不知道碳是什么、不知道化学键的物理含义。它会写「合法分子」是因为训练数据里合法模式出现频率高,本质是概率拟合,不是化学推理。这就像乐手模仿大师的风格弹奏,却不理解音乐理论——能演奏得像,不等于懂得作曲原理。
为何常见:大语言模型的「流畅输出」让人产生智能错觉,人们容易把「输出符合语法」误认为「具备领域知识」,忽略了统计学习与符号推理之间的鸿沟。
面试题
Q1. SMILES 是一种什么样的分子表示方式?
- A.用三维坐标描述分子的空间结构
- B.用一行文本字符线性描述分子结构← 正确答案
- C.用分子量推算分子的元素组成
- D.用光谱信号还原分子的官能团
答案:B。SMILES(简化分子线性输入规范)用 ASCII 字符串记录原子的连接方式,像乐谱记录旋律一样把分子转成一行文本。A 是三维结构文件(如 PDB/SDF)的特征,C 是质谱分析思路,D 是波谱解析思路,均与 SMILES 的定义不符。
Q2. CharRNN 生成 SMILES 时,每一步输出的是什么?
- A.下一个字符的概率分布← 正确答案
- B.整个分子的 SMILES 字符串
- C.分子的三维构象坐标
- D.分子与靶点的结合能
答案:A。CharRNN 的每一步只预测「下一个字符」的概率分布,然后从中采样一个字符拼到历史末尾,循环多次才能得到完整分子。B 是循环结束后的最终产物而非单步输出,C 和 D 与字符级生成无直接关系。
Q3. Transformer 自注意力中,Q 和 K 的点积结果为什么要除以 √d_k?
- A.减少矩阵乘法的计算量
- B.避免点积过大导致 softmax 梯度消失← 正确答案
- C.把特征维度压缩到更小
- D.让模型支持更长的序列输入
答案:B。当维度 d_k 较大时,点积数值会迅速变大,使 softmax 进入饱和区、梯度趋近于零。除以 √d_k 相当于把分数拉回合理尺度,保证注意力权重分布适中。A 和 C 是对计算量和维度的误解,D 与序列长度无关。
Q4. GPT 风格的生成模型与普通 Transformer 编码器的主要差异是什么?
- A.使用单向注意力掩码,只看历史信息← 正确答案
- B.完全抛弃了注意力机制
- C.只能处理数值不能处理文本序列
- D.不需要位置编码也能建模顺序
答案:A。GPT 风格的模型使用掩码自注意力,把当前位置右侧的未来 token 全部屏蔽,保证每个位置只能看到左侧上下文,从而实现自回归生成。B 错在 GPT 依然依赖注意力,C 错在其本就是文本模型,D 错在所有 Transformer 都需要位置编码。
Q5. 目标导向分子生成中,评分函数的核心作用是什么?
- A.判断生成的字符串语法是否正确
- B.给生成分子打分并引导模型优化方向← 正确答案
- C.加快模型训练时的矩阵计算
- D.压缩训练数据的存储空间
答案:B。评分函数(如活性预测器)把生成分子映射成分数,模型通过强化学习或迭代微调逐步向高分方向更新参数。A 是有效性校验而非评分优化,C 和 D 与评分函数的功能无关。
Q6. 强化学习微调 SMILES 生成模型时,「策略」通常指什么?
- A.分子数据库的检索规则
- B.根据当前片段预测下一个字符的生成模型← 正确答案
- C.评分函数内部的参数
- D.训练时的数据增强方法
答案:B。在强化学习框架里,生成模型本身就是策略——它接收当前已生成的字符片段作为状态,输出下一个字符的概率分布作为动作选择。评分函数的分数作为奖励信号,用于优化这个策略。A 与生成无关,C 是被优化的对象而非策略本身,D 是训练技巧。
Q7. 关于 SMILES 字符串,下列说法正确的是?
- A.任意字符组合都能构成合法分子
- B.同一个分子只能有唯一的 SMILES 写法
- C.SMILES 必须遵循原子价等化学语法规则← 正确答案
- D.SMILES 中只能包含碳和氢两种元素
答案:C。SMILES 必须满足化学语法,比如碳四价、环对称闭合,非法字符串无法被解析器识别为分子。A 显然错误,B 是误解——同一分子可有多种等价写法(如芳香性与 Kekulé 式),D 错在 SMILES 支持几乎所有元素(用方括号标注,如 [Fe])。
Q8. 评估 SMILES 生成模型质量时,常用的分子指标包括哪些?
- A.有效性:合法 SMILES 占生成总数的比例← 正确答案
- B.新颖性:未出现在训练集中的分子占比← 正确答案
- C.多样性:去重后分子占合法分子的比例← 正确答案
- D.分子量:生成分子的平均质量大小
答案:ABC。有效性、新颖性、多样性是分子生成领域最经典的三元评价体系,分别考察「合不合规」「有没有新意」「是否千篇一律」。D 的分子量属于分子性质描述,不属于生成质量的评价指标。
Q9. 关于 CharRNN、Transformer、GPT 风格三种生成模型,下列说法正确的有哪些?
- A.CharRNN 用隐藏状态压缩历史信息← 正确答案
- B.Transformer 的自注意力可以并行计算← 正确答案
- C.GPT 风格模型采用掩码实现自回归生成← 正确答案
- D.三种模型都无法处理序列数据
答案:ABC。CharRNN 的 LSTM 隐藏状态就是「记忆小抄」,压缩已读序列信息;Transformer 的自注意力通过矩阵运算一次性处理整个序列,可并行;GPT 风格用掩码自注意力保证只能看历史,实现自回归。D 完全错误——三种模型都是为序列建模而生的。
Q10. SMILES 生成模型在真实药物发现流程中可能参与的环节包括哪些?
- A.候选分子库的虚拟筛选与扩充← 正确答案
- B.已知活性分子的改构与优化← 正确答案
- C.逆合成路线中的反应前体预测← 正确答案
- D.临床试验阶段的患者入组统计
答案:ABC。生成模型可在药物发现早期创作候选分子(A),可以以已知活性分子为种子做定向改构(B),可以在逆合成分析中生成目标产物的可能前体(C)。D 属于临床运营环节,与分子生成模型无关。