【Hinton论文精读】The Forward-Forward Algorithm: Some Preliminary Investigations-202212

0 引言

过去十几年,得益于GPU等算力硬件的大幅提升,深度学习显著进步,用大量参数和数据做随机梯度下降的方法已经被证明是有效的。而梯度下降使用的通常是反向传播算法对所有参数做全局更新,一直以来,尚未在大脑发现有反向传播可靠证据,所以是否有其它方式获得调整连接权重所需的梯度等问题备受关注。

在 NeurIPS 2022 大会上,Hinton 发表了题目为《The Forward-Forward Algorithm for Training Deep Neural Networks》的特邀演讲,论述了前向算法相比于反向算法的优越性。其论文《The Forward-Forward Algorithm: Some Preliminary Investigations》目前已上传至arxiv。

1 论文摘要

本文的目的是介绍一种新的神经网络学习方法,并证明它在几个小问题上工作得足够好,值得进一步研究。正向算法用两个正向通道代替反向传播的前向和向后传递,一个用正(即真实)数据,另一个用网络本身可以产生的负数据。每一层都有自己的目标函数,即对正数据有较高的优度(goodness),对负数据有较低的优度。一层中激活的平方和可以用作优点,但还有许多其他的可能性,包括减去激活的平方和。如果正通道和负通道可以在时间上分离,负通道可以离线进行,这将使正通道的学习更加简单,并允许视觉输入通过网络流水线,而不存储激活或停止传播的导数。

2 反向传播有什么问题呢?

  1. 没有切实证据可以证明,皮层传播误差导数或存储神经活动是用于后续的反向传播。 从一个皮层区域到视觉通路中较早的区域自上而下的连接,并不能反映出在视觉系统中使用反向传播时所预期的自下而上连接。相反,它们形成了循环,其中神经活动经过两个区域、大约六个皮层,然后回到它开始的地方。
    大脑通过时间的反向传播不太可能:为了在不频繁暂停的情况下处理感觉输入流,大脑需要通过感觉来处理的不同阶段传输数据,并且还需要一个可以即时学习的过程。管道后期表征可能会在后续时间里提供影响管道早期阶段表征的自上而下的信息,但感知系统需要实时进行推理和学习,而非暂时停止下来以进行反向传播。
  2. 反向传播的另一个严重限制是,它需要正向传递中执行的计算的中间值才能计算出正确的导数。 如果我们在正向传递中插入一个黑盒,就不可能执行反向传播,除非我们学习黑盒的可微模型。正如我们将看到的,黑盒根本不会改变正向算法的学习过程,因为不需要通过它进行反向传播。

在没有一个完美的前向传递模型的情况下,总是有可能诉诸多种形式的强化学习之一。其想法是对权重或神经活动进行随机扰动,并将这些扰动与回报函数的结果变化联系起来。但是强化学习过程存在很高的方差:当许多其他变量同时受到干扰时,很难看到干扰一个变量的影响。平均造成的噪声由所有其他扰动,学习速率需要成反比的变量的数量被干扰,这意味着强化学习的参数规模严重受限,不能像基于反向传播的大型网络一样可以包含数百万或数十亿参数。

本论文的重点是要表明,包含未知非线性的神经网络不需要采用强化学习。前向传播算法(FF)在速度上与反向传播算法相当,但其优点是在正向计算的精确细节未知时可以使用。它还有一个优点是,它可以在通过神经网络管道传输顺序数据时进行学习,而无需存储神经活动或停止传播误差导数。

不过,在功率受限的应用中,FF 算法还未能取代反向传播,比如对于在超大数据集上训练的超大模型,也还是以反向传播为主。

3 Forward-Forward算法

Forward-Forward算法是一种贪婪的多层学习程序,其灵感来自玻尔兹曼机和噪声对比估计
用两个前向传播代替反向传播的前向+后向传播,两个前向传播在不同数据和相反目标上,以完全相同的方式彼此操作。其中,正向通道对真实数据进行操作,并调整权重以增加每个隐藏层的goodness,反向通道调整 "负数据 "权重以减少每个隐藏层的goodness。本文探讨了两种不同的度量标准——神经正活动的平方之和,以及负活动的平方之和。

