What is the Relationship between Tensor Factorizationsand Circuits (and How Can We Exploit it)?
张量分解和电路之间有什么关系(以及我们如何利用它)?
https://arxiv.org/pdf/2409.07953
https://github.com/april-tools/uni-circ-le


摘要
本文在电路表示(circuit representations)与张量分解(tensor factorizations)这两个看似不同但本质上密切相关的领域之间建立了严格的联系。通过连接这两个领域,我们指出了能够使两个社区都受益的一系列机会。
我们的工作在电路语言(circuit language)中推广了流行的张量分解方法,并在一个统一的广义分层分解框架下整合了多种电路学习算法。
具体而言,我们引入了一种模块化的“乐高积木”方法来构建张量化(tensorized)的电路架构。这种方法使我们能够系统地构造和探索各种电路与张量分解模型,同时保持其可处理性。
这一联系不仅澄清了现有模型之间的相似性与差异,还为构建和优化新的电路/张量分解架构提供了一个全面的流程。
我们通过广泛的实证评估展示了该框架的有效性,并强调了张量分解在概率建模中的新研究机会。
1 引言
本文旨在连接两个看似遥远、实则紧密相关的领域:电路表示(circuit representations)与张量分解(tensor factorizations)。具体来说,我们在两种表示之间建立了正式联系,并展示了后者如何为前者的学习算法提供统一视角,同时也为两个研究社区带来新的研究机会。
张量是矩阵的多维推广,广泛用于表示高维数据(Kroonenberg, 2007)。张量分解是一种数学上已被深入理解的方法,它通过低维张量上的简单操作来紧凑地表示高维张量(Kolda, 2006)。
它们在机器学习和人工智能中被广泛应用,例如在计算机视觉(Vasilescu & Terzopoulos, 2002;Savas & Eldén, 2007;Panagakis 等人, 2021)、图分析(Kolda 等人, 2005)、计算神经科学(Vos 等人, 2007;Tresp 等人, 2021)、神经符号 AI(Nickel 等人, 2015;Balazevic 等人, 2019;Gema 等人, 2023;Loconte 等人, 2023)、语言建模(Ma 等人, 2019;Hu 等人, 2022;Xu 等人, 2023),以及作为编码概率分布的方式(Jaini 等人, 2018b;Novikov 等人, 2021;Amiridi 等人, 2022;Hood & Schein, 2024)。虽然通常以浅层分解的形式定义,但张量分解也可以表达为分层结构(Grasedyck, 2010),有时用张量网络(Orús, 2013;Biamonte & Bergholm, 2017;Glasser 等人, 2019)的图形形式表示。
另一方面,电路表示(Darwiche & Marquis, 2002;Choi 等人, 2020;Vergari 等人, 2021)是在逻辑推理和概率建模背景下提出的结构化计算图(Darwiche, 2003;Poon & Domingos, 2011;Kisa 等人, 2014)。其中,概率电路(PCs)(Vergari 等人, 2019b;Choi 等人, 2020)是能编码可处理概率分布的电路。它们支持多种需要精确高效推理的应用,如无损压缩(Liu 等人, 2022)、生物医学生成建模(Dang 等人, 2022b)、可靠的神经符号 AI(Ahmed 等人, 2022;Loconte 等人, 2023)以及受约束的文本生成(Zhang 等人, 2023)。
过去已提出许多从数据中学习 PC 的算法(参见 Sidheekh & Natarajan (2024) 的综述),其中一种范式逐渐显现:构建过参数化的电路,包含数百万甚至数十亿参数(Liu 等人, 2023a;Gala 等人, 2024a),并通过梯度上升、期望最大化(EM)或正则化方法训练这些参数(Peharz 等人, 2016;2020c;Dang 等人, 2022a)。
层次化张量分解和概率电路都曾被作为概率图模型的替代表示(Song 等人, 2013;Robeva & Seigal, 2017;Glasser 等人, 2020;Bonnevie & Schmidt, 2021),一些工作也暗示了某些电路与张量分解之间的联系(Jaini 等人, 2018b;Glasser 等人, 2019)。然而,它们在应用方式上有所不同:张量分解通常用于存在一个待逼近的真实张量或可以表述为降维问题(即张量草图)的任务,而概率电路则是以类似于生成模型的方式从数据中学习得到的。
不过,现代的概率电路表示同样是过参数化的,并通常以张量集合的形式编码,以便利用并行性和现代深度学习框架(Vergari 等人, 2019a;Peharz 等人, 2020c;Mari 等人, 2023)。这引发了一个问题:电路与张量分解之间是否存在正式且系统的联系?
我们的回答是肯定的。我们证明了电路可以被表示为一种广义稀疏的层次化张量分解,其中其参数编码了该分解中的低维张量。或者换句话说,层次化张量分解是一种具有特定张量化架构的深层电路的特例。
对于概率电路而言,这意味着将表示为非负张量的概率分布进行分解(Cichocki & Phan, 2009)。同时,经典张量分解也可以被准确地编码为(浅层)电路。通过确认张量分解与电路之间的对偶性,我们系统整理了文献中的已有结果,为电路的表示与学习提供了新视角,并指出了构建新型或扩展已有(概率)分解的可能路径。
具体而言,本文首先推导出一种简洁的方式来表示多种张量化的电路架构,并使用“乐高积木”方法将其表示为计算图——通过堆叠(局部)密集的张量分解,同时保留电路所需的可处理结构性质。这使我们能够以即插即用的方式使用新颖的“模块”。
接着,我们将文献中提出的众多不同学习概率电路的算法(Peharz 等人, 2020c; a;Liu & Van den Broeck, 2021b)统一起来。这些算法来源不同,所构造的电路也被视为不同的模型。我们表明,它们的差异实际上只是其张量参数的分解方式和语法转换,因为它们都可以基于Tucker 张量分解(Tucker, 1966)及其特例(Kolda & Bader, 2009)在一个统一的广义(层次化)分解框架下理解。因此我们认为,文献中经常报告的不同性能表现,更多源于不同的超参数和学习方法,而非不同的归纳偏置(Liu 等人, 2023b)。
进一步地,在建立这种联系之后,我们利用张量分解对已经以张量格式表示的现代概率电路架构进行进一步压缩。由此,我们引入了比以往更参数高效的概率电路,并表明为特定任务寻找最佳电路架构的问题远未解决。
最后,我们强调这种与电路的联系为张量分解研究社区带来了有趣的研究机会——这些机会在本文中以方框标注的方式呈现,包括从数据中学习张量分解、将张量分解解释为潜在变量概率模型,以及通过背景知识指定诱导稀疏性等方向。
贡献:
- 我们将流行的张量分解方法及其层次化形式推广到电路语言中
(第2节)。
- 我们将概率电路与非负张量分解联系起来,并指出后者可被解释为潜在变量模型,从而可用于生成建模和神经符号 AI
(第3节)。
- 在我们的框架下,我们抽象出构建和学习现代过参数化架构的各种选项,提出了一个通用的算法流程
(第4节),用于表示和学习张量化的层次化张量分解。
- 这使我们能够利用张量分解分析现有不同电路参数化之间的关系,并提出更具参数效率的建模选择,同时保留一定的表达能力
(第5节)。
- 我们在广泛的分布估计任务中评估了我们框架中的多种算法选择,突出了时间与空间复杂度之间的主要权衡及最终性能表现
(第6节)。
2 从张量分解到电路

