新闻  |   论坛  |   博客  |   在线研讨会
75岁Hinton中国大会最新演讲「通往智能的两种道路」,最后感慨:我已经老了,未来交给年轻人(2)
机器之心 | 2023-06-12 21:09:57    阅读:162   发布文章

可朽计算面临的问题:反向传播不可用


在特定硬件上执行可朽计算的学习时,就需要让程序学习利用该硬件的特定模拟属性,但它们无需知道这些属性究竟是什么。举个例子,它们无需知道究竟神经元的内部连接方式究竟是怎样的,该神经元的输入和输出又是通过什么函数关联起来的。


图片


这意味着我们不能使用反向传播算法来获取梯度,因为反向传播需要一个确切的前向传播模型。


那么既然可朽计算不能使用反向传播,我们又该怎么做呢?下面来看看在模拟硬件上执行的一个简单学习过程,其中用到的方法称为权重扰动。


图片


首先,为网络中的每个权重生成一个随机向量,该向量由随机的小扰动构成。然后,基于一个或少量样本,测量全局目标函数在使用这个扰动向量后的变化情况。最后,根据目标函数的提升情况,将该扰动向量带来的效果按比例尺度永久化到权重之中。


这个算法的优点是其大致上的行为模式与反向传播一致,同样遵循梯度。但问题是它具有非常高的方差。因此,当网络规模增大时,在权重空间中选择随机移动方向时所产生的噪声会很大,让这个方法难以为继。这就意味着这种方法仅适用于小型网络,不适用于大型网络。


图片


另一种方法是活动扰动,虽然它也存在类似的问题,但也能更好地用于更大型的网络。


图片


活动扰动方法是要用随机向量对每个神经元的整体输入执行扰动,然后在一小批样本下观察目标函数的变化情况,再计算如何改变该神经元的权重以遵循梯度。


与权重扰动相比,活动扰动的噪声要小得多。并且这种方法已经足以学习 MNIST 这样的简单任务。如果你使用非常小的学习率,那么它的行为就与反向传播完全一样,但速度要慢得多。而如果学习率较大,那么噪声会很多,但也足够应对 MNIST 这样的任务。


但是如果我们的网络规模还要更大呢?Hinton 提到了两种方法。


第一种方法是使用巨量目标函数,也就是说不使用单个函数来定义大型神经网络的目标,而是使用大量函数来定义网络中不同神经元集团的局部目标。


图片


这样一来,大型神经网络就被化整为零,我们就能使用活动扰动来学习小型的多层神经网络。但问题来了:这些目标函数从何而来?


图片


其中一种可能性是在不同层级的局部图块上使用无监督对比学习。其工作方式是这样的:一个局部图块有多个表示层级,在每个层级,该局部图块会尽力与同一图像的所有其它局部图块产生的平均表示保持一致;与此同时,还要尽力与其它图像在该层级的表示保持差异。


Hinton 表示该方法在实践中的表现很不错。大概的做法是让每个表示层级都具有多个隐藏层,这样可以进行非线性的操作。这些层级使用活动扰动来进行贪婪学习并且不会反向传播到更低层级。由于它不能像反向传播那样传递很多层,因此不会像反向传播那样强大。


实际上这正是 Hinton 团队近些年最重要的研究成果之一,详情可参阅机器之心的报道《放弃反向传播后,Geoffrey Hinton 参与的前向梯度学习重磅研究来了》。


图片


Mengye Ren 通过大量研究表明该方法是能够在神经网络中实际生效的,但操作起来却很复杂,实际效果也还赶不上反向传播。如果大型网络的深度更深,那么它与反向传播的差距还会更大。


Hinton 表示这个能利用模拟属性的学习算法只能说还算 OK,足以应对 MNIST 这样的任务,但也并不是真正好用,比如在 ImageNet 任务上的表现就不是很好。


可朽计算面临的问题:知识的传承


可朽计算面临的另一个主要问题是难以保证知识的传承。由于可朽计算与硬件高度相关,因此无法通过复制权重来复制知识,这就意味着当特定的硬件「死去」时,其学习到的知识也会一并消失。