假设某层的goodness函数是该层中经过ReLU激活的神经元活动的平方和,学习目的是使其goodness远高于真实数据的某个阈值并远低于负数据的阈值。也即是说,在输入向量正确分类为正数据或负数据时,输入向量为正(即真实)的概率,可通过将逻辑函数 σ σ σ 应用于goodness减去某个阈值 θ θ θ
p ( p o s i t i v e ) = σ ( ∑ j y j 2 − θ ) p(\text positive) = σ(\sum_jy_j^2 − θ) p(positive)=σ(jyj2θ)
其中, y j y_j yj是 layer normalization前的隐藏单元 j 的活动。负数据可由神经网络自上而下连接进行预测,也可由外部提供。

3.1 使用逐层优化函数学习多层表示

很容易看出,可以通过使隐藏单元的活动平方和对正数据高而对负数据低来学习单个隐藏层。但当第一个隐藏层活动被用作第二个隐藏层的输入时,仅需适用第一个隐藏层的活动矢量长度,即可区分正负数据,无需学习新的特征。

为防止这种情况,FF 在将隐藏向量长度作为下一层的输入前,会对其进行归一化,删除所有用于确定第一个隐藏层中的信息,从而迫使下个隐藏层使用第一个隐藏层中神经元的相对活动信息,该相对活动不受层规范化的影响。也即是说,第一个隐藏层的活动向量具备一个长度和一个方向,长度用于定义该层的良性,只有方向被传递到下一层。

4 Forward-Forward算法的实验

4.1 反向传播baseline

文中大部分实验使用了手写数字的 MNIST 数据集:50000 个用于训练,10000 个用于搜索良好超参数期间的验证,10000 张用于计算测试错误率。经设计后具有几个隐藏层的卷积神经网络可得约 0.6% 的测试误差。

在任务 "排列不变 "版本中,神经网络没有得到有关像素空间布局的信息,若训练开始前,所有训练和测试图像都受相同像素随机变异影响,那么神经网络的表现也会同样良好。

对于这个任务“排列不变”版本,带有几个全连接隐层的整流线性单元(ReLU)的前馈神经网络测试误差大约在 1.4%,其中大约需要20个 epochs 来训练。使用各种正则器如 dropout(降低训练速度)或标签平滑(加快训练速度),可将测试误差降至 1.1% 左右。此外,还可通过将标签的监督学习与无监督学习相结合来进一步降低测试误差。

在不使用复杂的正则化器的情况下,任务“排列不变”版本的测试误差为 1.4%,这表明了其学习过程与反向传播一样有效。
在这里插入图片描述
图1:一个用作负数据的混合图像

4.2 FF算法的一个简单的无监督的例子

FF 有两个主要问题需要回答:如果有良好的负数据来源,它是否会学习有效的多层表示来捕获数据结构?负数据从何而来?

先使用手工负数据来回答第一个问题。将对比学习用于监督学习任务的常见方法是,在不使用任何有关标签信息的情况下,将输入向量转化为表示向量,学习将这些表示向量简单线性变换为使用的 logits 向量,在 softmax 中用来确定标签的概率分布。尽管具有明显的非线性,但这仍被称为线性分类器,当中 logits 向量的线性变换学习是有监督的,因不涉及学习任何隐藏层,无需导数的反向传播。FF 可通过使用真实数据向量作为正例、并使用损坏的数据向量作为负例来执行该表征学习。

为使 FF 专注表征形状图像的长期相关性,我们需要创建具有不同长期相关性、但非常相似的短期相关性的负数据,这可以通过创建一个包含相当大的 1 和 0 区域的掩码来完成。之后通过将一个数字图像与掩码相加,为负数据创建混合图像和一个不同的数字图像来乘以掩码的反面(图 1)。

