Hinton最新研究:神经网络的未来是前向-前向算法|NeurIPS 2022特邀演讲

简介: Hinton最新研究:神经网络的未来是前向-前向算法|NeurIPS 2022特邀演讲

Hinton最新研究:神经网络的未来是前向-前向算法|NeurIPS 2022特邀演讲

新智元新智元 2022-12-08 13:08 发表于北京



 新智元报道  

作者:AI科技评论(李梅、黄楠)编辑:好困

【新智元导读】在未来万亿参数网络只消耗几瓦特的新型硬件上,FF 是最优算法。


过去十年,深度学习取得了惊人的胜利,用大量参数和数据做随机梯度下降的方法已经被证明是有效的。而梯度下降使用的通常是反向传播算法,所以一直以来,大脑是否遵循反向传播、是否有其它方式获得调整连接权重所需的梯度等问题都备受关注。

图灵奖得主、深度学习先驱 Geoffrey Hinton 作为反向传播的提出者之一,在近年来已经多次提出,反向传播并不能解释大脑的运作方式。相反,他正在提出一种新的神经网络学习方法——前向-前向算法(Forward‑Forward Algorithm,FF)。在最近的 NeurIPS 2022 大会上,Hinton 发表了题目为《The Forward-Forward Algorithm for Training Deep Neural Networks》的特邀演讲,论述了前向算法相比于反向算法的优越性。论文的初稿《The Forward-Forward Algorithm: Some Preliminary Investigations》已经放在了其多伦多大学的主页上:

论文地址:https://www.cs.toronto.edu/~hinton/FFA13.pdf与反向传播算法使用一个前向传递+一个反向传递不同,FF 算法包含两个前向传递,其中一个使用正(即真实)数据,另一个使用网络本身生成的负数据。Hinton 认为,FF 算法的优点在于:它能更好地解释大脑的皮层学习,并且能以极低的功耗模拟硬件。Hinton提倡应放弃软硬件分离的计算机形态,未来的计算机应被设计为「非永生的」(mortal),从而大大节省计算资源,而 FF 算法正是能在这种硬件中高效运行的最佳学习方法。这或许正是未来解决万亿参数级别的大模型算力掣肘的一个理想途径。

FF 算法比反向算法:更能解释大脑、更节能

在 FF 算法中,每一层都有自己的目标函数,即对正数据具有高优度,对负数据具有低优度。层中活动平方和可用作优度,此外还包括了诸多其他的可能性,例如减去活动平方和等。

如果可以及时分离正负传递,则负传递可以离线完成,正传递的学习也会更加简单,并且允许视频通过网络进行传输,而无需存储活动或终止传播导数。Hinton 认为,FF 算法在两个方面优于反向传播:一,FF 是解释大脑皮层学习的更优模型;二,FF 更加低耗能,它使用极低功耗模拟硬件而不必求助于强化学习。没有切实证据可以证明,皮层传播错误导数或存储神经活动是用于后续的反向传播。从一个皮层区域到视觉通路中较早的区域自上而下的连接,并不能反映出在视觉系统中使用反向传播时所预期的自下而上连接。相反,它们形成了循环,其中神经活动经过两个区域、大约六个皮层,然后回到它开始的地方。作为学习序列的方式之一,通过时间的反向传播可信度并不高。为了在不频繁暂停的情况下处理感觉输入流,大脑需要通过感觉来处理的不同阶段传输数据,并且还需要一个可以即时学习的过程。管道后期表征可能会在后续时间里提供影响管道早期阶段表征的自上而下的信息,但感知系统需要实时进行推理和学习,而非停止进行反向传播。这当中,反向传播的另一个严重限制在于,它需要完全了解前向传播执行的计算才能推出正确的导数。如果我们在前向传播中插入一个黑盒,除非学习黑盒的可微分模型,否则反向传播无法执行。黑盒不会对 FF 算法的学习过程造成影响,因为不需要通过它进行反向传播。当没有完美的正向传播模型时,我们可以从多种强化学习方式中入手。其中的一个想法是,对权重或神经活动进行随机扰动,并将这些扰动与由此产生的收益函数变化相关联。但由于强化学习中存在高方差问题:当其他变量同时受到扰动时,很难看到扰动单个变量的效果。为此,要平均掉由所有其他扰动引起的噪声,学习率需要与被扰动的变量数量成反比,这就意味着强化学习的扩展性很差,无法与包含数百万或数十亿大型网络的反向传播竞争参数。而 Hinton 的观点是,包含未知非线性的神经网络不需要求助于强化学习。FF 算法在速度上可与反向传播相媲美,其优点是可以在前向计算精确细节未知的情况下进行使用,还可以在神经网络对顺序数据进行管道处理时进行学习,无需存储神经活动或终止传播误差导数。不过,在功率受限的应用中,FF 算法还未能取代反向传播,比如对于在超大数据集上训练的超大模型,也还是以反向传播为主。

前向-前向算法

前向-前向算法是一种贪婪的多层学习程序,其灵感来自玻尔兹曼机和噪声对比估计。用两个前向传播代替反向传播的前向+后向传播,两个前向传播在不同数据和相反目标上,以完全相同的方式彼此操作。其中,正向通道对真实数据进行操作,并调整权重以增加每个隐藏层的好感度,反向通道调整「负数据」权重以减少每个隐藏层的好感度。本文探讨了两种不同的度量标准——神经活动的平方之和,以及负活动的平方之和。假设某层的优度函数是该层中经过整流的线性神经元活动的平方和,学习目的是使其优度远高于真实数据的某个阈值、并远低于负数据的阈值。也即是说,在输入向量正确分类为正数据或负数据时,输入向量为正(即真实)的概率,可通过将逻辑函数 σ 应用于优度减去某个阈值 θ:其中,是层归一化前隐藏单元 j 的活动。负数据可由神经网络自上而下连接进行预测,也可由外部提供。

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

