第四章 · 4.4

4.4 GCPN:把生成当作图上的序贯决策

GCPN: Sequential Decisions on Graphs
本节把 4.2 节的自回归框架与 4.3 节的策略梯度焊成一个可运行的模型。中间分子图充当状态,锚点与键合的两阶段复合动作配上价约束屏蔽,构成完整的分子 MDP;图卷积策略网络以因子化分布逐步打分;奖励由终局性质、逐步合法性与判别器先验三路合成,PPO 与专家模仿按权重混合训练。末尾核对 penalized LogP 的结果与作弊分子,并与 VAE 路线对照。

4.4.1 从五元组到分子环境:MDP 的逐项实例化

图卷积策略网络(graph convolutional policy network),通称 GCPN,出自 You 等人 2018 年的工作(You et al., 2018)。4.3 节把序贯决策写成马尔可夫决策过程(Markov decision process)的五元组 (S, A, P, R, γ),却没有指明这五个符号里装什么。GCPN 的第一步工作,就是把它们逐一换成化学对象——每个分子对应一个 episode(回合),分子长成的过程即决策轨迹。

状态 st 是第 t 步的中间分子图 Gt:节点携带原子类型与当前价态,边携带键级。状态空间是"不超过 38 个原子的全部合法中间图",规模随原子数指数增长,表格法无处安放——策略只能取参数化网络。4.3 节末尾"函数逼近"一语,在此有了着落。

动作是两阶段的复合决策,先定生长点,再定键合,详见下面的定义框。转移 P 是确定性的:环境按动作改图,不加随机噪声;随机性全部来自策略自身的采样。环境的另一职责是化学检查——每一步用 RDKit 核价态,这条边贯穿掩蔽与奖励两处。终止有两种:策略发出终止动作,episode 结束并交出成品;或者步数触及上限,环境强制截断。episode 长度上限取 38 个原子,恰为 ZINC250k 的最大原子数——搜索空间的上界由数据口径决定,不另设。折扣因子取 γ = 0.9(TorchDrug 口径),远视而不近视:中间图的"好底子"要在若干步之后才兑现为终局分数。

定义

两阶段动作分解:一步生成动作 at 拆成两段。第一段在旧节点中选锚点(anchor node),并定新原子的类型(kekulize 后 9 类)——回答"在哪里生长、长什么原子"。第二段为新原子与旧节点逐个决定键型:不成键、单键、双键、三键,可连多条键,也可回连旧节点成环,直至本步收束。原论文把一步动作记作(首节点,次节点,键型,是否停止)的链接预测式组合,语义与此一致。另有一个独立的终止动作 stop,随时可选,选中即输出分子。

价约束动作掩码(action masking)的位置在 softmax 之前:锚点与键的 logits 先过价检查,非法项置 −∞,归一化后概率恰为零。4.2 节称这种做法为硬约束——合法性由动作空间的结构保证,而不是靠惩罚把概率慢慢压小。原论文给出另一变体:拒绝非法动作,状态原地不动,配小负奖励。两者化学上等价,训练动力学不同——掩蔽之下每步采样必合法,拒绝则把非法动作变成"空转步"。TorchDrug 的实现取掩蔽路线。

4.4.2 策略网络:图卷积编码与因子化的动作分布

策略网络只做一件事:给定图,给每个候选动作打分。

编码器是三层图卷积网络(Kipf & Welling, 2017),节点表示 64 维,逐层批归一化,求和聚合得到图表征。键级携带化学语义,实现上把不同键级当作不同关系,即关系图卷积——3.4 节从谱方法讲起的消息传递,3.5 节的 GraphConv 与读出函数,在这里各就各位。图卷积的参数与节点数无关,一套权重管所有尺寸的中间图,变长状态空间由此可处理。

节点表示之上接两个头。头一在旧节点集合上做 softmax,给出锚点分布 π(v|s):下一个原子长在哪里。头二以选中的锚点为条件,为新原子类型及其后的键合决策打分,给出 π(a|v,s)。两个头相乘,得一步复合动作的分布:

π((v, a) | s) = π(v | s) · π(a | v, s)
(4.4-1)v 为锚点,a 为条件于 v 的原子类型与键合决策。联合分布按"先选哪里、再放什么"的因果次序因子化;掩蔽分别作用于两个因子:剩余价不足的锚点在 π(v|s) 中归零,超价的键在 π(a|v,s) 中归零。
π(v | s) = exp(zv) / Σu ∈ 合法 exp(zu), zu ← −∞ 若 u 非法
(4.4-2)zu 为锚点头对节点 u 的打分(logits)。掩蔽发生在归一化之前,故非法动作从分布中消失而非被压低——这是 4.2 节硬约束在实现层的精确位置。

为什么因子化?算一笔账就清楚。联合动作是"锚点 × 新原子 × 与每个旧节点的键型",量级约 |V| × 9 × 4|V|;|V| = 10 时已近一亿行(习题 4.4-1)。对这样一张表做联合 softmax,打分器要么为每个组合单设参数,要么退回手工特征,两条路都随 |V| 爆炸。因子化把一步决策拆成两串小 softmax:锚点头与 |V| 同阶,键合头逐节点决策,打分成本只随图规模线性到平方级增长。附带的好处是语义分离——选哪里、放什么、怎么连,各自的非法动作各自掩蔽,出错时诊断也各归各。

GCPN 一步决策:中间图经 GCN 编码得节点表示,锚点头与原子键合头先后给出因子化分布,价约束掩蔽保证合法,动作改图或终止 当前分子图 Gt C C C N O 节点 = 原子(类型·价态) 边 = 键(单/双/三) GCN 编码器 GCN 层 1 GCN 层 2 GCN 层 3 消息传递(3.4/3.5) 键级 → 关系图卷积 节点表示 hv h1 h2 h3 h4 图表示(求和聚合) 参数与节点数无关 变长图共享一套权重 头一:锚点分布 π(v|s) 头二:原子与键 π(a|v,s) C N O F S 键型逐节点决策:无/单/双/三 价约束 mask(4.2 硬约束) softmax 前把非法 logits 置 −∞ 一步后的图 Gt+1 C C C C 新原子接入,每步必合法 终止动作 stop 输出成品,领终局奖励 episode ≤ 38 原子 ZINC250k 的最大原子数 超限即截断
图 4.4-1 GCPN 一步决策的全流程。中间分子图(左,虚线圈为候选锚点)经三层 GCN 编码为节点表示;锚点头在节点上做 softmax,原子与键合头以选中锚点为条件给出第二段分布,两因子相乘即式 (4.4-1)。虚线框标出掩蔽的位置——两个头的 logits 在 softmax 前过价约束检查。动作或改图(左下,新原子以章色标出),或走终止分支;episode 以 38 个原子为上限。
习题 4.4-1

设某步的中间图有 |V| = 10 个旧节点,新原子有 9 类候选,每个"新原子—旧节点"对的键决策含"不成键"在内共 4 种。(1) 第一段的"锚点 × 新原子类型"共多少组合?(2) 若把整步动作摊平成一张联合表(第一段结果 × 十个键决策的全体组合),共多少行?(3) 因子化之后,同一步要做的 softmax 规模变成多少?(4) 若把键决策从 4 种减为 3 种(无/单/双),联合表缩小多少倍?

参考解答

(1) 10 × 9 = 90 种。(2) 90 × 410 = 90 × 1 048 576 = 94 371 840 ≈ 9.4 × 107 行,尚未计终止动作——这正是不做联合 softmax 的理由。(3) 一次 90 类的 softmax(锚点 × 原子类型),随后至多 10 次各 4 类的顺序键决策;打分器的计算量只随 |V| 从线性到平方级增长,参数量与组合数无关。(4) 90 × 310 = 90 × 59 049 = 5 314 410 行,缩小 410 / 310 = (4/3)10 ≈ 17.8 倍。联合表的规模对键决策的类别数呈指数敏感,对锚点数只呈多项式敏感——因子化正是把指数项拆出联合表,摊到顺序决策里。

4.4.3 奖励设计:终局、合法性与类药先验的三路合成