通过随机位图开始创建蒙版,在水平和垂直方向上使用[1/4, 1/2, 1/4]形式的过滤器重复模糊图像,经反复模糊的图像阈值设为 0.5。在使用四个隐藏层(每个隐藏层包含 2000 个 ReLU)训练 100 个 epochs 后,若使用最后三个隐藏层的归一化活动向量作为 softmax 输入,可得到测试误差为1.37%。

此外,不使用完全连接层、而使用局部接受域(没有权重共享)可以提高性能,训练 60 个 epochs 的测试误差为 1.16%,该架构使用的 "对等归一化"可防止任何隐藏单元极度活跃或永久关闭。

4.3 FF算法的一个简单的监督例子

在不使用任何标签信息的情况下学习隐藏表征,对最终可能够执行各种任务的大模型来说非常明智:无监督学习提取了一大堆特征供各任务使用。但如果只对单任务感兴趣,并想使用一个小模型,那么监督学习会更适合。

监督学习中使用 FF 的一种方法是在输入中包含标签,正数据由具有正确标签的图像组成,而负数据由具有错误标签的图像组成,标签是二者间的唯一区别,FF 会忽略图像中与标签不相关的所有特征。

MNIST 图像中包含有黑色边框,可减轻卷积神经网络的工作压力。当使用标签的 N 个表征中的一个来替换前 10 个像素时,第一个隐藏层学习内容也会轻易显现。一个有 4 隐藏层的网络中,每个隐藏层包含 2000 个 ReLU,层与层之间的完全连接在 60 个 epochs 后,经 MNIST 其测试误差为 1.36%,反向传播要达到该测试性能需要大约 20 个 epochs。将 FF 学习率加倍并训练 40 个 epochs,可得到稍差的测试误差,为 1.46% 。

使用 FF 训练后,通过从包含测试数字和由 10 个 0.1 条目组成的中性标签的输入开始,由网络进行一次前向传递来对测试数字进行分类,之后,除第一个隐藏层外,其他所有隐藏活动用作在训练期间学习的 softmax 输入,这是一种快速次优的图像分类方法。最好的方式是使用特定标签作为输入的一部分来运行网络,并积累除第一个隐藏层以外的所有层的优点,在分别对每个标签执行此操作后,选择具有最高累积优度的标签。在训练过程中,来自中性标签的前向传递被用于挑选硬负标签,这使得训练需要约⅓ 的 epochs 。

通过每个方向将图像抖动最多的两个像素用于增加训练数据,从而为每个图像获得 25 种不同的偏移,当中使用了像素空间布局的知识,使其不再是排列不变的。这种用增强数据训练同个网络 500 个 epochs,测试误差可达到 0.64%,类似于用反向传播训练的卷积神经网络。如图 2,我们也在第一个隐藏层中得到了有趣的局部域。
在这里插入图片描述
图2:在抖动的MNIST上训练的网络第一隐藏层的100个神经元的接受域。类标签用每个图像的前10个像素表示。

4.4 使用FF算法来模拟感知中自上而下的效应

目前,所有图像分类案例都使用了一次学习一层的前馈神经网络,这意味着在后面层中学到的东西不会影响前面层的学习。这与反向传播相比似乎是个主要弱点,克服这种明显限制的关键是,将静态图像视为相当无聊的视频,由多层递归神经网络处理。

FF 对正数据和负数据都在时间上向前运行,但每层活动向量由上一层和下一层在前一个 time-steps 的归一化活动向量确定(图 3)。对这种方法是否有效进行初步检查,可以使用由静态 MNIST 图像组成的“视频”输入,该图像在每个时间帧中简单重复,底层是像素图像,顶层是数字类的 N 个表征之一,有两个或三个中间层,每层有 2000 个神经元。
在这里插入图片描述
图3:用于处理视频的循环网络。

在初步实验中,循环网络运行了 10 个 time-steps,每个 time-steps 的偶数层根据奇数层的标准化活动进行更新,奇数层根据新的标准化活动更新,其交替更新旨在避免双相振荡,但目前似乎并不需要:在有一点阻尼的情况下,基于前一个 time-steps 归一化状态,所有隐藏层的同步更新学习效果略好,这对不规则架构而言是有益的。因此,该处实验使用了同步更新,新的预归一化状态被设置为上个预归一化状态的 0.3 ,加上了计算新状态的 0.7。

