DFPN-E 论文阅读

0 论文信息

1.简介

搜索是人工智能核心技术之一,特别是在游戏和领域无关的规划中。从历史上看,新的搜索算法和现有算法的新组合带来了显著的性能提升。另一种实现提升方式是将一个领域的成功方法转移到另一个领域。本文结合了这两种策略。

证明编号搜索 (PNS) 和蒙特卡洛树搜索 (MCTS) 是两个在解决游戏/棋局和玩游戏方面被广泛研究的著名算法。它们通过解决跳棋游戏和在围棋游戏中达到超过人类的水平证明了自己的成功。

由于人工智能的最近进展,化学正在被重新考虑为人工智能研究领域。作者专注于化学合成规划,即规划化学反应路线来合成给定的有机分子。逆合成分析 (RA) 是一种从目标分子向通常更小的起始分子库反向进行的技术。这项任务可以类似地建模为解决游戏,并可以使用 PNS 和 MCTS 等搜索算法来解决。然而,由于尚未对 PNS 和 MCTS 进行直接性能比较,它们在 RA 中的搜索性能尚不清楚。

在 RA 中的搜索性能问题中,作者研究了 MCTS 和深度优先证明编号 (DFPN) 搜索,DFPN 是 PNS 的一个变体。PNS 变体旨在高效地识别解决游戏位置所需的最小工作量。游戏研究界普遍认为,这是 PNS 变体在解决困难游戏或棋局中受欢迎的一个原因,解决方案的长度超过 1500 步。然而,作者发现 DFPN 在 RA 领域表现不佳。作者发现 DFPN 性能显著下降是由于 RA 的不平衡搜索空间,它在大分支因子和小分支因子之间交替变化。为了解决这个问题,作者引入了 DFPN-E,这是一种将 DFPN 与启发式边缘初始化相结合的新算法。作者在从美国专利文献中提取的复杂目标分子数据集上,对 DFPN-E 和增强的 MCTS 变体进行了实证评估。作者证明了 DFPN-E 在搜索时间上优于这种增强的 MCTS,并具有竞争性的成功合成路线发现率。

图 1. 反应规则的例子。适应于本文数据集的酯化反应。

2 化学合成规划

化学合成规划的任务是创建一系列化学反应 (或反应途径),利用现有的 (例如商业可得的) 起始物料来合成目标有机分子。化学家进行逆合成分析 (retrosynthetic analysis, RA),这是一种系统性分析,递归地将目标分子分解成更简单的反应物分子,并期望这些反应是可行的,直到他们找到从目标到起始物料的分支逆向路径。自动化的逆合成分析已经是一个开放问题长达50年,例如之前的文献所述,因为它在化学科学上的重要性以及对制药和材料工业的直接应用。

RA 的输入包括目标分子、起始物料库和反应数据库。一个分子被表示为一个图,其中节点和链接分别对应原子和化学键。起始物料数据库包含可用起始分子的定义。反应数据库有一套反应规则,指定了必须存在的分子图子结构以允许反应的应用。反应规则可以手动构建或自动构建。由于 RA 是从目标分子开始向后探索空间,因此反应规则以逆向 (或逆合成) 方式应用。在检查一个反应规则是否可以应用于目标分子时,RA 会检查目标分子是否具有规则产品中指定的子结构。如果是这样,目标分子就会被分解成反应规则中指定的反应物分子。除非反应物分子 P 出现在起始物料数据库中,否则需要合成 P,递归地对 P 应用反应规则。一个分子可能有多个匹配的子结构,可以应用反应规则。在本文中,所有这些都被视为不同的移动。

图 1 展示了一个从醇和酐生成酯的反应规则。编号为1、5和7的碳原子被省略了。为了激活这个反应,醇和酐分子需要具有图中所示的子结构。通过修改指定的子结构并保持其余子结构不变,可以生成酯。作者的重点是阐明 MCTS 和 PNS 在 RA 的搜索空间中的行为,如文献 Construction of new medicines via game proof search 中建模的那样,其中每个反应规则只捕获产品和反应物之间的结构修饰。在实践中,反应规则需要考虑保护基团、副产物、温度和产率等约束。这超出了本文的范围。

