| paper | code |
|---|---|
| https://arxiv.org/pdf/2210.08277 | https://github.com/Felix-Petersen/difflogic |
Abstract
- 近年来,研究越来越集中于开发高效的神经网络架构。在本研究中,我们通过学习逻辑门的组合,探索用于机器学习任务的逻辑门网络。这些网络由逻辑门(例如“AND”和“XOR”)组成,能够实现非常快速的执行。然而,学习逻辑门网络的难点在于,它们通常是非可微的,因此无法通过梯度下降进行训练。为了解决这一问题,我们提出了可微逻辑门网络,这是一种结合了实值逻辑和网络连续参数化松弛的架构。生成的离散逻辑门网络能够实现极快的推理速度,例如,在单核 CPU 上每秒处理超过一百万张 MNIST 图像。
网络结构

对于每个神经元,我们学习一个关于逻辑门的概率分布。训练完成后,通过选择概率最高的逻辑门,将得到的网络离散化为硬逻辑门网络。由于逻辑门是二值的,每个神经元/逻辑门只有两个输入(对于任何一个节点的两个“父节点”,通过随机初始化决定并在训练中不在改变)。由于具有签名f : { 0 , 1 } × { 0 , 1 } → { 0 , 1 } f : \{0,1\} \times \{0,1\} \rightarrow \{0,1\} f:{0,1}×{0,1}→{0,1}的函数总共有 16 种,每个神经元执行的操作信息可以仅用 4 位编码表示(见Table 1)。我们的目标是学习这些 16 种操作中哪一种对每个神经元来说是最优的。具体而言,对于每个神经元,我们通过 softmax 参数化一个关于可能逻辑门的概率分布。
相关信息
-
随着神经网络的成功,研究和工业界始终对如何使相关计算尽可能快速高效,尤其是在推理阶段,保持高度关注。为解决这一问题,已经提出了多种技术,包括降低计算精度 [1][2]、二值化网络 [3] 以及稀疏网络 [4]。在本研究中,我们尝试训练一种在计算机架构领域中广为人知的不同类型架构:逻辑门网络。
-
训练由离散组件(如逻辑门)组成的网络的主要挑战在于,这些组件通常是非可微的,因此传统方法(如梯度下降 [5])无法对其进行优化。一种替代方法是无梯度优化方法,如进化训练 [6][7],这适用于小型模型,但在处理较大的模型时会变得不可行。
-
在本研究中,我们提出了一种基于梯度的逻辑门网络训练方法(也称为算术/代数电路 [8][9])。逻辑门网络基于二值逻辑门,例如“与”(AND)和“异或”(XOR)(见表 1)。为了训练逻辑门网络,我们将其连续松弛为可微逻辑门网络,从而可以通过梯度下降高效地训练它们。在这一过程中,我们采用实值逻辑并学习在每个神经元中使用哪种逻辑门。具体而言,
对于每个神经元,我们学习一个关于逻辑门的概率分布。训练完成后,通过选择概率最高的逻辑门,将得到的网络离散化为硬逻辑门网络。由于硬逻辑门网络仅由逻辑门组成,其执行速度非常快。此外,由于逻辑门是二值的,每个神经元/逻辑门只有两个输入,因此这些网络是极度稀疏的。 -
需要强调的是,逻辑门网络并非二值神经网络。二值神经网络是一种低精度(相对于权重和/或激活值)的神经网络形式,其通过将权重和/或激活值减少为二值精度来实现。这类网络通常是稠密的,并且通常依赖于在连续域中训练的权重,随后将其离散化。与之相对,逻辑门网络没有权重,由于每个神经元只有两个输入,其本质上是稀疏的,并且不属于低精度神经网络的范畴。
-
它们还与当前的稀疏神经网络方法有所不同,因为我们的目标是学习每个神经元所使用的逻辑门运算符,而神经元之间的(无权重)连接是通过(伪)随机方式初始化的,并且在训练过程中保持固定。因此,该网络的参数化方式是通过为每个神经元选择逻辑门运算符/二元函数。由于具有签名 f : { 0 , 1 } × { 0 , 1 } → { 0 , 1 } f : \{0,1\} \times \{0,1\} \rightarrow \{0,1\} f:{0,1}×{0,1}→{0,1} 的函数总共有 16 种,每个神经元执行的操作信息可以仅用 4 位编码表示。
我们的目标是学习这些 16 种操作中哪一种对每个神经元来说是最优的。具体而言,对于每个神经元,我们通过 softmax 参数化一个关于可能逻辑门的概率分布。实验表明,这种方法使得能够通过梯度下降非常高效地学习逻辑门网络。 -
16 种函数如Table 1:算子、算子对应的实数函数、真值表