2.1 浅层张量分解即浅层电路 Tucker 张量分解 张量分解通过一组低维张量来近似高维张量。形式上,给定一个张量T ∈ ℝᴵ¹ˣᴵ²ˣ...ˣᴵᵈ,其大小随着维度呈指数增长,我们希望为其寻找一个低秩分解(Kroonenberg, 2007)。
许多流行的张量分解方法,例如典范多元分解(CP)(Carroll & Chang, 1970)、RESCAL(Nickel 等人, 2011)以及高阶奇异值分解(HOSVD)(De Lathauwer 等人, 2000),都是Tucker 分解(Tucker, 1964;1966)的特例。
因此,我们对张量分解的讨论将首先聚焦于 Tucker 分解,随后介绍其层次化形式(Grasedyck, 2010)。我们的结论也将推广到其特例,如 CP、RESCAL 和 HOSVD。



电路可以被理解为具有指数多项的多线性多项式,但它们以一个大小为多项式级的深层计算图进行紧凑编码(Darwiche, 2003;Zhao 等人, 2016;Choi 等人, 2020)。
从这个角度来看,我们可以直观地理解电路与张量分解之间的联系及其差异。事实上,正如后者也编码了紧凑的多线性算子(见公式(2)),电路多项式的不定元(indeterminates)可以不仅仅是定义2中提到的矩阵条目,还可以是潜在的非线性输入函数。
例如,一个电路可以编码一组连续随机变量上的联合密度,而输入函数fₙ可以表示高斯密度(见图1)。关于如何在电路中编码输入单元的多种方式,详见“机会4”部分的讨论。

电路中函数c的求值是通过通常的前馈方式遍历其计算图完成的——先输入后输出,如图1所示。
此外,我们所提供的电路定义可以比张量分解更具一般性,因为它能够表示稀疏的计算图,即其中单元之间是非规则连接的。但我们将在后文论证,这并非必需情况。
实际上,电路也可以被设计成局部稠密(locally-dense)的形式,这在许多现代实现中是常见的做法(见第4节)。
正如我们在下面针对一般 Tucker 分解(定义1)所提出的构造性命题中所展示的那样,当把张量分解转化为电路时,它们看起来也正是这种局部稠密结构。

附录 A.1 详细描述了我们的证明构造,图2 则以一个三维张量的 Tucker 分解为例进行了说明。

简而言之,我们构建了一个作用于相同变量上的浅层电路 c,当对其进行求值时,它输出一组坐标对应的重建张量元素,即它编码了公式 (2)。事实上,它的输入函数fₙ将变量状态映射为嵌入向量,也就是从 Tucker 分解中得到的矩阵所包含的实数值,见图1。
请注意,我们可以很容易地对我们的构造进行特化,从而得到对应于其他分解形式(如 CP、RESCAL 和 HOSVD)的电路。
作为我们构造方法的一个具体示例,请考虑以下情况。设T ∈ ℝ³ˣ³ˣ³是一个三维张量,其定义如下:


然后,我们可以构建一个结构与图2相同的电路c,为其输入单元配备来自V⁽¹⁾、V⁽²⁾ 或 V⁽³⁾的嵌入向量,具体取决于它们的作用域,并将加法单元的参数设置为通过对张量W进行向量化得到的向量w ∈ ℝ⁸,其值为(0.5, ..., 0.5)。
现在,为了计算张量T中条目t₁₂₂的近似值,我们可以以前馈方式对电路c进行求值——即先计算输入,再计算输出——从而得到c(1, 2, 2)的值。该求值过程将执行如下计算:
请注意,括号内颜色编码的块对应于电路中输入函数的输出(见图2),而向量外积(⊗)实现了电路中的乘法单元,最后与w的点积则由加法单元进行编码。
我们邀请读者尝试这个例子,并试着恢复张量中的其他条目,直到你对如何将张量分解转换为电路形式有更清晰的理解。
此外,由于电路可以表示张量分解,它们也继承了张量分解方法中常见的“非唯一性”问题(例如 Tucker 分解)。也就是说,由电路所编码的张量分解不是唯一的:在保持函数不变的前提下,我们可以改变电路的参数。
最后,我们要指出的是,分解的多线性秩现在转化为电路表示中输入单元的数量。稍后,在将层次化分解转化为深层电路(第2.2节)时,秩也将体现为不同深度层级上单元的数量。
将张量分解表示为这种类型的计算图,为我们扩展原有模型类别提供了许多机会。这些机会将在本文中以方框标注的形式加以强调。
同时,我们也可以更好地理解为什么这些分解已经能够支持某些感兴趣量的可处理计算,例如积分、信息论度量或最大化运算(Vergari 等人, 2021)。这些计算可以在电路框架下系统地完成,该框架将这些计算能力映射到计算图的某些结构性质的存在上,并精确地定义了可处理性的充分条件(有时也是必要条件)。
我们首先定义两个结构性质:平滑性(smoothness)和可分解性(decomposability),它们使得我们可以高效地计算关于指数多个变量赋值的求和运算,而这类运算在其他模型中通常是难以处理的。
定义3(逐单元平滑性与可分解性)(Darwiche & Marquis, 2002)
一个电路是平滑的(smooth),如果对于每一个加法单元n,它的所有输入单元都依赖于相同的变量集合,即:
对任意 i, j ∈ inp(n) ,都有 scp(i) = scp(j) 。
一个电路是可分解的(decomposable),如果对于每一个乘法单元n,它的所有输入单元分别依赖于互不相交的变量集合,即:
对任意 i ≠ j ∈ inp(n) ,都有 scp(i) ∩ scp(j) = ∅ 。
对于一个既平滑又可分解的电路,我们可以精确地计算如下形式的求和:

其中Z ⊆ X,Y = X \ Z,这被称为边缘分布(marginals),只需一次前馈遍历其计算图即可完成计算(Choi 等人, 2020)。
请参见我们在第3节中对平滑性与可分解性更多应用场景的讨论。
很容易验证,将 Tucker 张量分解表示为电路(如图2所示)时,它既是平滑的又是可分解的,因此继承了可处理的边缘化能力。
此外,从这一视角出发,我们还可以理解这些分解的表达能力。因为多线性多项式的表达能力通常通过具有这些结构性质的电路来刻画(Shpilka & Yehudayoff, 2010;Martens & Medabalimi, 2014;de Colnet & Mengel, 2021)。
张量分解与电路表示究竟从何而来?
在我们已经建立了张量分解与电路之间的初步联系之后(即前者可以被重写为具有特定结构性质的计算图,用后者语言来表达),我们也指出这两个研究社区在如何获得和处理这些对象方面的一个首要区别。
张量分解起源于对压缩给定高维张量的需求,而这个张量通常是显式表示的(即使不在内存中,也在磁盘上)。接着,通过一个优化问题来获得其分解形式,例如:找到使某种重建损失最小化的因子(Sidiropoulos 等人, 2017;Cichocki 等人, 2007)。
相比之下,现代的电路是从数据中学习得到的。虽然这种学习既可以在有监督的方式下进行,也可以在无监督的方式下进行,但后者更为常见,因为电路通常被用来编码一个概率分布。我们可以将这样的分布看作是一个从未被观测到的“隐式张量”,我们仅能从中采样出数据点。
第3节将对此进行形式化,并介绍电路学习问题。
尽管张量重建通常与从数据中学习电路的方法不同,但一旦获得了某个张量分解,将其视为一个电路后,我们就打开了许多新的使用和挖掘它的机会。我们在后续章节中以方框标注的形式突出这些机会。
接下来,我们将讨论电路框架如何也推广了层次化(或更深的)张量分解,这也将为我们提出的学习电路与张量分解的统一流程提供切入点(见第4节)。
2.2 层次化张量分解即深层电路
张量分解可以通过堆叠组合形成一个深度或层次化的分解结构,这种结构在空间效率上可以远优于其浅层形式(即具有更低的秩)。例如,Grasedyck (2010)提出了层次化 Tucker 分解(hierarchical Tucker),它根据对张量维度的一个固定层次划分方式,将多个低秩的 Tucker 分解进行堆叠。
Cohen 等人 (2015)指出,在大多数情况下,若使用等效甚至近似的浅层分解,所需的秩将随维度数量呈指数增长。对于电路而言,也有类似的理论结果:深层电路可以比浅层电路小指数级,其中电路的大小指的是单元之间的连接数量(Delalleau & Bengio, 2011;Martens & Medabalimi, 2014;Jaini 等人, 2018b)。
在本节中,我们首先介绍层次化 Tucker 分解,并展示它可以被视为一种深层电路。随后,我们将利用这一联系来描述现代张量化的电路表示(见第4节)。为此,我们借鉴了电路领域中的一个工具:电路作用域的层次划分(Vergari 等人, 2021),也称为区域图(Region Graph, RG)(Dennis & Ventura, 2012)。
正如我们接下来将形式化定义的那样,区域图是一个二分图,其节点要么是变量集合(即张量的维度),要么表示这些变量集合是如何被划分的。
定义4(区域图)(Dennis & Ventura, 2012) 给定一个变量集合X,一个区域图 R是一个二分的、有根的有向无环图(DAG),其节点要么是区域节点,表示X的子集,要么是划分节点,表示某个区域是如何被划分为其他区域的。该图的根节点是区域节点X
不失一般性,我们假设使用的是二元区域图(binary RG),即每个区域都被划分为两个子区域,如图3所示。

与我们对电路的图形表示法(定义2)类似,在图中我们省略了节点连接的方向性,并假设边是从包含更多变量的区域节点指向包含更少变量的区域节点。
接下来,我们定义 Tucker 分解的一个层次化变体。


附录 A.2 展示了该构造过程,并在图4a中以基于图3所示区域图的层次化 Tucker 分解为例进行了说明。
以完全相同的方式,我们可以将任何张量分解扩展为层次化的形式,并将其表示为一个电路。
然而,在电路相关的文献中,我们发现许多架构并不局限于树状区域图(tree RGs),也不局限于具有单变量输入区域的结构。


(Def. 4 允许使用任意的 DAG 和任意范围的区域,而分层张量因子化通常以具有树结构的区域图 (RG) 表示,其中每个叶子区域包含恰好一个变量(例如,图 3 中的 RG),这些有时被称为“维度树”或“模式簇树”(Grasedyck, 2010),在张量因子化社区中,或者在电路文献中称为“vtree”(Pipatsrisawat & Darwiche, 2008; Kisa et al., 2014; Wedenig et al., 2024a)。更复杂的 RG 结构可以增加表达能力和灵活性,从而在构建深度电路/分层因子化时更具优势。直观上,我们可以在多个因子化中共享因子矩阵,从而减少模型参数的数量,使得更高效的实现成为可能。更多细节请参见 Peharz 等人(2020c;a)。我们在左侧提供了这样一个 RG 的例子,分别见图 10 和图 5。
读者可以检查图 1 中的这个 RG 编码了可分解电路的层次作用域划分。图 9 然后展示了这个 RG 的一部分,并说明了如何根据它构建作为电路的张量因子化。电路文献提供了几种适合某些数据模态(例如,图像、序列、表格数据)的 RG 构建方法,这些也可以从数据中学习。第 4.1 节提供了这些技术的概述。)
通过利用一个区域图(RG)来施加特定的分解结构,并在其中为每个区域选择特定的参数化方式(如第4节将详细讨论),我们能够编码出与现有方法不同的新型层次化分解结构。图6展示了一些示例。

在图中,我们以“按层展开”的形式表示电路,这种表示方式将在第2.3节进一步说明。
请注意,从上述定义的 RG 出发构建张量分解,可以保持可分解性;而文献中基于 RG 构建的电路通常也满足平滑性(定义3)。
层次化 Tucker 及其变体也同时具有平滑性与可分解性,因此支持许多(概率)推理任务的可处理计算(见第3节)。
这些遵循“树状区域图且叶节点为单变量”的层次化分解(及其对应的深层电路)还满足一个额外的结构性质,称为结构化可分解性(structured decomposability)。
结构化可分解性使我们能够高效地执行一些仅靠平滑性与可分解性无法完成的更复杂的运算。例如,在张量网络的图形语言中,对某些特定张量分解进行平方操作——这在物理学中被称为Born 规则(Feynman, 1987;Glasser 等人, 2019)(也见第2.4节)。
下面我们给出结构化可分解性的定义:
定义6(结构化可分解性)(Pipatsrisawat & Darwiche, 2008)
一个电路是结构化可分解的,如果它满足以下两个条件:
它是平滑的且可分解的;
对于任意两个具有相同作用域的乘法单元n和m,它们在其输入单元上以相同的方式对该作用域进行分解。
我们可以很容易验证,层次化 Tucker 分解所生成的电路是结构化可分解的:这是因为它基于一棵区域图树堆叠 Tucker 分解(由可分解电路计算得到),从而使得所有乘法单元都以相同方式进行分解。
我们强调,明确那些能够解释多种感兴趣量可处理计算的少数结构性质,有助于避免重复发现和重新设计特定层次化分解算法的努力。


2.3 在张量化形式中表示电路
将(层次化)张量分解表示为(深层)电路,突显了我们可以自然地按类型和作用域对电路单元进行分组,并组织成“层”(layer),如图2所示。
这一视角带来了新的机会:将某些电路结构定义并表示为张量化的计算图。尽管文献中电路通常是以标量级别的计算单元(加法、乘法、输入)和单个连接来定义的(定义2),但如今许多成功的电路实现已经将单元以张量的形式进行组织(Vergari 等人, 2019a;Peharz 等人, 2020c; a;Liu & Van den Broeck, 2021b;Loconte 等人, 2024),目的是利用 GPU 提供的加速能力来提升计算效率。
基于这些思想,我们现在给出一个通用的张量化电路定义,它提供了一种模块化方式来构建过参数化的电路架构。这使我们能够设计一个统一的学习流程,涵盖许多现有架构(见第4节),并提出一种通过混合与复用小型“积木块”来创建新型架构的方法。
定义7(张量化电路)
一个张量化电路 c是由三种类型的层组成的计算图:
- 输入层
- 乘法层
- 加法层
每一层ℓ都由具有相同作用域scp(ℓ)的计算单元组成。
每一个非输入层接收来自其他层的输出向量作为输入,记作集合inp(ℓ)。
这三种层定义如下:

图7展示了张量化电路中的层类型,并与逐单元表示(定义2)进行了对照。