如图 3,网络在 MNIST 上训练 60 个 epochs,对每个图像的隐藏层通过一次自下而上传递进行初始化。此后,网络运行 8 次带有阻尼的同步迭代,通过对 10 个标签中的每个标签运行 8 次迭代,并选择在第 3 到 5 次迭代中平均优度最高的标签来评估网络的测试数据性能,测试误差为 1.31%。负数据通过网络一次前向传递以获得所有类别的概率,根据概率按比例在不正确的类别间进行选择生成,从而提高训练效率。

4.5 作为教师使用空间环境的预测

循环网络中,其目标是令正数据的上层输入和下层的输入间保持良好的一致性,而负数据的一致性不好。具有空间局部连通性的网络中具备一个理想的属性:自上而下的输入将由图像更大的区域决定,并且有更多处理阶段的结果,因此它可以被视为对图像的上下文预测,也即是基于图像局部域自下而上的输入所应产出的结果。

如果输入随时间变化,自上而下的输入会基于较旧的输入数据,因此必须学习预测自下而上输入的表征。当我们反转目标函数的符号,并针对正数据进行低平方活动,自上而下的输入应学会抵消正数据的自下而上输入,这样看来与预测编码十分相似。层规范化意味着即使取消工作得很好,大量信息也会被发送到下一层,如果所有预测误差都很小,则会被归一化放大。

使用上下文预测作为局部特征并提取教学信号学习的想法长期存在,但难点在于,如何在使用空间上下文、而非单侧时间上下文的神经网络中工作。使用自上而下和自下而上输入的共识作为自上而下和自下而上权重的教学信号,这种方法明显会导致崩溃,而使用其他图像的上下文预测来创建负数对的问题也没有完全解决。其中,使用负数据而不是任何负内部表征似乎是关键。

4.6 CIFAR-10实验

该数据集有 50,000 张 32x32 的训练图像,每个像素具有三个颜色通道,因此,每个图像都有 3072 个维度。由于这些图像的背景复杂且高度地可变,并且在训练数据很有限的情况下无法很好地建模,除非隐藏层非常小,否则包含两到三个隐藏层的全连接网络在使用反向传播进行训练时会严重过拟合,因此,目前几乎所有研究的结果都是针对卷积网络的。

反向传播和 FF 都是用权重衰减来减少过拟合,Hinton 对两种方法训练的网络性能进行了比较。对于 FF 训练的网络,测试方法是使用单个前向传播,或者让网络对图像和 10 个标签中的每一个运行 10 次迭代,并在第 4 到 6 次迭代中累积标签的能量(即基于优度的错误是最低时)。

结果,虽然 FF 的测试性能比反向传播差,但只稍微差了一点。同时,二者间的差距不会随着隐藏层的增加而增加。不过,反向传播可以更快地减少训练误差。

在序列学习上,Hinton 也通过预测序列中下一个字符的任务证明了用 FF 训练的网络比反向传播更好。用 FF 训练的网络可以生成自己的负数据,更符合生物学。
在这里插入图片描述
表1:使用具有大小为11x11和2或3个隐藏层的非卷积网络在CIFAR-10上进行反向传播和FF的比较。一个版本的FF被训练为使积极情况下活动的平方和最大化。另一个版本被训练以最小化它,这就给出了稍微更好的测试性能。经过FF训练后,单次向前通过网是一种快速但次优的图像分类方法。最好使用一个特定的标签作为顶级输入来运行网络,并记录中间迭代中的平均goodness。在对每个标签分别这样做之后,选择效果最高的标签。对于大量的标签,可以使用一个正向传递来获得一个需要更彻底地评估的标签的候选列表。

5 睡眠