虽然 RA 通常被建模为单代理搜索 (OR搜索) ,例如之前文献所述,但 Heifets 和 Jurisica 将 RA 建模为类似于解决双人游戏中棋局的问题,如国际象棋和围棋。他们的模型允许将问题有效地分解为一组可以用 AND/OR 搜索解决的独立子问题。在他们的棋局解决框架中,两名玩家交替进行移动。从第一名玩家的角度使用胜利和失败的术语。第一名玩家试图合成一个目标分子,而第二名玩家 (或对手) 试图阻止它。第一名玩家的位置对应于他们想要合成的分子。第一名玩家的移动是以逆向方式适用于该分子的反应规则。另一方面,对手的位置对应于由反应规则生成的一组前体分子。对手的移动是选择他们位置上的一个前体分子。在图 1 中,如果适用,这个规则的应用对应于第一名玩家的移动。对手有两个移动,一个选择醇,另一个选择酐。

起始物料数据库中的一个分子是获胜的终端位置,而没有适用反应规则的分子是失败的终端位置。在第一名玩家的位置上,如果至少有一个移动导致胜利,那么这个位置就是胜利的,因为存在一种合成分子的反应。如果所有合法的移动都导致失败,那么这个位置就是失败的 (即,没有合成它的路径)。在对手的位置上,如果所有移动 (呈现给第一名玩家的前体分子) 都导致胜利,那么这个位置就是胜利的 (所有前体都成功生成) 。否则,这个位置就是失败的。

RA 搜索空间的大小可能非常大。OR 节点的分支因子通常估计为 80,合成路线可能需要几十个合成步骤。此外,复杂分子可能需要超过 100 个步骤。就像在许多游戏中一样,RA 的搜索空间是循环的,因为一系列反应规则可能会创建重复的状态,例如氧化和还原,而解决方案可能不包含循环 (见下一节关于解决方案的定义) 。与许多游戏不同,后继状态生成是 RA 中的一个严重瓶颈,因为检查反应规则的适用性需要解决子图匹配问题,这是一个 NP 完全问题。例如,Kishimoto 等人讨论了之前文献中的实现,每秒钟最多生成几十个分子,与国际象棋等游戏中的每秒数百万位置相比,明显有严重的瓶颈。

3 背景技术介绍

3.1 AND/OR 搜索和证明数字搜索 (PNS) 变体

在文中的模型中,OR 节点和 AND 节点分别对应于第一名玩家和对手。在搜索树中的给定路径上,OR 节点和 AND 节点交替出现。"移动" 代表搜索树中的一条边 (转换)。一旦 AND/OR 搜索找到解决方案,根节点的值就被确定为胜利或失败。如果节点 n 的值被证明是胜利,那么节点 n 被称为被证明的,这也被称为证明。如果节点 n 的值被证明是失败,那么节点 n 被称为被反驳的。"被反驳的" 也用来表示失败的。如果节点 n 既没有被证明也没有被反驳,那么 n 的值是未知或未被证明的。

理论上,节点 r 的证明树 T 确保 r 被证明。T 具有以下特性 :

  1. 根节点 r 在 T 中,
  2. 对于 T 中的每个内部 OR 节点 n,至少有一个子节点在 T 中
  3. 对于 T 中的每个内部 AND 节点 n,n 的所有子节点都在 T 中
  4. T 中的所有终端节点的值都是胜利。