此外,当我们设置每层大小K = 1时,就恢复了之前的标量单元表示。
上述四种类型的层构成了我们将用来构建更复杂层的基本“乐高积木”(参见第4.3节和第5节),并可用于再现所有现代电路架构(见表1)。

表 1:将去结构化的电路和张量因子化架构及其实现,拆解为更简单的设计选择,以符合我们的流水线设计:应使用哪些区域图(第 4.1 节)和和积层(第 4.3 节),以及是否应用折叠(第 4.4 节)。通过混合搭配这些已有的基本组件,可以创造出新的设计。此外,我们提出了新的区域图,以实现更高效的张量化电路:QG、QT-2 和 QT-4。通过利用折叠电路权重的张量因子化,我们提出了两种新的和积层:CP、CPS 和 CPXS。打勾标记 ✓ 表示尽管 HCLTs 的原始实现并未如我们在此描述的那样实现折叠,但它们通过自定义的 CUDA 内核实现了类似的并行性。在附录 B 中,我们详细讨论了在每种概率电路(PC)架构中隐式做出的、与我们流水线相关的设计选择。
示例说明
为了说明这种定义如何帮助我们抽象出电路架构中的细节,请参见图4。
在图中,加法层与 Kronecker 乘法层被用于堆叠两个 Tucker 张量分解,从而表示一个层次化的 Tucker 分解。
我们在第4节中系统性地介绍如何堆叠不同类型的层,并以此方式构建深层电路。
现在,我们可以轻松地将定义3中关于结构性质的逐单元定义扩展到本节提出的按层表示,只需定义每一层的作用域即可。

请注意,通过假设每一层都由具有相同作用域的单元组成,并使用定义7中所定义的三种层结构,我们所构建的张量化电路在设计上就具有平滑性(smoothness)和可分解性(decomposability)。
此外,如果一个深层电路所对应的区域图(RG)是一棵树,那么该张量化电路也将是结构化可分解的(structured-decomposable)(定义6)。
我们可以从图4b中层次化 Tucker 分解所对应的张量化电路的图形表示中快速识别出这些性质。
接下来,我们将利用这种分层抽象来连接当前流行的张量网络(tensor networks),并展示它们如何被自然地编码为深层电路。
2.4 张量网络作为深层电路
在物理学和量子计算等领域,张量网络(Tensor Networks, TNs)通常是表示层次化张量分解的首选方式(Markov & Shi, 2008;Schollwoeck, 2010;Biamonte & Bergholm, 2017)。
张量网络拥有一套图形化语言——Penrose 图形记号——用于以紧凑的图示形式编码张量点积(也称为张量收缩)(Orús, 2013 提供了综述)。
其中,最流行的张量网络分解之一是矩阵乘积态(Matrix-Product State,MPS),它也被称为张量列分解(Tensor-Train factorization,TT)(Pérez-García 等人, 2007;Oseledets, 2011;Glasser 等人, 2019;Novikov 等人, 2021)。
例如,给定一个张量T ∈ ℝᴵ¹ˣ...ˣᴵᵈ,其秩为 R 的 MPS/TT 分解可逐元素表示为:

在图8中,我们展示了一个表示 MPS/TT 的张量化电路,其变量为X = {X₁, X₂, X₃}。正如 Loconte 等人 (2024) 中命题3的证明所详述的那样,该电路的输入层和密集层的参数是通过对 MPS/TT 中的张量 进行分解得到的。
与层次化 Tucker 分解的张量化电路表示(命题2)类似,命题3也导出了一个具有结构化可分解性(structured decomposability)的张量化电路(定义6)。
结构化可分解性是 MPS/TT 中的一项关键性质,它使得某些操作可以高效执行。例如,对 MPS/TT 进行平方运算从而构建一个Born 机器(Born machine)——这是一种用于模拟物理学中量子多体系统的概率模型(Orús, 2013;Glasser 等人, 2019)。
理解这一点后,实践者就可以设计替代性的 Born 机器架构,这些架构不再局限于“线性”区域图所编码的一系列张量操作,也无需从头开始证明这些新架构上平方运算的可处理性(Shi 等人, 2005)。
这是我们强调的、当将层次化张量分解表示为电路时所带来的研究机会之一(见机会1与机会2)。下一节我们将介绍更多此类机会,并且这些机会同样适用于张量网络(TNs)以及传统的张量分解。
下一步 到目前为止,我们讨论的是实值张量的一般分解形式。然而,还有一些专门针对非负数据(如图像)的张量分解方法,称为非负张量分解(non-negative tensor factorizations),它们将张量分解为非负因子,因此更容易解释(Cichocki & Phan, 2009)。
在第3节中,我们将非负张量分解与概率建模电路的文献联系起来,从而将其解释为一种深层潜在变量模型(deep latent-variable models)。
此外,通过建立非负张量分解与其作为(深层)电路表示之间的桥梁,我们将展示与以下两个方向相关的未来研究机会:
如何对张量分解进行参数化;
如何使用这些分解进行概率推理。
3 从非负分解到用于概率建模的电路
在机器学习领域,可处理的概率建模(tractable probabilistic modeling)中的电路表示受到了广泛关注,即:对那些支持高效推理的概率分布进行建模。以这一目标构建的电路通常被称为概率电路(Probabilistic Circuits, PCs)(Vergari 等人, 2019b;Choi 等人, 2020)。
在本节中,我们将非负张量分解与概率电路联系起来,并展示张量分解社区在概率机器学习领域中的一系列研究机会。
首先,我们将非负(层次化)张量分解与(深层)概率电路中关于离散潜在变量的解释联系起来,并举例说明一些现有的、利用这种解释实现线性时间概率推理的算法(不仅包括前一节讨论的边缘分布,也包括采样)。
其次,我们展示了概率电路文献中丰富的研究成果提供了多种紧凑参数化技术,这些技术可以产生非线性张量分解。
同时,我们也借鉴非负张量分解领域的优化技巧,用于学习概率电路。
最后,我们将非负张量分解与无限维张量分解的研究联系起来,揭示其与编码概率密度函数的概率电路之间的关系,以及与具有无限维加法单元的概率电路之间的联系。
我们首先描述如何将有限离散随机变量上的概率分布表示为一个张量分解。

确保一个电路是一个概率电路(PC)的一个充分条件是:限制加法单元的参数和输入单元的输出均为非负值,这样的电路被称为单调电路(monotonic circuit)(Shpilka & Yehudayoff, 2010)³。
例如,我们前面提到的编码非负层次化 Tucker 分解的电路就是一个单调的概率电路(PC),因为它的加法单元权重(即核心张量W的元素)以及输入单元的输出(即因子矩阵{V⁽ʲ⁾}ⱼ=1ᵈ的元素)都被限制为非负值。
电路中的平滑性(smoothness)与可分解性(decomposability)使得我们可以高效地计算求和与积分运算(见第2.1节),这在概率建模中意味着:对于具有这些结构性质的概率电路(PC),我们可以精确地计算任意边缘分布或条件分布(Vergari 等人, 2019b)。
然而,这些概率电路(PC)不仅仅是可处理的概率模型,它们同时也是生成模型,我们可以从中进行精确采样。
3.1 非负张量分解作为生成模型
由于非负分解(如非负层次化 Tucker 分解)是平滑的且具有(结构化)可分解性的概率电路(PC)(见定义3和定义6),它们继承了概率电路在进行可处理推理和生成新数据点(即其所定义变量的某些配置)方面的能力。
据我们所知,将张量分解作为生成模型来处理的研究目前尚未受到广泛关注。在下文中,我们将对此进行讨论,并展示如何为这些表示设计(更高效的)采样算法。