如果正数据是在清醒时处理的,而负数据是由网络本身产生并在睡眠时处理的,那么FF将更容易在大脑中实现。在这篇论文的早期草稿中,我报告说,可以对正数据进行多次更新,然后对由网络本身产生的负数据进行多次更新,而性能损失很小。我使用的例子是从前10个字符窗口中预测序列中的下一个字符。使用离散符号而不是实值图像,使它更容易从模型中生成序列。我一直无法复制这个结果,现在我怀疑这是由于一个错误。使用活动的平方和作为优度函数,只有在学习率非常低且动量非常高时,在正数据数千次和负数据数千次的权重更新之间交替有效。有可能一个不同的优度函数允许学习的积极和消极阶段被分离,但这还有待证明,这可能是FF作为一种生物模型最重要的突出问题。如果有可能将积极的阶段和消极的阶段分开,那么看看消除消极阶段的更新一段时间,是否会导致模拟严重睡眠剥夺的毁灭性影响,这将是很有趣的。

6 FF算法与其他对比性学习技术之间的关系

6.1 与玻尔兹曼机器的关系

在20世纪80年代早期,有两种很有前途的深度神经网络学习方法。一个是反向传播,另一个是玻尔兹曼机(Hinton and Sejnowski, 1986),它执行无监督的对比学习。玻尔兹曼机是一个由随机二元神经元组成的网络,它们在两个方向上都具有相同的权重。当它在没有外部输入的情况下自由运行时,玻尔兹曼机将每个二进制神经元反复更新,将其设置为开启状态,其概率等于它从其他活动神经元接收到的总输入的逻辑。这个简单的更新过程最终从平衡分布中采样,在平衡分布中,每个全局配置(向所有神经元分配二元状态)都有与负能量成正比的对数概率。负能量只是在该配置中所有正在开启的神经元对之间的权值之和。

玻尔兹曼机中的一个神经元子集是“可见的”,将二进制数据向量通过夹在可见的神经元上,然后让它反复更新其余隐藏神经元的状态,从而呈现给网络。玻尔兹曼机学习的目的是使当网络自由运行时,可见神经元上的二值向量的分布与数据分布相匹配。非常令人惊讶的是,在热平衡下自由运行的玻尔兹曼机在可见神经元上显示的数据分布和模型分布之间的KL散度有一个非常简单的导数w.r.t.任何权重, w i j w_{ij} wij在网络中:
∂ KL ( P d a t a ∣ ∣ P m o d e l ) ∂ w i j = < s i s j > d a t a − < s i s j > m o d e l \frac{\partial \text{KL}(P_{data}||P_{model})}{\partial w_{ij}} = <s_is_j>_{data} - <s_is_j>_{model} wijKL(Pdata∣∣Pmodel)=<sisj>data<sisj>model
其中角括号表示热平衡时随机波动的期望,以及第一项的数据。
这个结果令人兴奋的地方在于,它给出了网络深处权重的导数,而无需显式传播误差导数。它在清醒和睡眠两个不同阶段传播神经活动。

但是,要在数学上使得学习规则最够简洁,代价会非常高。它需要一个深度玻尔兹曼机来接近其平衡分布,那么它就无法作为一种切合实际的机器学习技术,作为一种皮层学习模型也不可信:因为大型网络在感知过程中没有时间接近其平衡分布。而且,没有证据表明皮层连接的详细对称性,也没有明显的方法来学习序列。此外,如果权重的许多正更新后跟随着大量负更新,且负阶段对应于快速眼动睡眠,那玻尔兹曼机器学习程序就会失败。

但尽管存在以上缺点,玻尔兹曼机仍是一种很聪明的学习方法,因为它用两个工作原理相同但在可见神经元上具有不同边界条件的迭代设置(即限制在数据上 vs. 不予限制),取代了反向传播的前向和后向传递。

玻尔兹曼机可以看作是两种思想的结合:

  1. 通过最小化真实数据上的自由能(free energy)和最大化负数据上的自由能来学习网络本身产生的数据。
  2. 使用 Hopfield 能量作为能量函数,并使用重复随机更新从能量函数定义的玻尔兹曼分布中采样全局配置。