奖励是 GCPN 里化学味最重的部件。先回答一个反面问题:只用终局奖励行不行?

不行,理由在 4.3 节已经埋好。策略梯度估计 ∇J = E[Σt ∇log π(at|st) · Gt] 里,稀疏奖励(sparse reward)意味着一个 episode 几十步共用同一个标量回报:分不清哪一步有功、哪一步有过——信用分配(credit assignment)失效;回报的方差随 episode 长度累积,梯度几乎不可用。GCPN 的对策是把奖励摊到时间轴上,三路合成。

第一路,终局性质分。episode 结束时对成品算目标分数——penalized LogP 或 QED,定义见 4.1.5 节,经线性缩放进区间 [−4, 4]。终局处另加化学过滤:MMFF94 力场优化后的角弯曲能超阈(空间位阻过大)、或含反应性官能团,直接扣进 [−2, 2]——给"分数高但合成不出来"的分子设一道门。这一路承载任务目标,也埋着 4.1.5 节警示框预告的隐患。

第二路,逐步合法性奖励。每步动作经 RDKit 价检查通过,立刻得一个小正奖励;违反则得小负。设计意图是把"合法"从惩罚项翻转成引导信号:合法的每一步马上有回报,奖励由稀疏变稠密(dense),信用分配的难题卸掉大半。掩蔽已保证采样必合法,这一路的真正角色是塑造梯度——在合法与非法动作之间持续制造回报差,把策略往"少碰壁"的区域推。

第三路,类药先验奖励。另训一个判别器(discriminator) Dφ——与策略网络同构的 GCN——以 ZINC 分子为真样本、以生成分子为假样本,做对抗训练(adversarial training);策略把 log Dφ(x) 当奖励领。机理一句话:判别器把"像不像训练集分布"折成一个标量,"像数据"从此可优化。步内与终局各给一次,缩放进 [−1, 1]。

rfinal(x) = α · rprop(x) + β · rfilter(x) + γ · log Dφ(x)
(4.4-3)终局奖励三项加权:性质分(penalized LogP 或 QED,[−4,4])、化学滤除罚(位阻与反应性,[−2,2])、判别器对抗项([−1,1])。原论文按各区间线性缩放再加权;α、β、γ 即权柄——4.4.5 节将看到,作弊分子的出现正是 α 压过其余两项的直接后果。
表 4.4-1GCPN 奖励的四个成分(You et al., 2018)
成分给出时机机理数值口径
性质分 rprop终局penalized LogP 或 QED,RDKit 计算;任务的真正目标线性缩放至 [−4, 4]
滤除罚 rfilter终局MMFF94 角弯曲能(空间位阻)与反应性官能团检查线性缩放至 [−2, 2]
对抗奖励 log Dφ步内与终局判别器对"像 ZINC"打分,类药先验的载体线性缩放至 [−1, 1]
合法性奖励每步价检查通过给小正、违反给小负;稀疏变稠密小正 / 小负(论文未给具体数值)
GCPN 奖励的时间结构:每步有合法性小奖励与步内对抗奖励,终局时刻叠加性质分、滤除罚与最终对抗奖励;纯终局奖励则全程零信号 若只有终局奖励 t = 1…T−1 全程零信号 方差大、信用分配失败(4.3) 三路合成的对策 逐步奖励把信号稠密化 终局奖励定最终方向 t=1 t=2 t=3 t=T−2 t=T−1 T 终止 逐步合法性:价检查通过 +Δ,违反 −δ 步内对抗奖励 ∝ log Dφ(xt) 终局奖励(T 时刻) 性质分 α · rprop 滤除罚 β · rfilter 对抗 γ · log Dφ(x) 线性缩放:[−4,4] [−2,2] · [−1,1] 课程的时间结构:合法性奖励先行、性质分殿后——先学"别犯规",再学"拿高分"。
图 4.4-2 三项奖励的时间线。上排绿色方块为逐步合法性奖励,中排灰色方块为步内对抗奖励,两者把信号摊到每一步——纯终局奖励(左上虚线框)的稀疏与高方差由此化解;T 时刻再叠加性质分、滤除罚与最终对抗奖励构成的终局奖励(右框,式 4.4-3)。奖励的稠密化与分程注入,等价于给策略一份"先易后难"的课程表。
警示