一个提供反驳的反驳树也类似地被定义。有效的 AND/OR 搜索旨在尽快找到证明树或反驳树。PNS 使用证明编号和反驳编号来估计找到节点 n 的证明或反驳的难度。节点 n 的证明编号 <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( n ) pn(n) </math>pn(n) 被定义为找到 n 的证明所需证明的最小叶子节点数。证明编号较小的节点更有希望找到证明。类似地,n 的反驳编号 <math xmlns="http://www.w3.org/1998/Math/MathML"> d n ( n ) dn(n) </math>dn(n) 是找到 n 的反驳所需反驳的最小叶子节点数。对于已证明的终端节点 n, <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( n ) = 0 pn(n) = 0 </math>pn(n)=0 且 <math xmlns="http://www.w3.org/1998/Math/MathML"> d n ( n ) = ∞ dn(n)=\infty </math>dn(n)=∞,对于已反驳的终端节点 n, <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( n ) = ∞ pn(n) =\infty </math>pn(n)=∞ 且 <math xmlns="http://www.w3.org/1998/Math/MathML"> d n ( n ) = 0 dn(n)=0 </math>dn(n)=0。在具有子节点集 <math xmlns="http://www.w3.org/1998/Math/MathML"> S ( n ) S(n) </math>S(n) 的内部节点 n 中,证明一个子节点会导致 OR 节点 n 的证明,而所有子节点都必须被证明才能证明 AND 节点 n (反驳情况相反)。因此, <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( n ) pn(n) </math>pn(n) 和 <math xmlns="http://www.w3.org/1998/Math/MathML"> d n ( n ) dn(n) </math>dn(n) 分别是 : 对于内部 OR 节点 n, <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( n ) = m i n s ∈ S ( n ) p n ( s ) pn(n)=min_{s\in S(n)}pn(s) </math>pn(n)=mins∈S(n)pn(s) 且 <math xmlns="http://www.w3.org/1998/Math/MathML"> d n ( n ) = ∑ s ∈ S ( n ) d n ( s ) dn(n)=\sum_{s\in S(n)}dn(s) </math>dn(n)=∑s∈S(n)dn(s)。对于内部 AND 节点 n, <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( n ) = ∑ s ∈ S ( n ) p n ( s ) pn(n) = \sum_{s\in S(n)} pn(s) </math>pn(n)=∑s∈S(n)pn(s) 且 <math xmlns="http://www.w3.org/1998/Math/MathML"> d n ( n ) = m i n s ∈ S ( n ) d n ( s ) dn(n) = min_{s\in S(n)} dn(s) </math>dn(n)=mins∈S(n)dn(s)。

图 2. PNS 搜索的案例

图2 (左) 展示了一个证明编号和反驳编号的例子,其中每个节点内部顶部和底部的数字分别表示证明编号和反驳编号。PNS 维护搜索树中每个节点的证明编号和反驳编号。从根节点开始直到到达叶子节点,PNS 通过在每个内部 OR 节点选择具有最小证明编号的子节点,在每个内部 AND 节点选择具有最小反驳编号的子节点(选择) ,以最佳优先方式遍历树。然后 PNS 扩展选定的叶子节点(扩展),并重新计算回到根节点路径上的节点的证明编号和反驳编号(回溯)。例如,在图2 (右) 中,PNS 选择路径 <math xmlns="http://www.w3.org/1998/Math/MathML"> A → C → F A\rightarrow C\rightarrow F </math>A→C→F,生成两个新的叶子节点 H 和 I,并在 F、C 和 A 更新证明编号和反驳编号。PNS 重复这些步骤,直到找到证明或反驳,或耗尽其时间/内存资源。