第一种关于对比学习的思路可以与许多其他能量函数一起使用。例如,使用前馈神经网络的输出来定义能量,然后通过该网络使用反向传播来计算能量对权重和可见状态的导数。然后通过跟踪能量对可见状态的导数来生成负数据。另外,负数据不必通过从能量函数定义的玻尔兹曼分布中采样数据向量来产生,不从均衡分布中采样,也能提高具有单个隐藏层的玻尔兹曼机的学习效率。

在 Hinton 看来,等式 2 的数学简洁性以及随机更新过程对所有可能的隐藏配置做贝叶斯积分,这个过程实在非常优雅,所以,用只需要传播神经活动的两个解决方案来代替反向传播的前向+反向传播这种想法,仍然与马尔可夫链蒙特卡罗(Markov Chain Monte Carlo)的复杂性纠缠在一起。

FF将来自玻尔兹曼机的对比学习与一个简单的局部优度函数相结合,该函数远比二元随机神经元网络的自由能更容易处理。

6.2 与GAN的关系

GAN(生成对抗网络)使用多层神经网络生成数据,并使用多层判别网络来训练其生成模型,使其相对于生成模型输出给出导数,且该导数是真实数据而非生成数据的概率

GAN 很难训练,因为判别模型和生成模型相互对抗。GAN 能生成非常漂亮的图像,但会遭受模式崩溃的困扰:可能会存在大片从不生成示例的图像空间区域。而且它使用反向传播来适应每个网络,因此我们很难看出如何在皮质中实现它们。

FF 可以看作是 GAN 的一个特例,其中判别网络的每个隐藏层对输入的正负都会自己做贪心决策,因此不需要反向传播来学习判别模型和生成模型,因为它不是学习自己的隐藏表示,而是重用判别模型学习的表示。

生成模型唯一需要学习的是如何将这些隐藏的表示转换为生成的数据,如果使用线性变换来计算 softmax 的对数,则不需要反向传播。对两个模型使用相同的隐藏表示的一个优点,是它消除了当一个模型相对于另一个模型学习太快时出现的问题,还避免了模式崩溃。

6.3 与比较两种不同图像作物表示的对比方法的关系

像 SimCLR 这类自监督对比方法,是通过优化一个目标函数来学习,该函数能够支持对同一图像的两种不同剪裁的表示之间的一致性,以及来自两幅不同图像的剪裁的表示之间的不一致性。

这类方法通常使用许多层来提取剪裁的表示,并通过反向传播目标函数的导数来训练这些层。如果两种剪裁总是以完全相同的方式重叠,它们就不起作用,因为这样它们就可以简单地报告共享像素的强度并获得完美的一致性。

但在真实的神经网络中,测量两个不同表示之间的一致性并非易事,且没办法使用相同的权重同时提取两种剪裁的表示。

而 FF 使用不同的方式来衡量一致性,这对于真实的神经网络来说似乎更容易。

许多不同的信息来源为同一组神经元提供输入。如果来源就激活哪些神经元达成一致,将产生正干扰,从而导致高平方活动,如果它们有分歧,则平方活动将降低。通过使用正干扰来测量一致性比比较两个不同的表示向量要灵活得多,因为不需要将输入任意分成两个单独的源。

SimCLR 这类方法的一个主要弱点是大量计算用于推导两个图像裁剪的表示,但目标函数仅对表示提供适度的约束,这限制了有关域的信息的速率可以注入权重。为了使剪裁的表示更接近其正确的配对而非替代品,只需要 20 比特信息。FF 的问题更严重,因为它只需要 1 比特来区分正例和负例。

解决这种约束贫乏的方法是将每一层分成许多小块,并强制每个块分别使用其预归一化活动向量的长度来决定正例和负例。然后,满足约束所需的信息随块数线性缩放,这比在类似 SimCLR 的方法中使用更大的对比度集实现的对数缩放要好得多。

6.4 堆叠对比学习的一个问题

学习多层表示的一种无监督方法,是首先学习一个隐藏层,该隐藏层捕获数据中的某些结构,然后将该层中的活动向量视为数据、并再次应用相同的无监督学习算法。这就是使用受限玻尔兹曼机 (RBM)或堆栈自编码器(stacked autoencoder)学习多层表示的方式。