奖励设计的目标错位。强化学习优化的是给定的奖励,不是设计者心里的意图。三路合成缓解了稀疏性,却改变不了这样的事实:性质分只度量"这一维好",判别器只度量"像训练集",滤除罚只拦两种特定的坏——三张网之外的盲区一概不设防。策略一旦发现某条路径能让 α 项持续走高而无网可拦(长链、稠环、高卤代),它就会忠实地走下去。目标错位不是工程失误,是目标导向范式的结构性风险:任何有限项的奖励都只是"好分子"的有损压缩。判读任何高分结果,先核对打分函数的边界,再看分子本身——多维报告的意义正在于此。

4.4.4 训练目标:策略梯度与专家模仿的混合

奖励定了,训练目标是两支相加:

L(θ) = −JPPO(θ) + λ · Lim(θ)
(4.4-4)JPPO 为策略梯度目标(最大化故取负入损失),Lim 为对训练集轨迹的负对数似然。λ ≥ 0 权衡两支——先验与目标的跷跷板。

第一支是 4.3 节的策略梯度,具体取近端策略优化(proximal policy optimization, PPO)的截断目标(Schulman et al., 2017):

JPPO(θ) = Et[ min( ρt Ât, clip(ρt, 1−ε, 1+ε) Ât ) ], ρt = πθ(at|st) / πθ_old(at|st)
(4.4-5)ρt 为新旧策略的概率比,截断在 [1−ε, 1+ε];Ât 为优势估计(此处由价值网络基线给出,4.3.4 节的角色)。截断的效果:单次更新不把策略推离采样分布太远。分子生成的奖励噪声大、信号稀疏,这一层保险不可省——4.4.5 节将看到它与小学习率互为表里。

第二支是模仿学习(imitation learning):从 ZINC 分子上随机切出连通子图当作 st,把训练集分子补全该子图的真实动作当作标签,做极大似然——

Lim(θ) = − (1/T) Σt log πθ( atdata | stdata )
(4.4-6)标签来自训练分子自身:子图即状态,补全动作即答案。这一支不经过奖励,直接告诉策略"训练集的分子是怎么一步步搭起来的"。

λ 的语义由此清楚。λ 大,策略贴着数据分布走,性质分进展慢;λ 小,目标推进快,代价是离开类药流形——模式坍缩(mode collapse)与作弊的风险同步上升。原论文全程保留模仿项,不做过完预训练就丢弃的安排;TorchDrug 把 QED 微调的准则设为 PPO 与似然的组合,同一思想的工程化。回到 4.1 节的范式地图:预训练承担分布学习,微调承担目标导向,λ 把两个阶段连续化为一个加权——混合范式不只是"先训后调",还可以"边训边调"。

习题 4.4-2

某批次上测得 JPPO = 2.4,Lim = 1.6(NLL 口径)。对某个"延长碳链"的动作,策略梯度想让其对数几率上升,∂JPPO/∂z = +0.3;模仿项想让它下降,∂Lim/∂z = +0.1(z 为该动作的 logit)。(1) 分别算 λ = 2 与 λ = 0.5 时的总损失。(2) λ = 2 时该动作 logit 的净更新方向?λ = 4 时呢?(3) 由此说明 λ 的语义,并讨论训练早期与后期各宜取大还是取小。

参考解答

(1) λ = 2:L = −2.4 + 2 × 1.6 = 0.8;λ = 0.5:L = −2.4 + 0.5 × 1.6 = −1.6。两个 λ 下模仿项贡献分别为 3.2 与 0.8,可见 λ 直接决定先验项在总损失里的话语权。(2) 总损失对 z 的梯度为 −0.3 + λ × 0.1,梯度下降沿其负方向更新:λ = 2 时净梯度 −0.1,logit 上升(目标项胜出);λ = 4 时净梯度 +0.1,logit 下降(先验项胜出)。同一批数据,λ 跨过 0.3/0.1 = 3 这个门槛,动作的净走向即反转——λ 不是细节超参,而是方向的裁判。(3) λ 是"像数据"与"达目标"的权衡旋钮。训练早期策略尚未学会搭出合法分子,PPO 项的优势估计噪声大,宜取大 λ,先用模仿把策略放到类药流形上;后期策略已稳,逐步调小 λ,让目标分主导推进——这也正是 4.4.5 节两程训练的连续化版本。