3.2 如何参数化概率张量分解?
电路(circuits)与张量分解(tensor factorizations)是两种不同优化问题的输出结果,但它们在优化过程中也面临一些共同的挑战。理解这些挑战可以为两个研究社区带来新的研究机会。
在(非负)张量分解的应用场景中,主要任务是对一个给定的张量进行压缩或重建,而该张量通常在内存中是显式表示的。因此,张量分解的参数是通过最小化某种重建损失函数来优化的(Cichocki 等人, 2007)。
相比之下,现代的概率电路(PCs)是从数据中学习得到的。也就是说,我们通常会获得一个包含N个样本的数据集{x⁽ⁱ⁾}ᵢ=1ᴺ,并假设这些样本独立同分布地来自某个未知分布p(X)(Bishop & Nasrabadi, 2006)。编码该分布的概率张量因此是隐式的:一方面因为分布本身未知,另一方面由于其可能具有指数级甚至无限大的规模(见第3.4节),所以无法完整地显式构造出来。
由于概率电路的学习通常归结为一个优化问题——即最大化数据的(对数)似然函数(Peharz 等人, 2016),因此为了保证电路的非负性,通常采用一种或多种重参数化方法(reparameterization),即将实值参数映射为正值的加法单元权重。
这是必要的,因为单调概率电路(monotonic PC)的加法权重必须构成一个凸组合,才能生成一个合法的概率分布(如公式 (8) 所示)。
例如,我们可以使用softmax 函数对具有 K 个输入的加法单元的 K 个参数θ ∈ ℝᴷ进行“压缩”处理:
将这种重参数化方式与用于编码概率分布的输入函数结合使用,可以确保所构建的概率电路满足归一化条件(即所有变量赋值的概率之和为1)。这是因为每个加法单元的权重之和等于1。
对于张量化电路而言,这种重参数化会在每一个加法层的参数矩阵上按行进行。
幸运的是,如果电路是平滑且可分解的(定义3),即使加法权重未被归一化,我们仍然可以高效且精确地计算其归一化常数(Peharz 等人, 2015)。这使我们能够使用其他方式来参数化单调概率电路c,即使它输出的是一个未归一化的分布(即总概率不等于1的分布)。
事实上,我们仍可以通过归一化操作来高效地恢复一个合法的概率分布:

其中ε是一个接近零的正阈值。每种重参数化方式都可能导致不同的损失函数景观(loss landscape),从而在优化过程中引导出不同的解。
在我们的实验中(第6节),我们发现这种第三种重参数化方法在学习概率电路(PCs)时最为有效。
对于单调概率电路(monotonic PC)中的输入单元,它们需要建模合法的概率分布。常见的参数化方式可以包括简单的概率质量函数(PMF)(或密度函数,见第3.4节),例如伯努利分布(Bernoulli)或分类分布(Categorical),甚至也可以使用其他能够高效进行边缘化的概率模型。
这产生了一组可能的参数化方式,远远超出了张量分解中通常使用的那种“从索引到矩阵条目的简单映射”方式(见命题1与图2)。


3.3 可靠的神经符号整合
概率电路(PCs)在可处理推理方面的一个重要应用场景是安全关键型系统(safety-critical applications),其中需要对神经分类器的预测结果施加硬性约束(Ahmed 等人, 2022;van Krieken 等人, 2024)。
这类约束可以通过感知组件(如分类器)提取出的符号,以逻辑公式的形式表达出来。例如,在自动驾驶场景中,“汽车必须在行人或红灯前停车”这一安全规则(Marconato 等人, 2024b;a)可以写成一个命题逻辑公式:
ϕ:(P∨R)⇒S
其中P、R、S是布尔变量,分别表示在车载视频流中检测到了行人(Pedestrian)和红灯(Red-light),以及必须执行停车(Stop)操作。
电路特别适合用于这种神经符号整合(neuro-symbolic integration)(De Raedt 等人, 2019),因为它们既可以表示概率分布,也可以表示逻辑公式。
这两种表示可以在同一个分类器中结合使用,以确保任何违反给定约束的预测结果的概率恒为零。
形式上,我们可以实现这样一个分类器:它将输入x映射到输出y,且输出必须满足某个约束条件ϕ,其定义如下(Ahmed 等人, 2022):
其中:
- q(y | x)
是一个由电路编码的条件分布,它可以由神经网络进行参数化(见“机会4”);
- ✶{y ⊨ ϕ}
是一个指示函数,当预测结果y满足约束ϕ时取值为 1(即逻辑上成立,记作 ⊨)。
例如,在我们自动驾驶的例子中,y是对变量P、R、S的布尔赋值,而✶{y ⊨ ϕ}在将y代入公式ϕ后结果为“真”(J)时取值为 1。
这个指示函数可以通过一种称为知识编译(knowledge compilation)的过程,被紧凑地表示为由加法和乘法单元构成的电路形式(Darwiche & Marquis, 2002;Chavira & Darwiche, 2008;Choi 等人, 2013)⁴。
如果概率分布q与约束ϕ的指示函数所对应的电路是兼容的电路结构(见“机会2”),那么我们可以高效地将它们相乘,并通过计算配分函数(partition function)来进行归一化。
该配分函数等于在给定输入x的条件下,硬性约束ϕ成立的概率,即:

这也被称为加权模型计数(Weighted Model Count,WMC)(Chavira & Darwiche, 2008;van Krieken 等人, 2024),它是进行逻辑推理与概率推理结合时所需计算的核心量(Darwiche, 2009;Zeng 等人, 2020)。
据我们所知,这种可能的整合方式目前尚未进入张量分解研究社区的关注视野。


3.4 无限维概率张量与连续分解
到目前为止,我们讨论的电路所表示的是具有有限维度的张量(包括层次化)分解,也就是说,每个维度上的元素数量是有限的。这类电路定义在一组离散变量之上,每个变量也只有有限个状态。
在本节中,我们将关注那些维度可能具有无限个(甚至可能是不可数的)元素的张量,或称为准张量(quasi-tensors)(Townsend & Trefethen, 2015)。
类比于(层次化)张量分解与电路之间的对称性(见第2节),我们展示准张量也可以被表示为定义在至少一个具有无限(甚至不可数)域的变量上的电路。
此外,通过与一类配备了积分单元(integral units)的最新电路模型建立联系,我们指出了一种新的研究机会:关于无限秩(hierarchical)张量分解的参数化问题,即那些秩不必为有限的分解形式。
我们将这些思想扎根于一个具体任务:建模概率密度函数(PDF)。

类似地,我们也可以构建这种连续张量分解的层次化版本,并将其应用于概率建模(Gala 等人, 2024b)。
如果公式 (13) 中的积分在计算上是难以处理的,可以使用求积规则(quadrature rules)对其进行近似。详见 Gala 等人 (2024a) 的相关讨论。
在接下来的第4节中,我们将提出一个通用的流程框架,可用于构建有限维与无限维的层次化概率张量分解,并将它们表示为深层张量化的概率电路(PCs)(定义7)。
在此之前,在下面的“机会”框中,我们强调:电路还可以作为某些概率分布的替代表示形式,而这些分布并不对应于概率张量分解。