但它有一个致命的缺陷。假设我们通过随机权重矩阵映射一些随机噪声图像。生成的活动向量将具有由权重矩阵创建的相关结构,与数据无关。当将无监督学习应用于这些活动向量时,它会发现其中的一些结构,但这不会告诉系统任何关于外部世界的信息。

最初的玻尔兹曼机器学习算法旨在通过对比由两种不同外部边界条件引起的统计数据来避免此缺陷。这抵消了所有只是网络其他部分的结果的结构。在对比正负数据时,无需限制布线,也不要求剪裁之间具有随机空间关系以防止网络作弊。这样便很容易获得大量相互连接的神经元组,每个神经元组都有自己的目标即区分正数据和负数据。

7 快速与慢速学习

如果层之间存在完全的连通性,则可以证明,当输入向量为x时,用于改变特定输入向量x的一个层的优度函数的权值更新对该层的层归一化输出没有影响。隐神经元j的传入权值的增量向量为
∆ w j = 2 ε ∂ log ⁡ ( p ) ∂ ∑ y j 2 y j x ∆w_j = 2\varepsilon \frac {∂\log (p)} {∂\sum y_j^2} y_j x wj=2εyj2log(p)yjx
式中, y j y_j yj为层归一化前ReLU的活动度, w j w_j wj为神经元j传入权值的向量, ε \varepsilon ε为学习速率。
在权值更新后,神经元j活动的变化只是标量积 ∆ w j x ∆w_jx wjx。在权重更新引起的活动变化中,唯一依赖于j的项是 y j y_j yj,所以所有隐藏的活动都以相同的比例变化,权重更新不会改变活动向量的方向。
这个事实表明,权重更新不会改变该输入向量对应的层标准化输出,这意味着可以在许多不同的层上同时进行在线权重更新,因为早期层的权重更新不会改变后续层对于该输入向量的活动向量。可以一次性改变所有权重,以便每一层都能精确地为输入向量x实现所需的S*的优良度。
假设输入向量和所有的层归一化隐藏向量的长度都为1,则达到这一点的学习率为:
ε = S ∗ S L − 1 \varepsilon = \sqrt {\frac{S^*}{S_L}} -1 ε=SLS 1
其中, S L S_L SL为层归一化前层L当前活动的平方和。

目前,我们还没有利用前馈(FF)这个有趣的属性,因为我们仍然使用小批量数据进行训练,但是深度神经网络能够通过跳跃到一组完美处理单个训练案例的权重,吸收大量信息的能力,可能会引起那些厌倦了缓慢梯度下降的心理学者的兴趣。

与反向传播不同,如果我们在FF训练的层之间插入一个黑盒,FF学习不会有问题。这个黑盒对一层的输出应用一个未知的、可能是随机的变换,并将这个变换后的活性向量作为输入呈现给下一层。一个有趣的可能性是让这些黑盒成为只有几个隐藏层的神经网络。如果这些隐藏层学习速度非常慢,那么“外循环”FF学习可以在假设黑盒是静止的情况下,快速适应新数据。黑盒中的慢速学习随后可以在更长的时间尺度上改善系统。例如,一个缓慢的强化学习过程可以向黑盒内的神经元输入添加小的随机噪声向量,然后将这些活性扰动向量乘以FF正相成本函数的变化,以获得关于FF成本函数相对于黑盒内神经元活性的导数的嘈杂但无偏的估计(Ren等人,2022年)。

8 FF与模拟硬件的相关性

将活动向量乘以权重矩阵的一种节能方式是将活动实现为电压,将权重实现为电导。它们按单位时间的乘积是电荷,这些电荷会自行累加。这似乎比以高功率驱动晶体管来模拟数字表示的数字中的每个比特,然后执行 O ( n 2 ) O(n^2) O(n2) 次单比特操作来乘以两个 n 位数字要合理得多。不幸的是,以同样高效的方式实现反向传播过程是困难的,因此人们不得不求助于使用模数转换器和数字计算来计算梯度(Kendall等人,2020年)。使用两次前向传播而不是一次前向传播和一次后向传播应该可以使得这些模数转换器变得不必要。