深度优先证明编号 (DFPN) 搜索是PNS的一个变体,它将最佳优先 PNS 重新定义为深度优先搜索。DFPN 已成功用于解决许多游戏中的困难游戏或棋局,例如先前有些工作通常涉及数百步的解决方案。DFPN 重新扩展的内部节点比最佳优先 PNS 少,并且操作内存有限。可用内存的大部分被分配给转换表 (TT)。TT 缓存已检查节点的证明编号和反驳编号。DFPN 引入了证明编号和反驳编号的阈值 : <math xmlns="http://www.w3.org/1998/Math/MathML"> t h p n ( n ) th_{pn}(n) </math>thpn(n) 和 <math xmlns="http://www.w3.org/1998/Math/MathML"> t h d n ( n ) th_{dn}(n) </math>thdn(n),它们在根节点处被设置为初始的大值。DFPN 通过使用 n 的子节点的证明编号和反驳编号来重新计算 <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( n ) pn(n) </math>pn(n) 和 <math xmlns="http://www.w3.org/1998/Math/MathML"> d n ( n ) dn(n) </math>dn(n)。当对于未证明的节点 n, <math xmlns="http://www.w3.org/1998/Math/MathML"> t h p n ( n ) ≤ p n ( n ) th_{pn}(n)\le pn(n) </math>thpn(n)≤pn(n) 或 <math xmlns="http://www.w3.org/1998/Math/MathML"> t h d n ( n ) ≤ d n ( n ) th_{dn}(n)\le dn(n) </math>thdn(n)≤dn(n) 成立时,DFPN 识别出有比 n 更有希望的节点,并推迟检查 n。否则,DFPN 选择具有最小(证)反驳编号的子节点 <math xmlns="http://www.w3.org/1998/Math/MathML"> s 1 s_1 </math>s1 进行进一步检查,具有以下阈值 : 对于 OR 节点 n, <math xmlns="http://www.w3.org/1998/Math/MathML"> t h p n ( s 1 ) = min ⁡ ( t h p n ( n ) , p n ( s 2 ) + 1 ) th_{pn}(s1)=\min(th_{pn}(n), pn(s_2) + 1) </math>thpn(s1)=min(thpn(n),pn(s2)+1) 且 <math xmlns="http://www.w3.org/1998/Math/MathML"> t h d n ( s 1 ) = t h d n ( n ) − d n ( n ) + d n ( s 1 ) th_{dn}(s1)=thdn(n)−dn(n)+dn(s_1) </math>thdn(s1)=thdn(n)−dn(n)+dn(s1)。对于 AND 节点 n, <math xmlns="http://www.w3.org/1998/Math/MathML"> t h p n ( s 1 ) = t h p n ( n ) − p n ( n ) + p n ( s 1 ) th_{pn}(s_1) = th_{pn}(n) − pn(n) + pn(s_1) </math>thpn(s1)=thpn(n)−pn(n)+pn(s1) 且 <math xmlns="http://www.w3.org/1998/Math/MathML"> t h d n ( s 1 ) = min ⁡ ( t h d n ( n ) , d n ( s 2 ) + 1 ) th_{dn}(s_1)=\min(th_{dn}(n), dn(s_2) + 1) </math>thdn(s1)=min(thdn(n),dn(s2)+1),其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> s 2 s_2 </math>s2 是 OR (AND) 节点 n 的子节点列表中具有第二小(证)反驳编号的子节点。DFPN 倾向于随着搜索的进展逐渐增加阈值。

基本的 PNS 将未证明的叶子 n 的 <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( n ) = d n ( n ) = 1 pn(n) = dn(n) = 1 </math>pn(n)=dn(n)=1。启发式初始化通过在未证明的叶子 n 处初始化 <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( n ) = h p n ( n ) pn(n) = h_{pn}(n) </math>pn(n)=hpn(n) 和 <math xmlns="http://www.w3.org/1998/Math/MathML"> d n ( n ) = h d n ( n ) dn(n) = h_{dn}(n) </math>dn(n)=hdn(n) 来增强包括 DFPN+ 在内的 PNS 变体,其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> h p n ( n ) h_{pn}(n) </math>hpn(n) 和 <math xmlns="http://www.w3.org/1998/Math/MathML"> h d n ( n ) h_{dn}(n) </math>hdn(n) 是证明编号和反驳编号的评估函数。现有的创建 <math xmlns="http://www.w3.org/1998/Math/MathML"> h p n ( n ) h_{pn}(n) </math>hpn(n) 和 <math xmlns="http://www.w3.org/1998/Math/MathML"> h d n ( n ) h_{dn}(n) </math>hdn(n) 的工作包括手动和机器学习方法。即使 DFPN 与基本 PNS 相比减少了内部节点的重新扩展,它仍然经常受到这种重新检查的高开销的影响,导致只检查了新搜索空间的小部分。为了缓解这个问题,已经开发了增加 <math xmlns="http://www.w3.org/1998/Math/MathML"> t h p n ( n ) th_{pn}(n) </math>thpn(n) 和 <math xmlns="http://www.w3.org/1998/Math/MathML"> t h p n ( n ) th_{pn}(n) </math>thpn(n) 的方法。

3.2 蒙特卡洛树搜索

蒙特卡洛树搜索 (MCTS) 基于一种最佳优先搜索,重复执行选择、扩展和回溯这三个步骤。除了 AlphaGo 之外,大多数 MCTS 算法执行蒙特卡洛采样来计算叶子节点的启发式值。在叶子节点进行采样,通过随机选择移动直到达到终止位置,来估计获胜的概率。为了更准确的评估,采样会选择非均匀概率的移动,考虑游戏板的配置。此外,MCTS 可以使用评估函数来评估叶子节点,无论是否进行采样或不采样。