-
逻辑门网络支持极快的分类速度,例如在单核 CPU 上每秒处理超过一百万张图像(对于 MNIST 数据集,准确率超过 97.5%)。一个包含 n n n个神经元的层的计算成本为 O ( n ) O(n) O(n),且常数非常小(因为仅涉及布尔逻辑门运算)。相比之下,一个全连接层(包含 m m m 个输入神经元)的计算成本为 O ( n m ) O(nm) O(nm),且常数较大(因为需要执行浮点运算)。虽然训练逻辑门网络的成本可能比常规神经网络更高(但只是多出一个常数因子,且从渐近复杂度来看成本更低),据我们所知,该方法在推理阶段是目前可用架构中速度最快的。总体而言,与全连接 ReLU 神经网络相比,我们的方法在推理速度上提高了大约两个数量级。在实验中,我们将逻辑门网络的训练扩展到 500 万个参数的规模,这在与其他架构相比时仍然相对较小。与 MNIST 上最快的神经网络(达到 98.4% 准确率)相比,我们的方法比最佳二值神经网络快 12 倍以上,并且比稀疏神经网络的理论速度快 2 到 3 个数量级。
-
逻辑门网络是一类类似于神经网络的网络,其中每个神经元由一个二值逻辑门(如 “AND”、“NAND” 和 “NOR”)表示,并且每个神经元仅有两个输入(而非像全连接神经网络那样连接到前一层的所有神经元)。给定一个二值向量作为输入,选择布尔值的配对,对它们应用二值逻辑门操作,然后将其输出作为后续层的输入。逻辑门网络不使用权重,而是通过每个神经元的逻辑门选择进行参数化。与全连接神经网络相比,二值逻辑门网络是稀疏的,因为每个神经元只有 2 个输入,而不是每层的 n n n 个输入(其中 n n n 为每层神经元的数量)。此外,在逻辑门网络中不需要激活函数,因为它们本质上是非线性的。
-
虽然可以通过单个二值输出或 k k k 个二值输出为 k k k 个类别进行预测,但这种方法并不理想。这是因为在离散情况下,我们只能获得 0 或 1 的结果,无法提供梯度化的预测,而梯度化的预测对于“最大激活”分类方案是必要的。通过为每个类别使用多个神经元并通过求和进行聚合,即使在离散情况下,也可以实现分级预测,其分级水平与每个类别的神经元数量相等。每个神经元捕获该类别的一部分证据,从而实现更细粒度的预测。 图 1 展示了一个小型逻辑门网络。在图示中,每个节点对应一个逻辑运算符。需要注意的是,运算符上的分布(以红色标出)是下一部分讨论的可微松弛的一部分。由于逻辑门网络仅基于按位逻辑运算,其执行效率极高。
-
训练二值逻辑门网络是困难的,因为它们是不可微的,因此传统的基于梯度下降的训练方法无法应用。
因此,我们提出了一种方法,将逻辑门网络松弛为可微逻辑门网络,从而允许基于梯度的训练。 -
为了使二值逻辑门网络可微,我们采用了以下松弛方法。首先,代替硬二值激活值(即 0 或 1),我们将所有值松弛为概率激活值 a ∈ [ 0 , 1 ] a \in [0, 1] a∈[0,1]。其次,我们通过计算给定输入 a 1 a_1 a1 和 a 2 a_2 a2的独立概率时激活的期望值来替代逻辑门。例如,两个独立事件的概率 a 1 a_1 a1 和 a 2 a_2 a2 都发生的概率为 a 1 ⋅ a 2 a_1 \cdot a_2 a1⋅a2。这些运算符对应于概率论中的 T-norm 和 T-conorm 操作;我们在表 1 中报告了与概率解释相关的完整松弛集合。(此外,我们在附录 D 中的表 10 和表 11 中报告了与其他解释相关的替代松弛方法。)
-
因此,我们将第 i i i 个运算符对应的神经元激活定义为: a = f i ( a 1 , a 2 ) a = f_i(a_1, a_2) a=fi(a1,a2)其中, f i f_i fi 是与表 1 中定义的第 i i i 个实值运算符对应的操作, a 1 a_1 a1 和 a 2 a_2 a2是输入到神经元的值。此外,还有其他实值逻辑运算,例如 Hamacher T-(co)norm、相对论的爱因斯坦和以及 Łukasiewicz T-(co)norm。在本研究中,我们采用的是概率解释,但我们也回顾了可用于 SM D 的一系列 T-norm 和 T-conorm。
可微选择运算符
- 尽管实值逻辑允许进行微分,但它们并不允许训练,因为运算符不是连续参数化的,因此(在硬二值输入的情况下)网络中的激活值总是 0 或 1。为了解决这一问题,我们提出通过类别概率分布来表示每个神经元使用哪种逻辑门。为此,我们通过 16 个浮点值(即 w ∈ R 16 w \in \mathbb{R}^{16} w∈R16)对每个神经元进行参数化,这些浮动值通过 softmax 映射到概率单纯形(即类别概率分布,使得所有条目之和为 1,并且所有值均为非负数)。也就是说,
p i = e w i ∑ j e w j p_i = \frac{e^{w_i}}{\sum_j e^{w_j}} pi=∑jewjewi
- 因此, p p p 位于概率单纯形中,满足 ∑ i p i = 1 \sum_i p_i = 1 ∑ipi=1且 p i ≥ 0 p_i \geq 0 pi≥0。在训练过程中,我们为每个神经元评估所有 16 种松弛的二值逻辑门,并使用类别概率分布来计算它们的加权平均。因此,我们将一个可微逻辑门神经元的激活定义为:
a = ∑ i = 0 15 p i f i ( a 1 , a 2 ) = ∑ i = 0 15 e w i ∑ j e w j f i ( a 1 , a 2 ) a = \sum_{i=0}^{15} p_i f_i(a_1, a_2) = \sum_{i=0}^{15} \frac{e^{w_i}}{\sum_j e^{w_j}} f_i(a_1, a_2) a=i=0∑15pifi(a1,a2)=i=0∑15∑jewjewifi(a1,a2)
输出神经元的聚合
- 现在,我们可能有 n n n 个输出神经元 a 1 , a 2 , … , a n ∈ [ 0 , 1 ] a_1, a_2, \dots, a_n \in [0,1] a1,a2,…,an∈[0,1],但我们可能希望逻辑门网络只预测 k < n k < n k<n个值,并且这些值的范围大于 [ 0 , 1 ] [0,1] [0,1]。此外,我们可能希望能够生成分级输出。为此,我们可以将输出进行聚合,具体方式为:
y i = 1 T ∑ j = i i + k − 1 a j + δ y_i = \frac{1}{T} \sum_{j=i}^{i+k-1} a_j + \delta yi=T1j=i∑i+k−1aj+δ
- 其中, T T T 是归一化温度, δ \delta δ 是一个可选的偏移量。
1272

被折叠的 条评论
为什么被折叠?