4 如何构建和扩展电路:一种张量化的视角
我们现在已具备所有必要的背景知识,可以开始探索(分层)张量分解与(深度)电路之间的联系。特别是,在本节中,我们将展示如何通过利用张量分解作为模块化抽象工具,理解和统一许多——表面上看似不同——构建电路(以及其他分解方式)的方法。通过这种方式,我们可以“解耦”构建和有效学习过参数化电路的关键要素,即:构建具有大量参数的电路(见表1)。

图9总结了我们的流水线结构:

i)首先,构建一个RG结构,以强制实现所需的结构性质(第4.1节);
ii)然后,通过引入基本单元并将它们分组为层来填充该模板(第4.2节),这一过程遵循多种可能的张量分解抽象方式(第4.3节);
可选地,iii)这些层可以被“折叠”,即将它们堆叠在一起以利用GPU的并行计算能力(第4.4节)。
最后,可以通过梯度下降或期望最大化(EM)算法来优化电路的参数(Peharz et al., 2016;Zhao et al., 2016)。
4.1 构建与学习区域图(Region Graphs)
我们流水线的第一步是构建一个 RG(定义4)。它根据输入变量的层次划分,用于构建深度电路架构。具体来说,基于满足某些关键结构性质(如光滑性和平分解性)的 RG 所构建的概率电路(PC),可以保证许多查询任务的高效推理(第2节)。如果 RG 是一棵树,并且叶子节点是单变量的,则还满足结构分解性(见第2.2节)。虽然一些论文中明确使用 RG 来构建 PC(Peharz 等,2020c;a),但正如我们将展示的那样,RG 的结构也隐含地存在于许多其他 PC 和张量分解架构中。此外,我们还介绍了一种新的方法,可以快速为图像数据构建 RG,这种方法不依赖于具体数据集,但利用了像素的结构信息。
线性树形 RG(LT)
构建 RG 的一种简单方式是一次只分解一个变量。也就是说,给定变量 X 上的一个排序 π,每个第 i 个分区节点将其作用域 {Xπ(1), ..., Xπ(i)} 分解为两个区域:{Xπ(1), ..., Xπ(i−1)} 和 {Xπ(i)}。我们称这种 RG 为线性树(Linear Tree, LT),并在图3中展示了三个变量情况下的示例。变量排序可以是字典序,也可以根据额外信息(例如在建模序列数据时的时间顺序)来决定。这种顺序型 RG 被链状张量网络分解方法采用,如 MPS、TT 或 BM(Pérez-García 等,2007;Oseledets,2011),以及以 PC 形式表示的隐马尔可夫模型(HMM)(Rabiner & Juang,1986;Liu 等,2023a)。
随机树形 RG(RND)
一种稍微复杂一点的 RG 构建方法是构造一棵平衡树。这可以通过递归随机划分变量的方式实现,而无需依赖特定数据集。即,根区域 X 被递归地划分为大致相等的子集,直到无法再进一步划分为止。我们将这种方法称为 RND,最初用于构建随机化和张量化化的和积网络(RAT-SPN)(Peharz 等,2020c)。Di Mauro 等人(2017;2021)也提出了类似的方法,不同之处在于他们在参数化电路时还会考虑部分随机选择的数据子集,从而将 RG 构建与电路参数化耦合在一起。
Poon-Domingos 构造法(PD)
我们可以设计专门针对特定数据模态的 RG 构造方法,同时仍保持对数据集的无关性。对于图像数据而言,当变量对应像素值时,Poon & Domingos(2011)提出通过递归进行水平和垂直切割的方式,形成一个由图像块组成的深层结构。然而,这种方法(标记为 PD)的主要缺点是通常会生成非常深的电路结构,难以优化(第6节),因为它考虑了所有可能的递归划分方式,导致图像块数量随图像大小快速增长。PD RG 在电路文献中被广泛使用,例如 EiNets 架构(Peharz 等,2020a)。
面向图像数据的新 RG:四分图(QG)与四叉树(QT)
我们希望设计出既不依赖具体数据集又能像 PD 一样感知像素结构的 RG,同时避免其优化问题。因此,我们提出了一种更简单的面向图像的 RG 构建方法,能够生成更小的电路,并在性能上优于从数据中学得的 RG(见第6节)。附录中的算法 D.1 详细描述了我们的构造方法。与 PD 类似,它通过递归分割大小相近的图像块来构建 RG,但与 PD 不同的是,它每次仅将图像块划分为四个部分(一次水平切分和一次垂直切分),并共享新生成的图像块。我们称这种 RG 为四分图(Quad-Graph, QG)。图10 展示了一个 3×3 图像的 QG 示例。