MCTS 和 PNS 之间的一个概念性区别在于,MCTS 旨在平衡探索和利用之间的权衡。必须选择具有高回报 (例如,高胜率) 的移动,以有更高的机会赢得游戏 (利用)。另一方面,也必须选择具有低回报的移动,以克服由于对移动检查次数少而造成的不准确性 (探索)。目前已经有多种公式来实现正确的平衡。

设 n 为当前节点, <math xmlns="http://www.w3.org/1998/Math/MathML"> A ( n ) A(n) </math>A(n) 为 n 的合法移动集合, <math xmlns="http://www.w3.org/1998/Math/MathML"> Q ( n , a i ) Q(n, a_i) </math>Q(n,ai) 为移动 <math xmlns="http://www.w3.org/1998/Math/MathML"> a i a_i </math>ai 的累积奖励。为了在 RA 中选择最佳移动 <math xmlns="http://www.w3.org/1998/Math/MathML"> a b e s t a_{best} </math>abest,考虑 Segler 等人的公式 : <math xmlns="http://www.w3.org/1998/Math/MathML"> a best = arg ⁡ max ⁡ a i ∈ A ( n ) ( Q ( n , a i ) N ( n , a i ) + c P ( n , a i ) ∑ a ∈ A ( n ) N ( n , a ) 1 + N ( n , a i ) ) a_{\text {best }}=\underset{a_i \in A(n)}{\arg \max }\left(\frac{Q\left(n, a_i\right)}{N\left(n, a_i\right)}+c P\left(n, a_i\right) \frac{\sqrt{\sum_{a \in A(n)} N(n, a)}}{1+N\left(n, a_i\right)}\right) </math>abest =ai∈A(n)argmax(N(n,ai)Q(n,ai)+cP(n,ai)1+N(n,ai)∑a∈A(n)N(n,a) ),其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> N ( n , a i ) N(n,a_i) </math>N(n,ai) 是在 n 处对 <math xmlns="http://www.w3.org/1998/Math/MathML"> a i a_i </math>ai 的访问次数, <math xmlns="http://www.w3.org/1998/Math/MathML"> P ( n , a i ) P(n,a_i) </math>P(n,ai) 是在 n 处移动 <math xmlns="http://www.w3.org/1998/Math/MathML"> a i a_i </math>ai 的先验概率, <math xmlns="http://www.w3.org/1998/Math/MathML"> c c </math>c 是一个经验预设的常数。在 RA 中, <math xmlns="http://www.w3.org/1998/Math/MathML"> P ( n , a i ) P(n,a_i) </math>P(n,ai) 对应于使用反应规则 <math xmlns="http://www.w3.org/1998/Math/MathML"> a i a_i </math>ai 成功应用到分子 n 的一步逆合成的概率。训练一个神经网络来估计 <math xmlns="http://www.w3.org/1998/Math/MathML"> P ( n , a i ) P(n,a_i) </math>P(n,ai)。与 UCT 一样,上述公式的第一项和第二项考虑了利用和探索。然而,上述第二项比 UCT 更逐渐减少探索因子,并鼓励基于 <math xmlns="http://www.w3.org/1998/Math/MathML"> P ( s , a i ) P(s, a_i) </math>P(s,ai) 编码的特定领域知识的搜索空间探索。