Hinton 说解决该问题的最好方法是在硬件「死去」之前,将知识传递给学生。这类方法被称为知识蒸馏(knowledge distillation),这一概念是 Hinton 在 2015 年与 Oriol Vinyals 和 Jeff Dean 合著的论文《Distilling the Knowledge in a Neural Network》中最早提出的。


图片


这一概念的基本思路很简单,就类似于教师教授学生知识:教师向学生展示不同输入的正确响应,学生尝试模仿教师的响应。


Hinton 使用了美国前总统特朗普发推文为例来进行直观的说明:特朗普发推时常常会对各种事件做出非常情绪化的回应,这会促使其追随者改变自己的「神经网络」,从而产生同样的情绪反应;这样一来,特朗普就将偏见蒸馏到了其追随者的头脑中,就像「邪教」——Hinton 很显然并不喜欢特朗普。


知识蒸馏方法的效果如何呢?考虑到特朗普拥趸众多,效果应该不会差。Hinton 使用了一个例子进行解释:假设一个智能体需要将图像归类到 1024 个互不重叠的类别。


图片


要指认出正确答案,我们只需要 10 比特信息。因此,要训练该智能体正确识别一个特定样本,只需要提供 10 比特信息来约束其权重即可。


但假如我们训练一个智能体使之与一个教师在这 1024 个类别上的概率大致保持一致呢?也就是说,使该智能体的概率分布与该教师一样。这个概率分布有 1023 个实数,如果这些概率都不是很小,那么其提供的约束就增多了几百倍。


图片


为了确保这些概率不是太小,可以「高温」运行教师,在训练学生时也以「高温」运行学生。比如说,如果采用的是 logit,那就是输入 softmax 的东西。对于教师来说,可以基于温度参数对其进行缩放,进而得到一个更 soft 的分布;然后在训练学生时使用同样的温度。


下面来看一个具体的例子。下图是来自 MNIST 训练集的字符 2 的一些图像,对应的右侧是当运行教师的温度高时,教师为每张图像分配的概率。


图片


对于第一行,教师确信它是 2;教师对第二行也有信心是 2,但它也认为可能是 3 或 8。第三行则有些像 0。对于这个样本,教师应该说这是一个 2,但也应该留点可能性给 0。这样一来,比起直接告诉学生这是 2,学生能从中学到更多。


对于第四行,可以看到教师有信心它是 2,但它也认为有点可能是 1,毕竟有时候我们写的 1 就类似于图左侧画的那样。


对于第五行,教师出错了,认为它是 5(但根据 MNIST 标签应该是 2)。学生也能从教师的错误中学到很多。


蒸馏有一个很特殊的性质,那就是当使用教师给出的概率来训练学生时,那就在训练学生以老师那样的方式来进行泛化。如果教师为错误答案分配了一定的小概率,那么也会训练学生泛化到错误答案。


图片


通常来说,我们训练模型是为了让模型在训练数据上得到正确答案,并能将这种能力泛化到测试数据上。但使用教师 - 学生训练模式时,我们是直接训练学生的泛化能力,因为学生的训练目标是能与老师一样地进行泛化。


很显然,我们可以创建更丰富的输出以供蒸馏。比如说我们可以为每张图像赋予一个描述,而不仅仅是单个标签,然后再训练学生来预测这些描述中的词。


图片


接下来,Hinton 谈到了在智能体群中共享知识的研究。这也是一种传承知识的方式。


图片


当多个智能体构成的社群互相共享知识时,共享知识的方式能在很大程度上决定计算执行的方式。


图片


对于数字模型,我们可以通过复制创建大量使用相同权重的智能体。我们可以让这些智能体查看训练数据集的不同部分,让它们各自基于不同部分的数据计算权重的梯度,然后再对这些梯度进行平均。这样一来,每个模型都学到了其它每个模型学到的知识。这种训练策略的好处是能高效处理大量数据;如果模型很大,就可以在每次共享中共享大量比特。


同时,由于这种方法需要各个智能体的工作方式完全一样,因此就只能是数字模型才行。


权重共享的成本也很高。要让不同的硬件以同样的方式工作,就需要以极高的精准率生产计算机,使得它们在执行相同的指令时总是会得到相同的结果。另外,晶体管的功耗也不低。



*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客