很容易看出,可以通过使隐藏单元的活动平方和,对正数据高而对负数据低来学习单个隐藏层。但当第一个隐藏层活动被用作第二个隐藏层的输入时,仅需适用第一个隐藏层的活动矢量长度,即可区分正负数据,无需学习新的特征。为防止这种情况,FF 在将隐藏向量长度作为下一层的输入前,会对其进行归一化,删除所有用于确定第一个隐藏层中的信息,从而迫使下个隐藏层使用第一个隐藏层中神经元的相对活动信息,该相对活动不受层规范化的影响。也即是说,第一个隐藏层的活动向量具备一个长度和一个方向,长度用于定义该层的良性,只有方向被传递到下一层。

有关 FF 算法的实验

反向传播基线

文中大部分实验使用了手写数字的 MNIST 数据集:50000 个用于训练,10000 个用于搜索良好超参数期间的验证,10000 张用于计算测试错误率。经设计后具有几个隐藏层的卷积神经网络可得约 0.6% 的测试误差。在任务「排列不变」版本中,神经网络没有得到有关像素空间布局的信息,若训练开始前,所有训练和测试图像都受相同像素随机变异影响,那么神经网络的表现也会同样良好。对于这个任务「排列不变」版本,带有几个全连接隐层的整流线性单元(ReLU)的前馈神经网络测试误差大约在 1.4%,其中大约需要20个 epochs 来训练。使用各种正则器如 dropout(降低训练速度)或标签平滑(加快训练速度),可将测试误差降至 1.1% 左右。此外,还可通过将标签的监督学习与无监督学习相结合来进一步降低测试误差。在不使用复杂的正则化器的情况下,任务「排列不变」版本的测试误差为 1.4%,这表明了其学习过程与反向传播一样有效。

图1:用作负数据的混合图像

无监督 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%,该架构使用的「对等归一化」可防止任何隐藏单元极度活跃或永久关闭。

监督学习 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 个像素中

使用 FF 模拟自上而下的感知效应

目前,所有图像分类案例都使用了一次学习一层的前馈神经网络,这意味着在后面层中学到的东西不会影响前面层的学习。这与反向传播相比似乎是个主要弱点,克服这种明显限制的关键是,将静态图像视为相当无聊的视频,由多层递归神经网络处理。FF 对正数据和负数据都在时间上向前运行,但每层活动向量由上一层和下一层在前一个 time-steps 的归一化活动向量确定(图 3)。对这种方法是否有效进行初步检查,可以使用由静态MNIST图像组成的「视频」输入,该图像在每个时间帧中简单重复,底层是像素图像,顶层是数字类的 N 个表征之一,有两个或三个中间层,每层有 2000 个神经元。在初步实验中,循环网络运行了 10 个 time-steps,每个 time-steps 的偶数层根据奇数层的标准化活动进行更新,奇数层根据新的标准化活动更新,其交替更新旨在避免双相振荡,但目前似乎并不需要:在有一点阻尼的情况下,基于前一个 time-steps 归一化状态,所有隐藏层的同步更新学习效果略好,这对不规则架构而言是有益的。因此,该处实验使用了同步更新,新的预归一化状态被设置为上个预归一化状态的 0.3 ,加上了计算新状态的 0.7。

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

使用空间上下文的预测

循环网络中,其目标是令正数据的上层输入和下层的输入间保持良好的一致性,而负数据的一致性不好。具有空间局部连通性的网络中具备一个理想的属性:自上而下的输入将由图像更大的区域决定,并且有更多处理阶段的结果,因此它可以被视为对图像的上下文预测,也即是基于图像局部域自下而上的输入所应产出的结果。如果输入随时间变化,自上而下的输入会基于较旧的输入数据,因此必须学习预测自下而上输入的表征。当我们反转目标函数的符号,并针对正数据进行低平方活动,自上而下的输入应学会抵消正数据的自下而上输入,这样看来与预测编码十分相似。层规范化意味着即使取消工作得很好,大量信息也会被发送到下一层,如果所有预测误差都很小,则会被归一化放大。使用上下文预测作为局部特征并提取教学信号学习的想法长期存在,但难点在于,如何在使用空间上下文、而非单侧时间上下文的神经网络中工作。使用自上而下和自下而上输入的共识作为自上而下和自下而上权重的教学信号,这种方法明显会导致崩溃,而使用其他图像的上下文预测来创建负数对的问题也没有完全解决。其中,使用负数据而不是任何负内部表征似乎是关键。



相关文章
|
26天前
|
机器学习/深度学习 存储 算法
神经网络分类算法原理详解
神经网络分类算法原理详解
49 0
|
30天前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
223 1
|
1月前
|
机器学习/深度学习 算法 计算机视觉
|
11天前
|
机器学习/深度学习 算法
【MATLAB】GA_ELM神经网络时序预测算法
【MATLAB】GA_ELM神经网络时序预测算法
282 9
|
11天前
|
机器学习/深度学习 数据采集 算法
|
14天前
|
机器学习/深度学习 自然语言处理 算法
|
30天前
|
机器学习/深度学习 算法 Python
LSTM(长短期记忆)网络的算法介绍及数学推导
LSTM(长短期记忆)网络的算法介绍及数学推导
18 0
|
1月前
|
负载均衡 算法 应用服务中间件
Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/5)
Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/5)
111 0
|
2月前
|
机器学习/深度学习 算法 PyTorch
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
46 0
|
6月前
|
机器学习/深度学习 监控 算法
【tensorflow】连续输入的神经网络模型训练代码
【tensorflow】连续输入的神经网络模型训练代码

热门文章

最新文章