9 可朽计算(Mortal Computation)

他指出,目前的通用数字计算机被设计为忠实地遵循指令,人们认为让通用计算机执行特定任务的唯一方法,就是编写一个程序,以极其详细的方式准确指定要做的事。

主流的想法仍然是坚持软件应该与硬件分离,以便相同的程序或相同的权重集可以在硬件的不同物理副本上运行。这就会使得程序或权重中包含的知识变得“不朽”:即硬件死亡时,知识不会随之消亡。

但这已经不再成立,研究界还未充分理解深度学习对计算机构建方式的长期影响。

软件与硬件的分离是计算机科学的基础之一,它的确带来了很多好处,如可以研究程序的特性而不必关心电气工程,而且它使得编写一次程序、并将其复制到数百万台计算机成为可能。但 Hinton 指出:

如果我们愿意放弃这种“不朽”,就可以大大节省执行计算所需的能量以及制造执行计算的硬件的成本。

这样一来,执行相同任务的不同硬件实例在连接性和非线性上就有可能发生较大的变化,并从学习过程中发现有效利用每个特定实例的未知属性的参数值硬件。这些参数值仅对特定的硬件实例有用,因此它们执行的计算是并非不朽,而是会随硬件一起消亡。

将参数值复制到工作方式不同的不同硬件本身的确没有任何意义,但我们可以用一种更生物学的方法可以将一个硬件学到的东西转移到另一个硬件。对于图像中对象分类这样的任务,我们真正感兴趣的是将像素强度与类标签相关联的函数,而不是在特定硬件中实现该函数的参数值。

函数本身可以通过使用蒸馏转移到不同的硬件:训练新硬件不仅给出与旧硬件相同的答案,而且输出相同的概率对于不正确的答案。这些概率更丰富地表明了旧模型如何概括,而不仅仅是它认为最有可能的标签。因此,通过训练新模型来匹配错误答案的概率,我们正在训练它以与旧模型相同的方式进行概括。这样的神经网络训练实际上优化了泛化性,这个例子十分罕见。

如果想让一个万亿参数神经网络只消耗几瓦特,非永生计算可能是唯一的选择。它的可行性取决于,我们能否找到一种可以在精确细节未知的硬件中高效运行的学习过程,在 Hinton 看来,FF 算法就是一个很有前途的方案,只是它在扩展到大型神经网络时的表现还有待观察。

10 未来的工作

对于前馈-前馈(FF)算法的研究才刚刚开始,还有许多未解决的问题:

  1. FF 能否生成足够好的图像或视频生成模型来创建无监督学习所需要的负数据?
  2. 如果负向传递在睡眠期间完成,正向和负向传递能否可以在时间上非常广泛地区分开来?
  3. 如果负相位被消除了一段时间,其效果是否与严重睡眠剥夺的破坏性影响相似?
  4. 使用什么哪种 goodness函数最好?本文在大多数实验中使用活动平方和,但最小化正数据的活动平方和和最大化负数据的活动平方和似乎效果稍好一些。
  5. 使用哪种激活函数最理想?到目前为止,只探索了ReLU。在FF的背景下,还有许多其他可能性的行为尚未被探索。将激活设为t分布下密度的负对数是一个有趣的可能性。
  6. 对于空间数据,FF 是否可以从图像不同区域的大量局部优化函数中获益?如果可行,就能加快学习速度。
  7. 对于顺序数据,是否可以使用快速权重来模拟简化的转换器?
  8. FF能否从拥有一组尝试最大化其平方活动的特定特征检测器,以及一组尝试最小化其平方活动的违规检测器中受益?

11 参考资料

[1]. The Forward-Forward Algorithm: Some Preliminary Investigations, 2022.12
[2].论文的pytorch开源实现:https://github.com/pytorch/examples/blob/main/mnist_forward_forward/main.py

  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值