4.4.5 课程与结果:先学分布,再追目标

训练按先易后难排课程(curriculum)。第一阶段纯模仿:在 ZINC250k 上学分布,目标只有似然——最容易,标签现成。第二阶段切入 PPO:先倚重逐步合法性与对抗奖励,性质分随后逐步加权——奖励结构本身构成时间上的课程(图 4.4-2)。两阶段的学习率也差着量级:TorchDrug 的口径里,预训练 10−3,微调 10−5,小两档。步幅小,策略才不会被稀疏而嘈杂的奖励推崩——与 PPO 截断的信任域思想一以贯之。

结果按论文口径核对两个目标。penalized LogP:GCPN 采样的最优三名为 7.98、7.85、7.80,训练集 ZINC 的最优三名只有 4.52、4.30、4.23——头部超出约 3.5,优化确实走出了训练分布。QED:GCPN 得 0.948,与训练集最优持平——QED 有上界且训练集已近饱和,本就没什么可优化。有效性 100%:这不是学出来的成绩,是掩蔽的结构性后果(4.4.1 节),报告时须注明口径,以免与"模型学得好"混同。

案例

7.98 的分子长什么样。看一眼 GCPN 的最优解,4.1.5 节警示框预告的标本就在眼前:重复亚单元接成的长链、高度卤代的脂肪族骨架(另一类解走稠合大环),分子量远超类药上限。机理不复杂——LogP 随链长与卤代程度稳定上涨,SA 罚项的增长追不上,性质分一路走高;判别器项想把搜索摁回类药流形,但 α 的权重压不过性质梯度。分数与"有用"就此脱钩。责任不在策略:它把给定的奖励优化得很好;在打分函数的边界太窄——它只惩罚"难合成",不惩罚"不像药、不是药"。这一案例与 4.1 节"单一指标皆可作弊"的清算互为印证:混合范式能收窄作弊空间(判别器与滤除罚确实在拦),收不死;终审必须回到多维评估与人眼核查。

习题 4.4-3

论述:为某激酶设计三目标奖励——活性预测器分数、QED、SA 的负值。请写出合理的加权方案,逐一分析三对目标之间的冲突,指出策略最可能的作弊路径,并给出对策。

参考解答

加权示例:r = α·p活性 + β·QED − γ·SA,α > β > γ(活性是任务核心,其余两维为护栏),三项各自归一到可比区间再加权。冲突一,活性对类药性:预测器常偏好大而疏水的结合口袋配体,分子量与 LogP 上推,QED 与五规则下坠——头两维天然拔河。冲突二,活性对合成可行性:复杂稠环与多取代基抬活性也抬 SA,第三维专拦这种"好看不好做"。冲突三,QED 对 SA:QED 奖励常见药物片段,通常不与 SA 冲突,但极端追求 QED 会把策略压进训练集高频区,新颖性受损——两个护栏彼此并不打架,却合谋扼杀探索。作弊路径:其一,预测器在训练数据之外的外推区可能给出虚高分数,策略专攻外推死角;其二,若 α 远大于 β、γ,重演 penalized LogP 的长链解。对策:活性预测器附不确定性估计,高不确定区打折;三目标联合报告而非单标量排名;保留掩蔽保证合法、判别器项守住类药流形;高分分子人工核验。核心认识与正文一致:任何加权标量都是"好分子"的有损压缩,护栏只能收窄盲区,不能消除盲区。

4.4.6 与 VAE 路线对照;TorchDrug 的实现位置