另外,我们也可以通过在水平和垂直方向上分割图像块(但不共享图像块)来构建树状 RG,我们称之为四叉树(Quad-Tree, QT)。由于这些 RG 中的区域对应图像块,我们可以选择不同的划分方式。特别地,我们用 QT-2 表示将区域划分为两部分(图像块的上下部分)的 QT,用 QT-4 表示将区域划分为四部分(按象限划分)的 QT。使用 QT-2 可以还原先前工作中用于图像数据的张量分解方法(Cheng 等,2019)。
从数据中学习 RG
到目前为止讨论的方法都不依赖训练数据。为了在 RG 构建过程中利用数据信息,可以在区域节点 Y ⊆ X 内部测试特征子集的统计独立性。这是早期 LearnSPN 算法所采用的方法(Gens & Domingos,2013),后来被许多研究扩展(Molina 等,2018;Di Mauro 等,2019)。尽管这些变体从未明确提到 RG,但实际上它们通过执行这些统计检验并引入与聚类得到的不同“数据块”相关联的区域,隐式地构建了一个 RG(Vergari 等,2015)。另一种方法是根据数据上的启发式规则进行区域划分,使得区域节点可以共享(Jaini 等,2018a)。这一思想也是 Chow-Liu 算法的基础,用于学习最佳逼近数据似然性的树状概率图模型(PGM)(Chow & Liu,1968b)。Chow-Liu 算法(CL)同样可以隐式地构建 RG,这在许多结构学习方法中都有应用(Vergari 等,2015;Rahman 等,2014;Choi 等,2011)。最近的一种方法在此基础上表现优异:首先学习 Chow-Liu 树,然后将其视为潜在树模型(Choi 等,2011),最后编译成 PC(Liu & Van den Broeck,2021b)。
一旦我们将 RG 的作用与其他部分解耦,这种隐藏的 Chow-Liu 树(HCLT)的构建过程恰好遵循我们流水线中的步骤。
到目前为止提到的其他 PC 和张量分解架构(例如 RAT-SPN、EiNets、MPSs、BMs 等)的构建方式也遵循相同的模式,并且可以很容易地归类到我们的流水线中(见表1)。它们不仅在所使用的 RG 类型上有所不同,还在所选择的和层(sum layers)与积层(product layers)的类型上存在差异。在下一节中,我们将提供一个通用算法,该算法可以根据给定的 RG 以及选定的、用于编码张量分解的和层与积层,构建一个张量化的电路架构。
4.2 Overparameterize & Tensorize Circuits
4.2 过参数化与张量化电路
给定一个区域图(RG),构建电路最简单的方法是为每个叶区域关联一个输入分布单元,为每个内部区域关联一个求和单元,并为每个划分关联一个乘积单元,然后按照 RG 的结构将它们连接起来。这种方法可以生成一个平滑且(结构可分解)的电路,并且它是稀疏连接的。事实上,前一节中讨论的许多结构学习算法都是隐式地采用这种策略来构建电路的(Gens & Domingos, 2013;Vergari 等,2015;Molina 等,2018)。
我们可以将这一策略适配到“深度学习范式”中,转而输出一个局部密集连接的过参数化电路。所谓过参数化,是指在一个 RG 中不是只放置一个,而是放置多个具有相同作用域的求和、乘积和输入单元的过程。这样得到的张量化的计算图(定义7)包含更多可学习参数,并适合在 GPU 上进行并行化处理,因为我们可以将具有相同作用域的计算单元向量化,形成密集层。
算法1详细描述了过参数化和张量化的过程。该算法的输入包括:一个区域图 R、输入函数的类型 F(例如高斯分布),以及控制电路表达能力的求和单元数量 K(等价于因子分解的秩)。此外,我们还可以自定义输入层的选择方式,以及如何堆叠求和层和乘积层,从而以不同的效率和表达能力来构建电路。
构建输入层
算法1的第一步是为叶区域关联输入单元,即那些不再被进一步分解的区域。叶区域通常是单变量的,即形式为 Y = {Xj},其中 Xj ∈ X 是某个变量。对于每个作用于变量 Xj 的叶区域,我们引入 K 个输入单元,每个都计算一个函数 fi: dom(Xj) → ℝ。为了保证单调概率电路(monotonic PCs)的输出非负性,fi 通常被选为非负函数,例如概率质量或密度函数(Choi 等,2020)。然而,我们也可以从更广泛的表达能力强的函数族中选择 fi,例如多项式样条(de Boor, 1971;Loconte 等,2024)、神经网络(Shao 等,2020;Correia 等,2023;Gala 等,2024a;b)以及归一化流(Sidheekh 等,2023)。参见机会4。
接着,可以通过张量化输入单元来实现高效计算:用一个输入层 ℓ: dom(Xj) → ℝ^K 来替代这些输入单元,使得 ℓ(Xj)i = fi(Xj),其中 i ∈ [K] 可以并行计算(对应算法1第11行)。接下来,根据给定 RG 中对变量的划分方式,构建并连接相应的求和层和乘积层。
4.3 将求和层与乘积层抽象为模块
除了输入层之外,我们在定义7中还介绍了张量化电路中的其他基本“乐高积木”:求和层、哈达玛积层(Hadamard product layer)和克罗内克积层(Kronecker product layer)。在接下来的内容中,我们将使用这些基本模块来构建复合层(composite layers),这些复合层将作为更高层次的抽象模块,无缝地插入到算法1中。
这些复合层包括:Tucker 层(图11)、CP 层(图15)和CPJ 层(图16)。每种层都编码了一种局部因子分解方式,并以不同的方式堆叠和连接内部的求和单元与乘积单元,从而提升模型的表达能力或计算效率。

请注意,基于我们对张量化层的语义定义,通过在区域图(RG)上应用算法1来堆叠这些复合抽象模块,最终输出的电路始终是一个张量化的电路,并且该电路是平滑的且(结构-)可分解的(定义8)。
我们首先考虑采用Tucker 分解中计算单元连接方式的复合层,如图2所示。这种结构最早出现在诸如RAT-SPNs(Peharz 等,2020c)和EiNets(Peharz 等,2020a)这类架构中。在这些模型中,一个作用于变量集合 Y⊆X 上的区域节点,若其被划分为 (Z₁, Z₂),则会被参数化为一个层 ℓ,该层是由一个克罗内克积层(Kronecker product layer)后接一个求和层(sum layer)所组成的复合层,即它计算:




4.4 折叠以进一步加速学习与推理
我们所提出流程的最后一步(也是可选步骤)(见图9)是将具有相同函数形式的层堆叠在一起,以提升 GPU 的并行计算能力。我们将这一步骤称为“折叠(folding)”。
请注意,折叠仅仅是一种对电路的语法变换,也就是说,它不会改变电路所表示的函数,因此也保持了其表达能力。然而,这种简单的语法“重写”却可能对学习和推理性能产生显著影响。
事实上,“折叠”是 EiNets(Peharz 等,2020a)相较于未折叠的电路架构(如 RAT-SPNs(Peharz 等,2020c))在速度上取得额外提升的核心机制。而 EiNets 和 RAT-SPNs 在其他架构细节(例如使用 Tucker 层)方面是相同的(参见表1)。
因此,当将 RAT-SPNs 和 EiNets 视为两类不同的概率电路模型时,通常报告的性能差异(例如 Liu 等(2023a)中的结果),实际上应归因于其他因素,例如区域图(RG)的选择,或用于训练这些模型的其他超参数之间的差异(例如优化器的选择)。
通过在我们的流程中将这些因素分离出来,我们可以设计出更清晰的实验,真正揭示哪些因素对性能提升起到了关键作用(见第6节)。
折叠层 为了获得 Tucker 层(公式(Tucker-layer))的折叠表示,我们需要沿着一个新引入的维度(我们称之为“折叠维度”)来堆叠参数矩阵,并根据这个新增的维度进行相应的乘法运算。


其中,ℓ₁(相应地,ℓ₂)表示一个折叠层,用于计算 ℓ⁽ⁿ⁾ 的 F 个左侧输入(相应地,右侧输入),每个输入分别定义在变量 Z₁⁽ⁿ⁾(相应地,Z₂⁽ⁿ⁾)上;而每个 Wn::∈RK×K2 是第 n 个 Tucker 层 ℓ⁽ⁿ⁾ 的参数矩阵。换句话说,Wn:: 是张量 W∈RF×K×K2 在第一个维度上的第 n 个切片(slice),该张量是通过将每个 Tucker 层的参数矩阵堆叠在一起得到的。
由于同一个区域节点可能参与其他区域节点的多个划分方式中(例如见图9i),我们可能会有折叠后的输入 ℓ₁ 和 ℓ₂ 计算相同输出的情况。我们在图9iii中展示了这样一个示例:两个共享一个输入的 Tucker 求和-乘积层被折叠在一起。在附录F中,我们提供了一个使用einsum 操作实现折叠 Tucker 层的 PyTorch 代码片段。
因此,虽然折叠在评估张量化电路时可以带来显著的速度提升,但它也可能带来内存使用的增加,这取决于所选择的区域图(RG)结构。
如何选择要折叠的层?
接下来的问题是:我们应该如何选择哪些层进行折叠?
最简单的方法是从上到下(即从输出到输入方向)遍历整个张量化电路,并对计算图中处于同一深度的层进行折叠。但请注意,我们也可以对不同深度的层进行折叠。
例如,如果所有输入层都为所有变量编码相同的输入函数形式,则它们可以被一起折叠。这正是 EiNets(Peharz 等,2020a)中采用的方式,也是我们在所有实验和基准测试中所使用的方法(见第6节)。
然而,请注意,这并不一定是最优的折叠方式,针对特定架构定制不同的折叠策略可能会带来额外的速度提升和内存节省。
尽管我们没有探索除上述方法之外的其他折叠方式,但在我们提出的流程中,将“折叠”与“过参数化”步骤进行了明确区分(见第4.2节),这一设计将有助于未来的研究借鉴大量关于并行化通用计算图的文献(Shah 等,2023),从而进一步优化折叠策略。
5 通过张量分解压缩电路与参数共享
在本节中,我们将再次借助张量分解(tensor factorizations)领域的研究成果,以改进电路架构的设计与学习过程。
我们首先观察到,在我们提出的流程中,电路各层的参数是以大型张量的形式存储的(例如见公式 (Tucker-layer) 和 (Tucker-folded)),因此原则上可以对这些张量进行进一步的分解。而由于这些分解本身也可以被表示为电路(命题1),最终我们可以得到多种电路架构和层的变体:其中一些是新的设计,能够在速度与精度之间取得良好的平衡(第5.2节);而另一些则已经被隐式地应用于现有电路与张量分解结构的构建中(见表1)。
我们仍然从Tucker 层出发,目标是使用它们来压缩一个深层电路,即用更少的参数对其进行近似。
5.1 压缩 Tucker 层








