4.1.1 从预测到生成:问题形式的转变
第三章反复求解的是同一类问题:分子 x 已知,求标签 y——溶解度、毒性、活性。形式上,判别式模型(discriminative model)学习条件分布 p(y|x),全部本事是把已知分子映射到性质的估计。
任务一旦换成"设计一个新分子",这个形式就不够用:新分子没有现成的 x,要造的恰恰是 x 本身。生成式模型(generative model)学习的是 p(x)——分子本身长什么样的分布;带条件时则是 p(x|y),即给定"活性高"这类要求,分子应当长成什么样。
为什么"设计新分子"本质上是搜索或优化问题?1.1 节算过这笔账:类药化学空间(chemical space)约 1060 量级,企业库存约 106,覆盖率 10−54。枚举不可行;均匀随机采样与盲选等价,1.1 节的习题已经推演过。剩下的路只有一条:带先验的搜索——不去看整个空间,只把采样概率集中到"值得看"的区域。
这样的搜索需要两个部件:一个评价候选好坏的打分函数(scoring function),判别式模型恰好可以承担;一个产生下一步候选的机制,这就是生成模型扮演的角色。生成模型不枚举空间,它学习"从当前位置往哪里走"。
这个分工在 Gómez-Bombarelli 等人的连续表示里已有完整示范(Gómez-Bombarelli et al., 2018):把离散分子经编码器映入连续隐空间,在隐空间里沿性质梯度上升,再由解码器译回分子。判别器当裁判、生成器当选手的结构自此定型。此后无论自回归模型、流模型还是扩散模型,变的只是选手的训练方式,分工未变。
与虚拟筛选对照可以看清边界:筛选在既定化合物库内排序,库外的分子再好也无从谈起;生成离开库,好分子不必已经在库里。两者并不对立——生成候选仍要过预测模型与实验验证的筛。第三章的预测器在本章换了个位置:从主角变成裁判。
4.1.2 两大范式:分布学习与目标导向
方法五花八门,问题只有两个。整个分子生成领域可以放进一张两个范式的地图:一个学"像",一个学"好"。
分布学习(distribution learning):给定来自真实分布 pdata(x) 的训练集 D,学一个模型分布 pθ ≈ pdata,再从 pθ 采样出新的分子。评价标准是生成分布与真实分布的距离。
目标导向生成(goal-directed generation):给定打分函数 s(x)(性质、相似性、合成可行性或其组合),求高分分子——形式上是 argmaxx s(x) 或带约束的寻优。评价标准是任务达成度。
分布学习只要数据、不要打分。数据集是一批"好分子"的样本(ChEMBL、ZINC 之类),模型从中学"药物分子通常怎么连接、哪些片段组合常见",采样出来的分子便"像药"。它隐含一个假设:训练集的分布覆盖了值得去的区域。假设不成立时——训练集偏小、偏窄——模型学到的"像"也跟着偏。
它有两种典型失败:模式坍缩(mode collapse),只覆盖分布的少数高频模式,输出大量重复;记忆化(memorization),干脆复述训练集,"生成"退化成检索。
目标导向反其道:不要大数据,要一个可靠的打分。打分可以来自预测模型(QED、活性预测器)、相似性(与某个先导物的 Tanimoto 相似度)或合成可行性,寻优手段从遗传算法到强化学习不等。
它的失败方式更隐蔽:打分函数只覆盖"好"的一部分定义,优化器会专攻定义之外的盲区——把分数推高、把类药性推没了。这种失败叫奖励作弊(reward hacking),4.1.5 节给出它的著名标本。
分布学习
- 需要什么:一批好分子的样本,无需打分函数
- 学什么:p(x) 本身,即分子的连接规律
- 比什么:生成分布与参考分布的距离(FCD、KL 散度)
- 怕什么:模式坍缩、记忆化——只保证"像",不保证"有用"
- 代表:SMILES 语言模型、变分自编码器、GCPN 与 GraphAF 的预训练阶段
目标导向
- 需要什么:一个可靠(且足够全面)的打分函数
- 学什么:往高分区走的搜索策略
- 比什么:top-k 平均打分与任务达成度
- 怕什么:奖励作弊——只保证"分高",不保证"像药"
- 代表:遗传算法、条件生成、GCPN 与 GraphAF 的微调阶段
单看任何一端,失败模式都是结构性的:分布学习不知道你要什么,目标导向不知道分子该长什么样。于是有了混合路线:先在分子库上预训练,获得类药先验(drug-like prior)——这是分布学习侧;再以强化学习或微调把采样分布拉向高打分区,先验同时充当正则,把搜索摁在类药流形附近——这是目标导向侧。
GCPN(You et al., 2018)与 GraphAF(Shi et al., 2020)都走这条路,前者靠策略梯度(4.3、4.4 节),后者靠流模型(4.5、4.6 节)。本卷的两条主线由此而来,图 4.1-1 画出这张地图。
4.1.3 生成的载体:字符串、图与构象
生成模型总得在某种数学对象上工作,这个对象叫载体。载体不是表示层的细节,是模型族的分水岭——选了什么载体,几乎就选定了什么模型。
第一种载体是 SMILES 字符串。分子写成一行字符,语言模型的全套装备——循环网络、Transformer、变分自编码器——直接可用,这正是 2016 到 2018 年序列模型涌入分子生成的直接原因。代价在于:串合法不等于分子合法。2.2 节拆过 SMILES 的两层约束:语法层的环号配对、括号配对,化学层的价态上限。序列模型在字符空间逐个采样,两层约束都要碰运气式地满足,无效串的比例成了第一代生成器最刺眼的短板。
补救有两条:把语法写进解码器,或者换载体。后者通往本卷的主角。
第二种载体是分子图(molecular graph):节点是原子,边是化学键。分子本来就是图,SMILES 只是它的一种线性序列化——图是本体,串是投影。在图上生成,基本操作是"加一个原子""连一条键""停止",每一步之后价态可以显式检查、非法动作可以直接屏蔽:有效性从"事后统计"变成"结构保证"。GraphAF 的数字把这层意思说得很清楚:不带化学规则约束时约 68% 的输出有效,加上价态屏蔽后达到 100%(Shi et al., 2020)。本卷的主角 GCPN 与 GraphAF 都是图上的逐原子生成,4.2 节先把这个框架一般化。
第三种载体是三维构象:原子坐标连续,还带着旋转平移的对称性,模型必须是等变网络,场景也从"孤立的类药小分子"扩展到"蛋白口袋里的配体"。这条线留给 4.7 节一瞥。三个载体各配一族模型:序列配语言模型,图配图神经网络加强化学习或流,构象配等变网络与扩散。后文所有模型都能在这张三分表上找到座位。
三种载体可以互转:图与 SMILES 之间有双向映射(2.2 节讲过的读写互逆),构象丢掉坐标即退回图。生成与评估因此常跨载体进行——模型在图上工作,评估回到 SMILES 与 RDKit 的口径。载体选定的是模型族,不是信息的本体。
4.1.4 基础指标:有效性、唯一性、新颖性
预测模型输出数字,数字对数字,对账容易。生成模型输出一群分子,怎么把"这一群好不好"压缩成几个数?评估体系的全部困难从这个压缩开始。第一层压缩是三个比例,它们便宜、直观、可复现,是每份生成模型报告的门面。
有效性(validity)是双关的:一关语法,串能解析;一关化学,价态不超。两关都过,才算一个分子。解读这个指标要克制:有效性高未必说明模型学得好。
把价态规则硬编码进解码器,有效性可以到 100%,这与"会学习"无关;反过来,图模型天然带价态屏蔽,有效性接近满格属于结构性优势。指标只宜在同口径内比较。
唯一性(uniqueness)在合法分子内做去重,是模式坍缩的探测器。去重的前提是规范化:同一个分子写法千变万化(2.2.5 节的组合爆炸),必须先化成 canonical SMILES 再比对,否则不同写法会冒充不同分子,唯一性虚高。
报告中常见 unique@k 的写法——取前 k 个生成物算去重比例——便于不同采样预算的模型对齐。
新颖性(novelty)在去重分子上算"不在训练集的比例",是记忆化的探测器。
它最容易被忽视的属性是依赖分母:同一个生成集,训练集越大,novelty 天然越低。跨论文比较 novelty,必须先核对训练集口径,否则是在比两份不同的分母。
报告口径同样属于指标定义的一部分:生成规模(常见一万量级)、随机种子与重复次数应随数字一并给出。规模影响方差——小样本藏得住坍缩,FCD 对集合大小也敏感;跨模型比较要固定同一评估脚本、同一参考集与同一规模,数字之间才有可比性。图 4.1-2 把三个比例画成一条漏斗:每一级的分母都是上一级的存活者。三个指标各盯一种失败,也都各有一条作弊缝——4.1.6 节统一清算。
| 链条环节 | 取值 | 含义 |
|---|---|---|
| 生成串数 N | 模型输出的全部样本 | |
| validity V(%) | 语法与价态双重合法 | |
| uniqueness U(%) | canonical 化后去重 | |
| novelty Nov(%) | 剔除训练集内分子 | |
| 合法分子(N·V) | 第一级存活 | |
| 独立分子(N·V·U) | 第二级存活 | |
| 净新颖分子(N·V·U·Nov) | 链条终点,三比例连乘 |
链条上任何一个比例抬高都不难,难的是三级同时高:作弊总是发生在某一格,而漏斗把每级的损失摊开给评审看。这是下一节"多维报告"的直观版本。
习题 4.1-1
某模型生成 10 000 个 SMILES 串。RDKit 解析得 9 800 个合法分子;canonical 化去重后剩 8 330 个;与训练集比对,其中 7 664 个不在训练集中。
- 按式 (4.1-2) 求 validity、uniqueness、novelty。
- 说明净新颖分子数为什么等于 10 000 × V × U × Nov。
- 另一模型 validity = 100%、uniqueness = 20%、novelty = 100%,诊断它的失败模式。
(1) V = 9 800 / 10 000 = 98%;U = 8 330 / 9 800 = 85%;Nov = 7 664 / 8 330 = 92%。(2) 三个比例定义在同一条过滤链上:10 000 个串先按 V 过滤得合法分子,再按 U 去重得独立分子,最后按 Nov 剔除训练集内分子。链式相乘 10 000 × 0.98 × 0.85 × 0.92 = 7 663.6,四舍五入即 7 664——链条上每一环都以上一环的存活者为分母,比例相乘就是逐环存活率相乘。
(3) 有效且新颖、却大量重复,是典型的模式坍缩:模型塌缩到少数几个模式上反复采样。合法性由价态屏蔽保证,新颖性因模式恰好不在训练集而侥幸成立,唯独多样性暴露了问题——这正是"单一指标皆可作弊、必须联合报告"的一例。
4.1.5 分布距离与目标分数:FCD 与 penalized LogP
三个比例只看分子本身合法不合法、重复不重复,看不出"像不像真药"。补这个位的是分布距离:把两群分子各自嵌入到向量空间,比较两个嵌入分布的远近。FCD(Fréchet ChemNet distance)是其中事实上的标准(Preuer et al., 2018)。嵌入网络用 ChemNet——一个在大规模生物活性数据上训练过的网络——取其倒数第二层,每个分子得到一个 128 维向量。选它而不选随机网络,理由是嵌入空间应当承载化学与生物意义上的相似性,在其上量距离才有含义。两群分子各拟合一个高斯,然后计算 Fréchet 距离:
FCD 与 FID 同构。计算机视觉的 FID(Fréchet Inception Distance)用 Inception 网络嵌入图像、对两群嵌入各拟合高斯、计算同一公式;FCD 是它在化学界的镜像——换一个嵌入网络,公式一字不改。两者也继承同一个假设:嵌入分布近似高斯,均值与协方差足以概括分布。真实的 128 维嵌入并非高斯,两个三阶以上结构不同、二阶矩恰好相同的分布会被判成零距离——FCD 对这类差异失明。但作为单个标量的总括指标,它便宜、稳定、能同时察觉无效分子增多与模式丢弃等失败,至今仍是分布学习侧的第一指标。使用时记住它是二阶近似,而不是全分布的裁判。
操作层面还有两条细节常被忽略。参考集取训练集还是留出的外部集,含义不同:前者问"这批数据学没学会",后者问"像不像这个化学世界",报告应写明所用。其次是方差:FCD 是统计量,对集合大小与采样种子都敏感,规范的做法是多次采样取均值并报出波动——只算一次的 FCD,小数点后的位数没有意义。
目标导向侧的度量是打分本身。分子生成最常用的基准打分是 penalized LogP:在油水分配系数 LogP 上减去合成难度与环惩罚,编码"亲脂可以,但别难到合成不出来"的折衷。
SA 分数值得一句来历:Ertl 与 Schuffenhauer 基于约一百万个已合成分子的片段统计加上结构复杂度(环、螺环、立体中心)构造,直觉是"化学家做过的片段越多、结构越常规,越容易合成"(Ertl & Schuffenhauer, 2009)。它与 LogP 相减,惩罚化后的分数便同时含着"亲脂倾向"与"合成代价"两个方向的拉扯。作为快速基准,它便宜且可微,正因如此成了 GCPN、GraphAF 这一代模型微调时的默认目标。
penalized LogP 的作弊分子。把 S(x) 当优化目标,模型很快找到捷径:用十几个重复亚单元接成长链、或堆出稠合大环,LogP 一路走高,SA 的罚项远远追不上,最终分数进入训练集从未有过的区间。可这些分子分子量远超类药上限、五规则全线违反、没有药物化学家愿意合成——分数与"有用"彻底脱钩。这不是模型学坏了,是打分函数的边界窄:它只惩罚"难合成",不惩罚"不像药"。凡是单一、连续、可优化的打分,都会被以同样方式攻陷;应对之道不在换一个更花哨的打分,而在多维报告(4.1.6 节)与类药先验的约束(回到混合范式)。记住这个标本,读到任何"新模型刷出惩罚化 LogP 新高"的表格时,先问一句高分分子长什么样。
习题 4.1-2
为看清式 (4.1-3) 两项各自的含义,取二维嵌入做手算。参考集:μr = (0, 0),Σr = diag(1, 1);生成集:μg = (2, 0),Σg = diag(4, 1)。求 FCD,并指出均值项与迹项各贡献多少、各对应哪种失配。
参考解答均值项:‖μr − μg‖² = ‖(−2, 0)‖² = 4,对应生成分布整体向第一维平移。迹项:Σr + Σg = diag(5, 2);ΣrΣg = diag(4, 1),对角元素均为正数,平方根为 diag(2, 1);于是 tr(diag(5, 2) − 2·diag(2, 1)) = (5 − 4) + (2 − 2) = 1,对应第一维上散度失配(参考集方差 1、生成集方差 4,即生成分布在该维上更"胖")。FCD = 4 + 1 = 5。验证边界情形:若 μg = μr 且 Σg = Σr,两项同时为零——公式把"完全重合"映射为 0,距离语义自洽。二维 diag 情形不必解一般矩阵平方根,这正是选它做手算的原因。
4.1.6 基准套件:GuacaMol 与 MOSES
至此可以清算"单一指标皆可作弊"这句话:validity 可由硬编码撑满,uniqueness 可靠采样噪声凑数,novelty 可换小训练集抬高,FCD 可直接抄训练集——原样采样训练集,FCD 接近零、一看即"完美",novelty 同时为零,单看 FCD 却毫无察觉;目标分数的作弊分子上一节刚刚验过尸。
出路不是发明一个不可作弊的指标——那样的指标不存在——而是固定数据与协议,把一整面板指标同时报告,让作弊在另一格里露馅。两个基准套件把这条出路工程化。
GuacaMol 明确以两大范式为纲组织评测(Brown et al., 2019)。分布学习侧五项:validity、uniqueness、novelty、FCD、描述符分布的 KL 散度;目标导向侧二十项任务,涵盖重现已知药物、逼近指定分子的相似性、兼顾两个先导物的"中位分子"、多目标优化(MPO)、指定分子式的异构体、围绕给定骨架的衍生。每项有统一打分,模型在整张表上排名——这正是对"挑一项比"的否定。
MOSES 不设目标任务,把工夫全花在分布学习侧的面板上(Polykovskiy et al., 2020):约 190 万个经统一规则过滤的 ZINC 分子,固定的训练、测试划分,报告三基础指标加 FCD、SNN(与参考集最近邻相似度)、片段相似度、骨架相似度与内部多样性。
它的贡献在于把口径钉死:数据、划分、指标实现全在一起,跨论文的比较从"各说各话"变成同一把尺子。两个套件的对照见表 4.1-2。
| 维度 | GuacaMol | MOSES |
|---|---|---|
| 组织原则 | 以两大范式为纲,两侧各设评测 | 不设目标任务,专攻分布学习指标面板 |
| 分布学习侧 | 五项:validity、uniqueness、novelty、FCD、描述符 KL 散度 | 面板:三基础指标 + FCD、SNN、片段相似、骨架相似、内部多样性 |
| 目标导向侧 | 二十项任务:重现、相似、中位分子、MPO、异构体、骨架 | 无,打分留给使用者定义 |
| 数据与协议 | ChEMBL 参考集,统一打分与排名 | 约 190 万 ZINC 过滤分子,统一划分与指标实现 |
| 设计思想 | 整表排名,不给单项说话的机会 | 口径钉死,跨论文可比 |
最便宜的"模型":抄训练集。把训练集原样当作生成集提交评测:validity 100%、FCD 趋近 0、描述符 KL 散度近 0,分布侧指标全线飘绿;唯一露馅的是 novelty = 0。这个退化对手是每个新指标上岗前的第一道自检——它考不住任何单个分布距离,考得住的只有成套报告。GuacaMol 因此把 novelty 与 FCD 并列在分布学习侧;MOSES 干脆把"训练集重现"写进指标口径。指标的价值不在单项高分,而在互相拆台的能力。
基准套件自身也有边界:GuacaMol 的目标任务打分多为规则或简单模型,刷表的能力不等于真实药物发现的能力;MOSES 的分布指标度量"像 ZINC",而 ZINC 不是药物全集。套件钉住的是下限——排除作弊、保证可比;合成的可行性、生物学的有效性这些上限,仍要实验说了算。读基准排名,先分清这两个层面。
指标之间还存在张力:硬约束抬高 validity 会压缩探索,模型不敢离开已知的连接方式;追目标分又会牺牲多样性,输出全部塌向打分峰值。多样性与目标分的拉扯,在 GCPN 一类的训练里落成奖励设计的具体问题。把指标摆进四个象限(图 4.1-3),报告时四格齐上,张力才看得见、作弊才藏不住。
习题 4.1-3
论述:分布学习与目标导向两大范式为何不能互相替代?请从各自的目标函数、度量方式与失败模式出发,说明"用分布学习逼近目标导向"与"用目标导向逼近分布学习"各自的缺口,并解释混合范式为何是缝合而非并列。
参考解答目标函数不同:分布学习以 pθ ≈ pdata 为目标,训练信号是"分子本身";目标导向以 s(x) 的极值为目标,训练信号是"分数"。用分布学习逼近目标导向的缺口:参考分布里没有携带"当前任务要什么"的信息,除非把目标分子塞进训练集再重训——这等于把寻优问题换成反复重拟合,代价高且分数峰附近的分辨率完全取决于采样密度,目标恰在分布尾部时(高分分子本来就稀有)几乎必然漏掉。用目标导向逼近分布学习的缺口:寻优只问 argmax,不问"其余分子长什么样";没有参考集的对齐,无法回答"生成的群体像不像真实药物",且单打分优化必然滑向奖励作弊,类药性先验无处安放。两者度量的是不同对象(分布距离对达成度),一个替不了另一个。混合范式之所以是缝合:预训练阶段承担分布学习的全部目标(学先验),微调阶段承担目标导向的全部目标(追分数),先验以正则或初始策略的身份进入第二阶段,限制搜索不离开类药流形。
补一句常见的追问:能否用"目标分子当训练集的分布学习"替代目标导向?能,但代价是把寻优换成反复重拟合,且分数峰值附近的分辨率完全取决于采样密度——目标在分布尾部时几乎必然漏掉。缝合不是并列,更不是替换。
4.1.7 TorchDrug 的坐标:一条串起两范式的流水线
有了这张地图,TorchDrug 的位置一句话就能说清:它把两个范式串成一条流水线(Zhu et al., 2022)。分布学习侧,GCPN 与 GraphAF 都在 ZINC250k(约 25 万个类药分子)上预训练,模型先学会"药物分子通常怎么连接";目标导向侧,再在 penalized LogP、QED(quantitative estimate of drug-likeness) 等目标上微调,策略梯度或流采样把分布拉向高分区。预训练权重即类药先验,微调即受约束的寻优——图 4.1-1 的中间格,在 TorchDrug 里是一份可运行的代码。
评估不在 TorchDrug 之内:生成物的三指标、打分与对账都回到 RDKit 口径完成。TorchDrug 造分子,RDKit 当裁判——工具分工与本章的地图一致,评估权始终握在生成框架之外,这是保持裁决中立最朴素的办法。
版本口径照例交代:TorchDrug 冻结于 v0.2.1(约 2022 年),官方兼容上限为 Python 3.10 与 PyTorch 2.0,活跃后继是 Graphium 等项目。但流水线本身的思想不随版本老化——预训练学先验、微调达目标,至今仍是分子生成的主流做法。
把 GCPN 与 GraphAF 放进同一框架,还有教学法上的理由:两代模型、两套数学(强化学习与流)、同一条预训练—微调流水线、同一份数据与评估口径——变量控制到只剩"训练信号从何而来"。这是 1.3 节的实验维度观在教材里的实现:换一个模型、其余不动,差异才可归因。至于如何把这套思想迁往活跃生态,5.1 节展开。
从下一节起进入机理。生成即逐原子做决策:4.2 节把这个自回归框架一般化,4.3 节补齐策略梯度的数学,4.4 节组装 GCPN;随后 4.5 节转向流模型,4.6 节组装 GraphAF,4.7 节望向扩散与三维。评估体系先行的用意在此:模型未动,尺子先立,后文每个模型的优劣都有处对账。
关键术语
- 分布学习 (distribution learning)
- 生成范式之一:学习并复现训练集的分子分布,以分布距离度量优劣。
- 目标导向生成 (goal-directed generation)
- 生成范式之一:在打分函数与约束下寻优,以任务达成度度量优劣。
- 打分函数 (scoring function)
- 把分子映射为标量优劣的函数;目标导向生成的优化对象,判别式模型可充当。
- 有效性 (validity)
- 生成物可解析为合法分子的比例,语法与价态双重合法。
- 唯一性 (uniqueness)
- 合法分子经规范化去重后的比例;模式坍缩的探测器。
- 新颖性 (novelty)
- 去重分子不在训练集的比例;记忆化的探测器,数值依赖训练集口径。
- 模式坍缩 (mode collapse)
- 生成器只覆盖分布的少数模式、输出高度重复的失败状态。
- FCD (Fréchet ChemNet distance)
- 生成集与参考集在 ChemNet 嵌入上的 Fréchet 距离;分布学习侧的总括指标,与 FID 同构。
- penalized LogP
- LogP 减去合成难度与环惩罚的基准打分;分子生成最常用的优化目标,也是奖励作弊的著名标本。
- 合成可达性分数 (synthetic accessibility score)
- Ertl 与 Schuffenhauer 基于片段统计与结构复杂度的合成难易估计,1 至 10 分。
- 类药先验 (drug-like prior)
- 从分子库预训练获得的"药物分子通常长什么样"的知识;混合范式中充当正则。
参考文献与延伸阅读
- Gómez-Bombarelli R, Wei JN, Duvenaud D, Hernández-Lobato JM, Sánchez-Lengeling B, Sheberla D, Aguilera-Iparraguirre J, Hirzel TD, Adams RP, Aspuru-Guzik A. 2018. Automatic chemical design using a data-driven continuous representation of molecules. ACS Central Science 4(3):268–276.
- Brown N, Fiscato M, Segler MHS, Vaucher AC. 2019. GuacaMol: benchmarking models for de novo molecular design. Journal of Chemical Information and Modeling 59(3):1096–1108.
- Preuer K, Renz P, Unterthiner T, Hochreiter S, Klambauer G. 2018. Fréchet ChemNet distance: a metric for generative models for molecules in drug discovery. Journal of Chemical Information and Modeling 58(9):1736–1741.
- Polykovskiy D, Zhebrak A, Sanchez-Lengeling B, et al. 2020. Molecular sets (MOSES): a benchmarking platform for molecular generation models. Frontiers in Pharmacology 11:565644.
- Ertl P, Schuffenhauer A. 2009. Estimation of the synthetic accessibility score of drug-like molecules based on molecular complexity and fragment contributions. Journal of Cheminformatics 1:8.
- You J, Liu B, Ying R, Pande V, Leskovec J. 2018. Graph convolutional policy network for goal-directed molecular graph generation. Advances in Neural Information Processing Systems 31 (NeurIPS 2018).
- Shi C, Xu M, Zhu Z, Zhang W, Zhang M, Tang J. 2020. GraphAF: a flow-based autoregressive model for molecular graph generation. International Conference on Learning Representations (ICLR 2020).
- Zhu Z, Zhang Z, Xhonneux L-P, Tang J. 2022. TorchDrug: a powerful and flexible machine learning platform for drug discovery. arXiv:2202.08320.