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