设 <math xmlns="http://www.w3.org/1998/Math/MathML"> b i b_i </math>bi 是从根节点到节点 n 的搜索树中选择的移动序列, <math xmlns="http://www.w3.org/1998/Math/MathML"> L ( b i ) L(b_i) </math>L(bi) 是其长度, <math xmlns="http://www.w3.org/1998/Math/MathML"> n j n_j </math>nj 是在 <math xmlns="http://www.w3.org/1998/Math/MathML"> b i b_i </math>bi 上选择移动 <math xmlns="http://www.w3.org/1998/Math/MathML"> a j a_j </math>aj 的节点。Segler 等人定义 <math xmlns="http://www.w3.org/1998/Math/MathML"> Q ( n , a ) Q(n, a) </math>Q(n,a) 以偏好具有更高胜率以及通往胜利的更短路径的移动 : <math xmlns="http://www.w3.org/1998/Math/MathML"> Q ( n , a ) = ∑ i = 1 n I i ( n , a ) z i max ⁡ ( 0 , 1 − L ( b i ) − ∑ a j ∈ b i k P ( n j , a j ) L max ⁡ ) Q(n, a)=\sum_{i=1}^n I_i(n, a) z_i \max \left(0,1-\frac{L\left(b_i\right)-\sum_{a_j \in b_i} k P\left(n_j, a_j\right)}{L_{\max }}\right) </math>Q(n,a)=∑i=1nIi(n,a)zimax(0,1−LmaxL(bi)−∑aj∈bikP(nj,aj)),其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> I i ( n , a ) I_i(n, a) </math>Ii(n,a) 是一个函数,指示在第 i 次遍历时是否选择了节点 n 的移动 a, <math xmlns="http://www.w3.org/1998/Math/MathML"> k k </math>k 是阻尼常数 ( <math xmlns="http://www.w3.org/1998/Math/MathML"> 0 ≤ k ≤ 1 0\le k\le1 </math>0≤k≤1), <math xmlns="http://www.w3.org/1998/Math/MathML"> L m a x L_{max} </math>Lmax 是最大树深度, <math xmlns="http://www.w3.org/1998/Math/MathML"> z i z_i </math>zi 是根据采样是否导致胜利而获得的奖励。截止深度 <math xmlns="http://www.w3.org/1998/Math/MathML"> d r d_r </math>dr 停止了达到了非终止节点的采样。

4 启发式边缘初始化的证明数字搜索

启发式边缘初始化的证明编号搜索 (PNS) 在寻找根节点的证明时,倾向于选择那些具有较小证明编号的节点的路径。由于 OR 节点的证明编号是累加起来计算 AND 节点的证明编号的,PNS 更倾向于选择具有较少移动的 AND 节点。在 PNS 变体已经成功应用的游戏中,可用的移动数量在连续的游戏位置之间可能会发生显著变化。游戏中对手移动分布的这种特性使得 PNS 变体能够拥有各种证明编号的值,成功地识别搜索空间中具有前景的部分。

图 3. 支链搜索空间的证明数限制

然而,逆合成分析 (RA) 由于其搜索空间的不同特性,带来了新的挑战。在 RA 中,许多反应规则适用于一个分子,增加了 OR 节点的移动数量。然而,大多数反应规则只有一个前体。即使在最复杂的反应规则中,也只有少数几个反应物。换句话说,搜索空间是不平衡的,因为 OR 节点的分支因子很大,而 AND 节点的分支因子却非常小。在不平衡的搜索空间中,PNS 变体在识别更有可能导致证明的移动方面存在困难。例如,假设图 3 中所示的 AND 节点每个都只有一种移动。那么,即使 OR 节点有许多移动,对于图中的任何节点 n, <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( n ) = 1 pn(n)=1 </math>pn(n)=1,从而阻止 PNS 变体识别通往证明的最有可能的路径。在这个图中,DFPN 变成了没有深度限制的简单低效的深度优先搜索。

启发式边缘初始化可以将各种证明编号分配给叶子节点,并将 PNS 变体转变为在不平衡搜索空间中的贪婪搜索。当评估函数 <math xmlns="http://www.w3.org/1998/Math/MathML"> h p n ( n ) h_{pn}(n) </math>hpn(n) 为叶子节点分配不准确的证明编号时,这种方法会遭受性能下降。假设 <math xmlns="http://www.w3.org/1998/Math/MathML"> h p n ( n ) h_{pn}(n) </math>hpn(n) 评估了图 3 中所示的所有叶子节点,只有左边的叶子节点 l 有证明,并且对于任何其他叶子 m, <math xmlns="http://www.w3.org/1998/Math/MathML"> h p n ( l ) > h p n ( m ) h_{pn}(l)>h_{pn}(m) </math>hpn(l)>hpn(m)。那么,PNS 需要检查图中的所有节点,才会检查叶子 l。

文中的启发式边缘初始化深度优先证明编号搜索 (DFPN-E) 解决了在不平衡搜索空间中出现的限制。具有启发式初始化的 DFPN 尝试将可以成为证明树一部分的叶子节点的值累加起来。基于一组叶子节点计算出的更信息化的启发式值,具有启发式初始化的 DFPN 确定下一个要扩展的叶子。相比之下,DFPN-E 为从 OR 节点到 AND 节点的边缘分配了一个启发式成本,估计找到证明的难度。除了找到证明所需的叶子节点数量之外,DFPN-E 还试图估计包含在证明树中的边缘的总成本。

