text: 9. 集合和图上的GFlowNets以及边缘化联合分布
  9.1 设​​置GFlowNets
  首先定义一个用于构建集合的动作空间，把GFlowNet视为一种生成随机集合S并估计该随机变量实现的概率、条件概率或边际概率等数量的手段。这些集合的元素取自更大的通用集合U。
  定义44. 集合GFlowNets的状态是集合U的子集s即s∈2^U 。无条件初始状态是空集s_{0} = {}且动作空间由把元素a ∈ U添加到当前集s的动作组成。状态s中唯一允许的动作是那些不在s中的a ∈ U \ s。如果环境是确定性的且从s_{t}允许动作a_{t}，那么环境转移概率为 P(s_{t}→s_{t+1} | s_{t}, a_{t}) = 1_{s_{t+1}} = s_{t} ∪ {a_{t}}，或等价地，转移函数为T(s, a) = s ∪ {a}。对于定义明确的GFlowNets 集合，必须给它一个终端奖励函数R，使得配分函数存在，即参见公式(106)~(108):
  (106) ~ (108);
  请记住，对于带有未完全训练的流量估计器Fˆ 的GFlowNet，不能保证Fˆ(s) = R(s)，因此我们能估计概率
  总而言之，经过训练以匹配给定能量函数(和派生奖励)的GFlowNet能用于表示该分布、从中采样、估计其下的集合的概率、估计分区函数、搜索对于最低能量集，在给定集的超集上采样条件分布，估计给定集和超集对的条件分布，计算子集的边际概率(即对超集的概率求和)并计算集合分布的熵或集合的超集的条件分布的熵。
  9.2. 图上的GFlowNet
  图是一种特殊的集合，其中有两种元素：节点和边，边是节点索引对。图也可能具有附加到节点和/或边的内容。因此能相应地专门化上一节中描述的设置操作。一些动作能插入一个节点，而其它动作能插入一条边。可限制允许的操作集，例如确保图形具有单个连接分量或确保非循环性。就像一般的集合一样，不能有一个动作添加一个已经在集合中的节点或边。由于图是集合，因此集合上的所有GFlowNet操作都能应用于图。
  9.3 对缺失变量的边缘化
  GFlowNets在集合上捕获概率分布的能力可以应用于对随机变量的联合分布建模，计算给定变量值子集的边际概率以及采样或计算任何条件(如变量子集)的概率给定另一个变量子集）。
  设X = (X_{1}, X_{2}, ..., X_{n})是一个复合随机变量，其中包含n个元素随机变量X_{i}, 1 ≤ i ≤ n，每个随机变量都有可能的值x_{i} ∈ X_{i}，不一定是数字。若给定一个能量函数或一个终端奖励函数R(x)对任何实例X = x进行评分，我们就能训练一种特定类型的 GFlowNet 集合，其集合元素是对(i,x_{i})。唯一允许的终止转换是当集合的大小正好为n且每个大小为n的集合s在下一个转换时终止。
  请注意GFlowNet如何以任何可能的顺序对X进行采样，如果P_{B}允许该顺序。给定一组现有的(i,x_{i})对(由GFlowNet状态s = {(i, x_{i})}表示)，我们能估计该变量子集的边际概率(对所有缺失的变量进行隐式求和，参见方程112)。我们能通过将状态设置为s并继续从 GFlowNet的策略中采样来采样其它变量。我们能通过限制该策略仅添加S'中的元素对其它变量的选定子集S'进行采样。此外，我们能在集合GFlowNets上做所有其它可行的事情如估计分区函数、按优先选择具有最大边际概率的早期子序列的顺序进行采样、搜索最可能的变量配置或估计分布的熵。
  9.4 模能量函数分解
  请看如何把图GFlowNet框架应用于一种特殊的图：具有可重用因子的因子图(Kschischang等人,2001)。这将产生图g上的分布P_{T}(g)，每个图都与一个能量函数值ε(g)(以及相关的奖励R(g))相关联。基于能量的模型很方便，因为它们能把联合概率分解为独立的部分(可能对应于独立的机制(Scholkopf等人,2012;Goyal等人,2019;Goyal和Bengio,2020)，每个对应一个因子的因子图。在该实例中，我们希望一组共享的因子F能在许多因子图g中重复使用。
  因子图将提供一组随机变量V的能量和概率。设图g = {(Fi,v_{i})}写成一组片段(F_{i},v_{i}),其中F_{i} ∈ F是具有能量函数项ε_{F} (i)的因子的索引，从可能的因子池F中选择，其中v_{i} = (v_{1},v_{2},...)是随机变量V_{j} ← v_{j}的实现列表，其中V_{j} ∈ V是因子图的一个节点。该列表定义连接变量V_{j}与ε_{F^i}的第j个参数的因子图的边。让我们用ε_{F^i}(v^i) 表示这个能量函数项ε_{F^i}的值应用于那些值v_{i}: 
  这种结构的有趣之处在于: 图GFlowNet现在能对图g进行采样，可能给定一些条件观察x：参见第4.3节关于如何与能量函数联合训练GFlowNets，包括仅观察到一些随机变量的情况。因此，给定一些观察到的变量(不一定总是相同的)，图GFlowNet能采样一个潜在因子图，其中包含并连接(使用能量函数项)观察到的和潜在的随机变量，其结构定义一个能量函数值联合观察变量和潜在变量。
  我们不仅能使用GFlowNet生成的对象的组合性质把总能量分解为对应于理想独立机制的可重用能量项，而且能把GFlowNet本身份解为与每个机制相关的模块。这个图GFlowNet的动作空间相当复杂，每个动作对应于一个潜在变量V_{k}的添加或一个图块(F^i,v^i)的添加。这样的动作是在GFlowNet状态的上下文中采取的，这是一个部分构造的图(由之前的动作产生)。 GFlowNet及其相关的能量函数参数因此被分解为模块。每个模块都知道如何计算能量函数ε_{F_{i}}及如何对新图块(以在图中插入相应的因子)(与其他模块竞争)进行评分和采样。
  考虑一些观察到的变量(V_{j}的子集及其值v_{j})，统称为x。考虑那些与x兼容的图 g(即对于观察变量，V_{j} = v_{j})并表示h尚未由x提供的g规范。我们能把在变量h视为对观察到的x的解释。请注意如何边际化所有可能的h，我们能计算x的自由能。第4.3的原则能用于训练这样一个基于能量的GFlowNet。在能量函数中表示先验图结构也是有意义的。例如，我们可能更喜欢稀疏因子(很少有参数)，并且可能会引入软约束或硬约束，这些约束与计算机编程和自然语言中常用的类型概念有关。图中的每个随机变量都能把一个类型作为其属性之一，并且每个因子能量函数参数都能期望一个类型。可添加能量函数项来构造这个先验，通过偏向图块(F_{i}, v^i = (v_{k})_{k})，其中变量V_{k}(其中v_{k}是一个实现)的类型与第k个参数的预期类型匹配菲。这与注意力机制(Bahdanau等人,2014 年;Vaswani等人,2017 年)很相似，我们能看出把查询(预期类型)与键(与元素关联的类型)进行匹配。