GCPN 与 Gómez-Bombarelli 等人的连续表示(Gómez-Bombarelli et al., 2018)是一对整齐的对照。VAE 路线先学分布:编码器把分子映入连续隐空间,解码器译回分子;优化在隐空间做——性质预测器架在隐变量上,沿近似梯度爬坡,爬到高点再解码。目标不可导,只好这样绕行。GCPN 把目标直接写进奖励:任何 RDKit 能算成标量的东西,无论可不可微,都能当目标;代价是把难题搬进了奖励设计。

GCPN:显式优化目标

  • 目标进奖励:可含不可微的规则与过滤器
  • 搜索由策略采样驱动,逐步可掩蔽,合法性 100%
  • 失败面:奖励作弊、模式坍缩到高分解
  • 训练不稳,须 PPO 截断与模仿项兜底

VAE:隐式学分布再采样

  • 目标在隐空间绕行:近似梯度爬坡,再解码
  • 似然全程可算,训练平稳、易监控
  • 失败面:优化点解码不回、串不合法、目标峰分辨率受隐空间平滑度限制
  • 合成可行性等硬约束无处安放

两条路线的失败模式恰好互补:一个败在"太听奖励的话",一个败在"够不着目标"。4.6 节的 GraphAF 会把两者的长处各取一半——流模型的可训似然,加上强化学习的目标微调。

TorchDrug 的实现位置一句话:编码器是关系图卷积(torchdrug.models 的 RGCN,承 3.5 节),训练任务封装在 torchdrug.tasks 的 GCPNGeneration——ZINC250k 预训练与 PPO 微调两程齐备。版本口径照旧:GCPN 代码在 TorchDrug 0.2.1 中仍可运行,需要 Python 3.10 与 PyTorch 2.0 以内的环境,工程细节 5.2 节交代。

GCPN 把 4.2 节的框架与 4.3 节的数学焊成了一个可运行的分子工厂,也把强化学习的脾气一并带来:奖励是新的主人,主人定错了,工人只负责把错事做到极致。4.5 节转向流模型——另一套把"逐步生成"变成可训似然的数学,变量替换与雅可比行列式将取代奖励,成为生成故事的下一任主角。


关键术语

图卷积策略网络 (graph convolutional policy network, GCPN)
以图卷积为策略网络、在分子图上做目标导向序贯生成的强化学习方法。
锚点 (anchor node)
两阶段动作的第一段所选的旧节点;新原子自此接入图。
动作掩码 (action masking)
softmax 前把非法动作的 logits 置 −∞;合法性由动作空间结构保证。
稀疏奖励 (sparse reward)
只在 episode 末尾给出的奖励;梯度方差大、信用分配难。
稠密奖励 (dense reward)
逐步给出的奖励;把信号摊到时间轴上,缓解稀疏性。
信用分配 (credit assignment)
把终局回报归因到各步动作的问题;稀疏奖励下失效。
判别器 (discriminator)
区分训练集分子与生成分子的网络;其输出折算为"像数据"的奖励。
对抗奖励 (adversarial reward)
以 log D(x) 计的奖励项,把类药先验变成可优化标量。
模仿学习 (imitation learning)
以训练集分子的补全动作为标签的极大似然;混合目标中的先验项。
近端策略优化 (proximal policy optimization, PPO)
把新旧策略概率比截断在信任域内的策略梯度算法;GCPN 的 RL 引擎。
课程学习 (curriculum learning)
先易后难的训练编排;GCPN 中体现为模仿先行、目标奖励逐步加权。

参考文献与延伸阅读

  1. 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):6410–6421.
  2. Kipf TN, Welling M. 2017. Semi-supervised classification with graph convolutional networks. International Conference on Learning Representations (ICLR 2017).
  3. Gómez-Bombarelli J, 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.
  4. Schulman J, Wolski F, Dhariwal P, Radford A, Klimov O. 2017. Proximal policy optimization algorithms. arXiv:1707.06347.
  5. Sutton RS, Barto AG. 2018. Reinforcement Learning: An Introduction. 2nd ed. Cambridge, MA: MIT Press.
  6. 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.
  7. Zhu Z, Zhang Z, Xhonneux L-P, Tang J. 2022. TorchDrug: a powerful and flexible machine learning platform for drug discovery. arXiv:2202.08320.