下一个要扩展的叶子节点是通过这个估计的努力来确定的。一旦 DFPN-E 证明了一个边缘可以导致证明,它就不需要任何努力来找到证明。因此,DFPN-E 将边缘成本更新为零。正式地,作者为内部 OR 节点 n 定义 <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( n ) pn(n) </math>pn(n) 如下 :
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> p n ( n ) = { 0 ( min ⁡ s ∈ S ( n ) p n ( s ) = 0 ) min ⁡ s ∈ S ( n ) ( h ( n , s ) + p n ( s ) ) ( otherwise ) p n(n)= \begin{cases}0 & \left(\min _{s \in S(n)} p n(s)=0\right) \\ \min _{s \in S(n)}(h(n, s)+p n(s)) & (\text {otherwise})\end{cases} </math>pn(n)={0mins∈S(n)(h(n,s)+pn(s))(mins∈S(n)pn(s)=0)(otherwise)

其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> h ( n , s ) h(n,s) </math>h(n,s) 是评估从节点 n 到其子节点 s 的边缘的评估函数。此外,对于任何 n 和 s,评估值都是非负的。计算 <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( n ) pn(n) </math>pn(n) 和 <math xmlns="http://www.w3.org/1998/Math/MathML"> d n ( n ) dn(n) </math>dn(n) 的其余情况以及子节点选择方案与前一节中描述的 PNS 相同。

Heifets 和 Jurisica 的 PNS 实现被认为是 <math xmlns="http://www.w3.org/1998/Math/MathML"> h ( n , s ) = 1 h(n,s)=1 </math>h(n,s)=1 对于任何 n 和 s 的特殊情况。在这种情况下,他们的 PNS 实现几乎与基于深度的迭代加深相同,只是每当扩展一个叶子时,它总是返回到根节点。虽然 PNS 在解决游戏时的优势是尽可能深入地检查搜索空间而没有任何深度限制,但他们的方法不再继承这个优势,失去了找到长路径的能力。

与 DFPN 一样,DFPN-E 使用两个阈值 <math xmlns="http://www.w3.org/1998/Math/MathML"> t h p n ( n ) th_{pn}(n) </math>thpn(n) 和 <math xmlns="http://www.w3.org/1998/Math/MathML"> t h d n ( n ) th_{dn}(n) </math>thdn(n) : 一个用于证明编号,另一个用于反驳编号,使 DFPN-E 能够在 <math xmlns="http://www.w3.org/1998/Math/MathML"> t h p n ( n ) > p n ( n ) ∧ t h d n ( n ) > d n ( n ) t h_{p n}(n)>p n(n) \wedge t h_{d n}(n)>dn(n) </math>thpn(n)>pn(n)∧thdn(n)>dn(n) 成立时进行搜索。设 <math xmlns="http://www.w3.org/1998/Math/MathML"> s b e s t s_{best} </math>sbest 为在 OR 节点 n 处选择进行检查的子节点。DFPN-E 的 <math xmlns="http://www.w3.org/1998/Math/MathML"> t h p n ( n ) th_{pn}(n) </math>thpn(n) 更新规则如下 :
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> t h p n ( s best ) = min ⁡ ( t h p n ( n ) , p n ( s 2 ) + δ ) − h ( n , s best ) t h_{p n}\left(s_{\text {best }}\right)=\min \left(t h_{p n}(n), p n\left(s_2\right)+\delta\right)-h\left(n, s_{\text {best }}\right) </math>thpn(sbest )=min(thpn(n),pn(s2)+δ)−h(n,sbest )

其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> s 2 s_2 </math>s2 是子节点, <math xmlns="http://www.w3.org/1998/Math/MathML"> p n ( s 2 ) pn(s_2) </math>pn(s2) 是在 n 的子节点列表中作者的修改后的第二小证明编号, <math xmlns="http://www.w3.org/1998/Math/MathML"> δ \delta </math>δ 是用于阈值控制的整数,以减少节点重新检查的开销。其余情况与原始 DFPN 相同。

文中的评估函数 <math xmlns="http://www.w3.org/1998/Math/MathML"> h ( n , s ) h(n, s) </math>h(n,s) 基于一步逆合成预测,结合了游戏中所谓的强迫移动背后的想法。首先,文中的方法将分子编码成一个指纹,这是一个固定的位向量。下一部分描述的神经网络接收指纹作为输入。神经网络在其输出层有 R 个节点,其中 R 是反应数据库中反应规则的数量。神经网络预测概率 <math xmlns="http://www.w3.org/1998/Math/MathML"> P ( n , a ) P(n, a) </math>P(n,a),即反应规则 <math xmlns="http://www.w3.org/1998/Math/MathML"> a a </math>a 以逆向方式应用于分子 n。然后,作者定义 <math xmlns="http://www.w3.org/1998/Math/MathML"> h ( n , s ) h(n, s) </math>h(n,s) 如下 :
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> h ( n , s ) = min ⁡ ( M p n , ⌊ − log ⁡ ( P ( n , a i ) + ϵ ) + 1 ⌋ ) h(n, s)=\min \left(M_{p n},\left\lfloor-\log \left(P\left(n, a_i\right)+\epsilon\right)+1\right\rfloor\right) </math>h(n,s)=min(Mpn,⌊−log(P(n,ai)+ϵ)+1⌋)

其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> M p n M_{pn} </math>Mpn 是一个常数, <math xmlns="http://www.w3.org/1998/Math/MathML"> a i a_i </math>ai 是生成 OR 节点 n 的子节点 s 的反应规则, <math xmlns="http://www.w3.org/1998/Math/MathML"> ϵ \epsilon </math>ϵ是一个小常数。

最后,设 <math xmlns="http://www.w3.org/1998/Math/MathML"> a i − 1 a_{i−1} </math>ai−1 是在当前搜索树中 <math xmlns="http://www.w3.org/1998/Math/MathML"> a i a_i </math>ai 之前的最后一个应用的反应规则。在上述 <math xmlns="http://www.w3.org/1998/Math/MathML"> h ( n , s ) h(n, s) </math>h(n,s) 的基础上,文中的方法将 <math xmlns="http://www.w3.org/1998/Math/MathML"> h ( n , s ) h(n, s) </math>h(n,s) 设为 0,如果满足 :

  1. <math xmlns="http://www.w3.org/1998/Math/MathML"> a i − 1 = a i a_{i−1} = a_i </math>ai−1=ai 成立
  2. s 中最大的原子数小于n中的。

作者定义分子的大小为原子的数量。后一种启发式规则背后的直觉是,更简单的前体分子通常可以用来合成产品,因为更简单的分子的可行性往往更容易验证。此外,应用相同的规则鼓励DFPN-E 继续简化分子结构。游戏中的强迫移动有类似的原理来指导搜索朝着更容易验证的位置前进。

5 实验

略。

6 感想

暂时无,可能和这篇偏搜索之前的知识有些不对应有一定关系,可能还需要继续阅读继续积累。最近刚开始做 AI4Science 的研究,希望能加快积累速度。

相关推荐
Elastic 中国社区官方博客2 小时前
使用 Elastic AI Assistant for Search 和 Azure OpenAI 实现从 0 到 60 的转变
大数据·人工智能·elasticsearch·microsoft·搜索引擎·ai·azure
江_小_白3 小时前
自动驾驶之激光雷达
人工智能·机器学习·自动驾驶
yusaisai大鱼4 小时前
TensorFlow如何调用GPU?
人工智能·tensorflow
珠海新立电子科技有限公司6 小时前
FPC柔性线路板与智能生活的融合
人工智能·生活·制造
IT古董7 小时前
【机器学习】机器学习中用到的高等数学知识-8. 图论 (Graph Theory)
人工智能·机器学习·图论
曼城周杰伦7 小时前
自然语言处理:第六十三章 阿里Qwen2 & 2.5系列
人工智能·阿里云·语言模型·自然语言处理·chatgpt·nlp·gpt-3
余炜yw8 小时前
【LSTM实战】跨越千年,赋诗成文:用LSTM重现唐诗的韵律与情感
人工智能·rnn·深度学习
莫叫石榴姐8 小时前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
如若1238 小时前
利用 `OpenCV` 和 `Matplotlib` 库进行图像读取、颜色空间转换、掩膜创建、颜色替换
人工智能·opencv·matplotlib
YRr YRr8 小时前
深度学习:神经网络中的损失函数的使用
人工智能·深度学习·神经网络