5.2 通过张量分解实现参数共享
我们现在将注意力转向在张量化概率电路(PC)中跨层共享参数的问题。我们再次利用张量分解技术来完成这一任务。
考虑一个按照我们提出的流程(第4.2节)基于区域图(RG)构建的张量化 PC。可以合理地假设:位于相同深度的层,其参数张量中可能存储着相似的结构。
例如,两个作用域分别为相同大小的相邻像素块的层,可能会对其各自的输入执行相似的变换,因为我们通常可以假设这两个像素块所对应的分布是高度相似的。
如果 RG 是一棵完美平衡的二叉树,那么对整个电路进行折叠操作,实际上就是在对同一深度的层进行折叠,而这些层在参数空间中很可能具有相似的结构。
这启发我们将参数共享机制实现为一种跨折叠层的因子分解。
具体来说,我们首先从压缩一个折叠后的 Tucker 层(见公式 (Tucker-folded))开始;为了获得一个能够实现上述参数共享的新层,我们再次对该层的参数张量应用CP 分解(定义10)。
这一次,我们需要分解的是张量 W∈RF×K×K×K,它是一个四维张量,通过对折叠后的 Tucker 层 ℓ 的参数张量进行重塑得到,其中 F 表示折叠维度。
如果我们应用一个秩为 R 的 CP 分解,并且令 R 远小于 K(即 R≪K),则我们可以得到:




6 实验评估:应该选择哪种区域图(RG)和层?
将现代概率电路(PC)架构(以及张量分解方法)解构为我们的统一流程(图9),使我们能够通过简单的“混合搭配”方式构建新的张量化架构(见表1)。同时,这也有助于我们从表达能力、推理速度和优化难易度等角度,理解不同模型类别之间真正关键的差异。
现在我们可以轻松地分离出几个关键因素,例如 RG 的作用,以及在现代电路架构中复合层的选择,并明确指出哪一部分对性能提升起到了关键作用。
例如,HCLTs 曾在最近的基准测试中被认为是表现最好的电路架构之一(Liu 等,2022;2023a),但直到现在,人们还不清楚它为何能优于 RAT-SPNs 和 EiNets 等其他架构。
在我们的框架下,我们可以尝试回答更具体的问题来解释这一现象:
是它们所使用的、从数据中学习得到的区域图(RG)(第4.1节)带来的优势吗?
是它们采用的复合求和-乘积层参数化方式(第5.1节)吗?
还是其他超参数的选择起了作用?
(剧透:最终答案将是使用了CP 层。)
具体来说,在本节中我们将通过严格的实证研究来回答以下三个研究问题:
- RQ1
:我们目前可以构建的多种张量化架构,在测试和训练阶段所需的计算资源(时间与GPU内存)分别是多少?
- RQ2
:在将张量化电路作为分布估计器进行训练时,区域图(RG)与复合求和-乘积层的选择对性能有何影响?
- RQ3
:如果我们像图14a→图14b所示那样,将预训练的 Tucker 层因子分解为 CP 层后,是否仍能保留(大部分)原始性能?
请注意,我们不关心折叠(folding)的影响(第4.4节),因为我们已经知道答案:对于大规模的张量化架构来说,折叠是至关重要的。因此,在所有实验中我们都使用了折叠后的张量化电路。
我们要强调的是,实验的目的不是为了达到最先进的分布估计效果,而是为了理解张量化电路架构中各个组件的作用。
所有实验均在一个配备单块 NVIDIA RTX A6000 GPU(48GB 显存)的设备上运行。我们的代码可在github.com/april-tools/uni-circ-le获取。
一种新的电路命名方式
需要说明的是,表1中的 HCLT、EiNets、RAT-SPNs 等缩写并不代表不同的模型类别,而只是不同的架构设计。它们都属于同一类模型:平滑且(结构)可分解的概率电路。
在下文中,我们将使用如下格式表示一个张量化架构:[RG]-[sum-product layer]
,必要时加上 K 表示如算法1中所述用于过参数化的单元数量。
当 RAT-SPNs 和 EiNets 使用随机区域图(random RG)构建时,它们将被统一命名为
RND-Tucker
;若使用 Poon&Domingos 区域图,则称为
PD-Tucker
;而 HCLTs 则对应
CL-CP
架构。
我们主要通过对图像数据集进行分布估计来评估所提出的架构。
我们使用的Mnist家族数据集包括6个灰度图像数据集(28×28):
Mnist(LeCun 等,2010)
FashionMnist(Xiao 等,2017)
EMNIST 及其4个划分(Cohen 等,2017)
此外,我们还使用了 CelebA 数据集,将其缩放为 64×64 像素大小,并提供两个版本:
RGB 像素版本
经过无损 YCoCg 颜色编码预处理的像素版本(Malvar & Sullivan, 2003),因为近期研究表明这种变换可以显著降低 bpd(bits per dimension)
除此之外,我们还在具有连续变量的表格数据上进行了实验。特别地,我们在5个 UCI 数据集上执行密度估计任务,这些数据集通常用于评估归一化流模型(Papamakarios 等,2017)。UCI 数据集的统计信息详见附录表 E.5。
参数优化
我们训练电路以估计生成图像的概率分布,将每个像素视为一个随机变量。因此,电路中的输入单元代表具有256个取值的分类分布(Categorical distributions)。对于 RGB 图像,每个像素关联三个分类分布单元(每个颜色通道一个)。
而对于5个 UCI 数据集(见表 E.5),我们则使用代表单变量高斯分布的输入单元,并同时学习其均值和标准差。
我们通过随机梯度上升法进行最大似然估计,即最大化如下目标函数:
其中,是概率电路 c 的配分函数,而 B 表示一个训练批次的数据。
在进行了一些初步实验后,我们发现使用 Adam 优化器(Kingma & Ba, 2015),并将学习率设为 ,平均而言可以为我们所考虑的数据集带来表现最好的模型。
此外,我们还确定在每次优化步骤之后,通过对电路中的求和参数进行clamp 操作并设(见公式(9)),以保持其非负性,这种方式在所有可能的重参数化方法中带来了最佳的学习动态(参见第3.2节)。
在下文中,我们将总结针对 RQ1–RQ3 所得的结论,并提炼出一些面向实践者的建议,用于指导如何构建和训练概率电路。
RQ1)不同张量化架构的时间...
热门跟贴