Geoffery Hinton:深度学习的下一个大事件
来源|The Robot Brains Podcast
翻译|胡燕君、沈佳丽、程浩源、许菡如、贾川
在当今享誉世界的AI科学家中,深度学习教父Geoffrey Hinton也许拥有最为与众不同的研究思维——他喜欢按直觉行事,更倾向于运用类比,研究生涯中的神来之笔大都源自瞬间迸发的思维火花。
这与他本人的教育背景息息相关。他的本科专业是生理学和物理学,也读了哲学,拿到的却是心理学方向的学士学位以及AI专业的博士学位,这种庞杂的跨学科经历意味着开放的思维基础,让他的研究不会拘泥于形式化以及严谨的数理推演,而是拥有极具想象力的敏锐直觉和独特的研究品味。
人工神经网络的最大模仿对象无疑是人类大脑,这也是科学家探究智能的神秘起源。Hinton也是受此启发,他起初研究受限玻尔茨曼机,想借此弄清楚人类大脑如何工作,后来他顺其自然转向神经网络的传统的反向传播,直到2012年,他与学生Alex Krizhevsky、Ilya Sutskever提出的AlexNet成为深度神经网络崛起的开山之作。
在深度学习领域深耕半个世纪之久,可谓凭他一己之力支撑起了AI研究的半边天,但那些研究在很长一段时间里都相对不为人知。2019年,Geoffrey Hinton,与Yoshua Bengio、Yann LeCun共同获得了图灵奖,他的论文被引次数截止目前高达50多万次。
如今,Hinton认为,深度学习这种非常成功的范式将继续保持繁荣。不过,引领深度学习向前迈进的不再是反向传播,基于他对人类大脑工作机制的持续研究,他窥探到深度学习发展的下一个大事件:脉冲神经网络的学习算法。
这一次,他的研究直觉还会在未来得到验证吗?
最近,在Pieter Abbeel主持的The Robot Brains Podcast节目中,他深入表达了对大脑工作机制、脉冲神经网络、大规模模型、玻尔兹曼机、t-SNE技术的见解。以下是对话内容,由OneFlow社区编译。
1
大脑工作机制的最新研究进展
Pieter Abbeel:近期让你彻夜难眠的三个问题是什么?
Geoffrey Hinton:第一,司法部长什么时候才能有点作为,因为时间不多了,这是让我最担心的问题;第二,我们该如何应对像普京这样拥有核武器的人;最后,大脑是否使用反向传播(Back Propagation)。
Pieter Abbeel:你花了很长时间研究大脑的工作原理,进展如何?
Geoffrey Hinton:这是一件富有成效的事情,我总是坚信会在未来五年内弄清这个问题。我们正在越来越接近答案,但同时我也确信大脑中不存在反向传播。我认为,现有的人工智能底层技术原理与大脑的工作原理截然不同,但从高层次来看它们又是相同的,它们都有很多参数——即神经元之间的权重,我们可以通过大量的训练样本来调参。
大脑和深度学习都会涉及到大量的参数,问题是,我们怎样才能得到调整这些参数的梯度。我们需要一些标准来判定结果是否理想,如果结果不理想就需要调整参数,从而优化对目标的预测。目前我认为,虽然反向传播是当下深度学习普遍采用的一种工作机制,但这与大脑中的运作机制非常不同,大脑计算梯度的方法另有其他。
Pieter Abbeel:近期,你也宣称大脑的工作机制并非反向传播,而是更接近玻尔兹曼机,你认为玻尔兹曼机架构是一种可行的AI模型,还是一种表现大脑工作机制的理论模型?
Geoffrey Hinton:归根结底,如果大脑的工作机制类似反向传播,那么它如何获取梯度信息呢?这就是NGRAD
(https://brainscan.uwo.ca/research/cores/computational_core/uploads/11May2020-Lillicrap_NatNeuroRev_2020.pdf)(neural gradient representation by activity differences,简称NGRAD)算法理论的核心,它用神经活动差异来表示误差导数,也即用时间导数来表示误差导数。不过,我现在不太相信这个假设了。
玻尔兹曼机原理很简洁,我对它的看法也在不断变化,现在我对它秉持部分认可的态度。玻尔兹曼机模型包含马尔可夫链,需要对称权重,这似乎并不合理,但另一方面,玻尔兹曼机运用对比学习,它更像一个生成对抗网络(GAN)而不是典型的无监督对比学习。
在无监督对比学习中,你要求来自同一张图像的两个图片块(crop)要有相似的表征,来自不同图像的两个图片块要有不太相似的表征。而在玻尔兹曼机中,你要求正数据(positive data)产生低能量,负数据(negative data)产生高能量(这里的数据指单个图像,而不是图像对或其它)。所以,如果要让无监督对比学习变得可行,需要像玻尔兹曼机那样有两个阶段。
第一阶段,需要找出正数据的结构,这里指的不是成对的图像块的结构,而是整张图像的结构,需要找到本地提取和语境预测之间的本质共同点;第二阶段的做法则不同,首先要有负数据,它非常接近真实图像,但却有细微的差异。然后,你要求刚刚在正数据中得到的结构不能出现在负数据中,即正数据的结构须为正数据所独有,因为神经网络自身的前端连接(wiring)可能会导致从正数据和负数据得出的结构一致,但通过上述做法,就可以保证得出的数据结构不受神经网络连接的影响。
这是我认可玻尔兹曼机的一个方面,但我认为,利用马尔可夫链生成负数据的方法过于复杂,而且低效,所以我们需要另找一个生成负数据的方式。
这就很像生成对抗网络。在生成对抗网络中,先输入真实数据,生成模型会生成负数据,然后判别器会通过判断其是否具有正数据独有的结构,来判定数据的真伪。我希望用判别器的内部表征作为生成模型,用以生成负例,从而训练判别器。
因此,我现在的想法介于生成对抗网络和玻尔兹曼机之间,不是通过马尔可夫链生成数据,而是通过直接生成模型,毕竟后者要简单许多。此外,我还设想同时存在一个判别器和另一个直接生成模型用以学习,让生成的负例样本更逼真。
Pieter Abbeel:原则上,这并不冲突,因为生成对抗网络可以被重写成基于能量的模型(energy-based model),前者只是后者的其中一种形式。
Geoffrey Hinton:没错。不过在生成对抗网络中,你从顶部的随机数据中生成新数据,难以完全覆盖,因为存在很多永远不会生成的数据。但如果你从判别器的顶层再次生成,就可以达到良好的覆盖。
2006年,我与Simon Osindero和Yee-Whye Teh发表了一篇关于神经计算中的唤醒-睡眠(wake-sleep)算法的论文(https://www.cs.toronto.edu/~hinton/absps/fastnc.pdf)。该算法没有用到反向传播,却有良好的学习效果。它用的是对比唤醒-睡眠算法,之所以称为“对比(contrastive)”,是因为包含两方面,首先是识别,这属于调整权重阶段;其次是生成,但不是根据随机数据生成,而是根据识别时获得的数据生成,这样就可以得到不错的覆盖。
Pieter Abbeel:你在一篇论文曾称,可以通过反向传播训练神经网络。现在几乎所有人的研究都是采用反向传播机制,但你现在却说,我们或许应该换种方法才能更接近大脑的工作方式。某种程度上,是否可以认为反向传播机制可能会比大脑的工作方式更优?
Geoffrey Hinton:首先,我需要纠正的是,我确实和David Rumelhart、Ronald Williams一起写了一篇关于反向传播的高被引论文,但是反向传播算法在此之前就有了,我们只是重新使用并且证明了它可以学习到一些有趣的表征,例如词嵌入(Word Embedding),但并非由我们发明了反向传播算法。
我认为反向传播可能比大脑的类似工作机制的效率更高,它将海量的信息压缩到几十亿个神经元连接中。要知道,大脑拥有多达数百万亿个神经元连接,这也导致它的连接成本很低,但使用的经验(训练数据)却很少,也就是大脑投入了大量参数,却只需要少量经验。
但人工神经网络却恰恰相反,它拥有充足的经验(训练数据)却只需要很少参数,我们试图找出影响输入与输出之间关系的信息,并将其添加到参数中。所以我认为,反向传播比大脑的工作方式更高效,但前者可能不擅长从少量数据中抽象出大量结构。
Pieter Abbeel:在这方面,你是否设想过有没有其他获得更优性能的方法?
Geoffrey Hinton:我一直认为这需要无监督的目标函数,尤其是针对感知学习,这很关键。如果你可以根据物理世界抽象出一个模型,那么就可以基于该模型而不是原始数据来调整自己的行为,这样就更容易找到正确的方法。
我确信大脑就使用了许多小型的局部目标函数,因此,如果要优化一个目标函数,并不是通过训练端到端系统链,而是借助许多小型的局部目标函数,这样就可以获得更多的带宽用于学习。
例如,下面这种方法就能得到一个不错的目标函数,只不过实施起来较为困难:首先,观察一个局部图像块(patch)并尝试提取一些可能的表征;其次,根据其相邻图像块进行上下文预测得到一些表征;然后,将二者进行比较,进而预测该图像块应该包含哪些表征。
显然,只要机器对该图像域的学习比较到位,那些根据局部图像块和相邻图像块提取的特征通常是相符的。如果不一致,你反而会感到非常惊讶,但也可以从差距很大的情况中学习到更多。虽然实现起来有难度,但我相信这将是目标函数的优化方法。
如果你将一个大型的图像分成许多小型的局部图像块,这意味着,通过在图像中比较局部预测和上下文预测得到的表征是否一致,或者通过比较多种层次提取得出的特征是否一致,就可以得到丰富的反馈。虽然这很难实现,但我认为研究会朝着这些路线发展。
Pieter Abbeel:在探究如何使用局部目标函数来填充图像的空白部分或补全单词时,包括你在内的很多人都开始研究如何有效地学习未标记数据,这也是当下比较前沿的研究,不过大家目前仍在普遍使用反向传播机制。
Geoffrey Hinton:所以我不喜欢掩蔽自编码器(Msked Auto-encoders,MAE)的原因是,在输入图像块后,在不同层(layer)提取表征,最后试图在神经网络的输出层重构那些缺失的输入图像块。
但大脑的工作方式不同,它也会提取不同层级的表征,但它会在每一层重构下一层,而不是单单只在输出层进行重构。问题是,能否在不使用反向传播算法的情况下做到这一点?
如果像掩蔽自编码器一样,提取了不同层的表征后,再在输出层重构那些缺失的图像块,就需要获取所有的层所返回来的信息。那么,既然所有的模拟器都已嵌入了反向传播算法,那不如继续沿用这种方式,但这与大脑的工作方式并不相同。
Pieter Abbeel:当大脑正在处理所有这些局部目标时,工程系统是否重要?如果重要的话,那可能跟三点有关:一是,我们想要优化哪些局部目标?二是,采用哪种算法来优化局部目标?三是,使用哪种架构才能将正在学习的神经元连接起来?但这三点我们似乎都没找到正确的答案。
Geoffrey Hinton:如果你对感知学习感兴趣,那肯定希望拥有视网膜拓扑映射(Retinotopic Maps)层次体系,其架构就是局部连接的。这样做的好处是,可以简单地假设一个视网膜拓扑映射的局部内容将由馈入它的相应位置决定,从而解决很多信用分配问题(Credit Assignment Problem)。你只需要利用局部之间的相互作用,就能知道具体某个位置的内容。
目前的神经网络会假设在每一个局部位置使用相同的函数,卷积神经网络和Transformer都是这样操作的,但我认为大脑不会这样做,因为这涉及权重共享,并且需要在不同的区域进行完全相同的计算。
比起权重共享,我认为大脑有更加合理的实现方式。你可以想象有一大堆纵列(columns )正在进行局部预测,并观察相邻的纵列来进行上下文预测,如果上下文预测与局部预测的特征一致,那你就可以根据上下文推断局部,反之亦然。
因此,你可以认为上下文信息可以被蒸馏到所有的局部提取器,它们其实可以相互蒸馏,彼此学习。也就是说,如果它们之间达成一致,那么你在其中一个地方得到的知识也可以迁移到另一个地方。例如你希望鼻子和嘴巴都认同它们取自同一张脸,那么它们就都应该产生相同的表征。事实是,如果不同局部区域产生相同的表征,就可以将知识从一个地方蒸馏到另一个地方。
这与实际的权重共享相比效果要好很多。从生物学的角度来看,这样做有两大好处:一是,不同位置的具体架构不需要相同,二是,它们的前端处理也不需要相同。
这就像人的视网膜,视网膜的不同部位有着不同大小的感受野(Receptive Field),而卷积网络试图避开这一事实。卷积网络有时有多个不同的分辨率,并在按照不同分辨率进行卷积,但它们无法完成不同的前端处理。而在大脑中,如果你要将知识从一个位置蒸馏到另一个位置,那么只需要在不同的位置执行相同的函数就可以实现。即使你在两个不同位置对光学阵列进行不同的预处理,也就是前端处理不同,但仍然可以通过函数将知识从光学阵列蒸馏到表征。
因此,尽管提取的效率不及使用共享权重,但蒸馏更灵活,而且从神经学的角度来看也更合理。我在一年前才意识到,虽然我们需要权重共享的高效,但如果能让相邻区域达成表征一致,那局部蒸馏也就足够了。但是,如果要让局部达成表征一致,就意味着要让一个位置的知识去监督另一个位置的知识。
Pieter Abbeel:你谈到的其实是两种看法:一种看法是,神经网络使用的是权重共享,而大脑使用的是另外的方式,但二者殊途同归,所以我们应该继续权重共享;另一种看法则是,因为大脑的做法不同,所以我们不应该继续坚持研究权重共享,而应该试着转变方向。所以你的想法是什么?
Geoffery Hinton:我认为大脑不会做权重共享,因为它很难将信息传递到各个地方。我们应该继续研究在卷积神经网络和Transformer中进行的卷积操作。对于神经网络而言,我们应该通过共享权重来共享知识,但要记住,大脑并不是通过共享权重来共享知识,而是通过共享从输入到输出的函数并通过蒸馏来迁移知识。
2
下一个AI大事件
Pieter Abbeel:你曾经从人类大脑的工作机制中获得灵感,那么哪些技术最终会成为关键,脉冲神经网络算吗?
Geoffery Hinton:脉冲神经网络非常重要。在神经网络发展早期,Marvin Minsky和Seymour Papert就发现,单个神经元无法处理异或问题(XOR),它不能分辨两个输入是否不同,这和“判断两个输入是否相同”是等价的。可惜Minsky和Papert选择继续研究“异或”问题而不是“相同”问题。
如果研究“相同”问题,就可能会马上想到可以利用脉冲时序(spike timing)判断两个脉冲是否在同一时间到达,如果它们到达的时间相同,这两个脉冲就会同时给神经元注入大量电荷,从而突破阈值。特别是,如果先有激励性输入,后有抑制性输入,它们就必须在一个狭小的窗口内到达。
所以,脉冲神经网络非常擅长检测一致性(agreement),但普通的神经网络却需要经过好几层才能做到。我认为如果我们能开发出强大的学习算法,就能够找出它们如何学会利用这种能力,例如学会利用脉冲进行声源定位。
Pieter Abbeel:这让我想到了Transformer架构,它也是为了定义一致性或相关性(correlations)而设计的,Transformer架构要比脉冲架构庞大得多,但它们之间应该存在某种关联。
Geoffery Hinton:多年来,神经科学家们认为不使用脉冲音调(spike tones)就是疯了。如果我们能开发出相应的学习算法,并证明当开始学习听觉数据这类序列数据时,它们确实合理地利用了脉冲时间,那就可以使用这些脉冲摄像头(spiking cameras),然后得到非常令人满意的结果。脉冲摄像头非常聪明,它们可以给出很多信息,但问题是没人知道如何使用它们。研究语音的学者也提议使用脉冲神经网络来表征听觉输入,但问题是没人知道如何进行表征,以及学习和应用这种表征。
Pieter Abbeel:事实上,神经元会释放人工神经元所没有的脉冲信号,这只是因为结构上的差异吗?我们需要更好地了解以及学习大脑神经元的优点吗?
Geoffery Hinton:它们之间不仅仅是结构上的差异。为什么大脑这种硬件会如此出色,为什么大脑可以使用脉冲信号做这么多事情而且耗能这么低?一旦我们了解其中的原理,那就会发现大脑使用脉冲单元的高明之处。例如,视网膜就没有脉冲神经元,但它有大量的非脉冲神经来处理视觉信息。
同时,这也取决于使用哪种学习算法来计算脉冲神经网络的梯度,人们对脉冲神经元所关心的两个不同问题是,何时会出现脉冲以及会不会出现脉冲。
人们提出了使用各种替代函数来优化系统,那确实起到了一定的作用,但这些函数并不一定正确。因此,我认为如果能有一种学习算法就好了。
2000年左右,Andrew Brown和我写了一篇关于脉冲玻尔茨曼机(Spiking Boltzmann Machine)学习算法的论文
(http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.830.2783&rep=rep1&type=pdf),我们当时很希望能找到一种适合脉冲神经元的学习算法,我认为这是脉冲神经元硬件会取得进展的关键。包括曼彻斯特大学的Steve Furber在内的很多人都已经意识到,找到适合脉冲神经元的学习算法之后,就可以构建更加节能的硬件,并建立大型系统。只有拥有合适的学习算法之后,我们才能充分利用脉冲神经元做更多的事情。
在卷积神经网络中实现一致性并不容易,但有了脉冲神经元,就可以轻松地实现一致性。如果让一个普通的人工神经元来判断两次输入的值是否相同,能做到吗?答案是不能,这对普通的神经元或普通的人工神经元来说并不容易。
使用脉冲神经元可以帮助我们轻松地搭建系统。如果两个脉冲在同一时间到达,它们会向你发射指令,反之则不会,因此使用脉冲时间似乎是衡量一致性的好方法。生物系统中也有同样的机制,所以你可以分辨声音直接到达两只耳朵的信号时间差。如果用一英尺的距离来衡量,光传播的时间大约是一纳秒,而声音传播大约需要一毫秒。
重点是,如果我把物体往你侧前方移动几英寸,声音到达两只耳朵的路径距离差和时间差都只有细微变化,但人类却可以灵敏识别这么细微的差异,猫头鹰甚至更灵敏。
人类是通过两个轴突来做到这一点的。轴突的脉冲在不同的方向上移动,分别朝向两只耳朵,然后如果脉冲同时抵达,轴突就会发射细胞信号,简单来说原理大概就是这样。所以,运用脉冲时间可以实现如此灵敏的识别。
我一直认为,如果我们可以用脉冲时间来检测自监督学习中的一致性,将会取得惊人的效果。比如,分别提取嘴巴和鼻子的表征,然后可以推断整张脸的长相,如果嘴巴和鼻子达成表征一致,那对于面部的预测就会一致。如果用脉冲时间来观察这些预测是否一致,那会是非常好的想法。
但要做到这一点很困难,原因之一是我们没有像人类神经元一样训练网络的优秀算法,所以我目前正专注于如何从脉冲网络中获得良好的训练产出,我认为这将对硬件产生重大影响。
Pieter Abbeel:你刚才提到,视网膜使用的不全是脉冲神经元,所以你是指大脑有两种类型的神经元,一种类似人工神经元,另一种则是脉冲神经元?
Geoffery Hinton:我不确定视网膜是否更像人工神经元,但可以肯定的是大脑皮层有脉冲神经元,这是它的主要通信方式,即从一个参数细胞向另一个参数细胞发送脉冲信号。而且我认为,我们只有弄清大脑为什么会选择发送脉冲信号,才能真正地了解大脑。
我以前有一个很好的论点,即相较于我们使用的典型神经网络,大脑拥有大量的参数,但却缺乏数据。这种情况下,除非使用强大的正则化,否则就可能出现过拟合。一种不错的正则化技术是随机失活(Dropout),每次当你使用神经网络时,都会忽略一大堆单元。神经元发送脉冲时,或许它们真正传递的是潜在的泊松率(Poisson Rate)。
假设这是一个泊松率,也就是说,脉冲的发送是随机的,但由于神经元的输入信息不同,该过程的比率也会有所不同,并且你可以将实值率从一个神经元发送给另一个神经元。但如果你想做很多正则化,你可以在发送实值率时添加一些噪声,添加噪声的一种方法就是使用脉冲。这就是使用随机失活的原因,因为大多数情况下,如果你在任何时间窗口查看,会发现大多数神经元都是不参与任何事情的。
你可以把脉冲看作是潜在的泊松率,它是一个充满噪声的表征。虽然听起来非常糟糕,但实际上,一旦你了解正则化,了解我们拥有这么多的参数,就会明白这是一个非常好的主意。我仍然对这个想法情有独钟,但实际上我们根本没有使用脉冲时间,重点是使用充满噪声的泊松率表征来进行良好的正则化。
我在这两者之间有些纠结。我认为做科学研究时,不能只盯着一个想法而忽视其他,但如果你开放地接纳了不同想法,你又会陷入反复的纠结当中。
因此,有些年我一直认为我们应该有确定性的神经网络,可过了几年,我又觉得随机性也非常重要,随机性对玻尔茨曼机又很重要。千万不要完全执着于其中一种想法,而是要对两者持开放态度。
Pieter Abbeel:既然脉冲神经元能耗更低,我们能不能先不考虑脉冲神经元的训练,而是单独预训练出高效的纯推理芯片,然后把它们编译到脉冲神经元芯片上,这样我们就同时拥有低能耗和强大的推理能力了。
Geoffery Hinton:这是一个非常明智的想法,它可能会进一步推动神经网络的发展,因为这样的推理方法非常强大。很多人已经在开始做这件事,而且他们已经证明这样做更高效节能,各大公司也已经生产了此类大型脉冲系统。当你为了实现强大的推理能力而研究这样的系统,就会自然而然地思考如何达成更低的耗能。
想象一下,在某个系统中,你使用反向传播来学习,然后你将它迁移到低能耗硬件上。这样是可行的,但我们更想利用这种低能耗硬件来直接学习。
3
大规模神经网络具有理解能力
Pieter Abbeel:现在新闻报道了很多大型神经网络,以规模为亮点,当然,它们的规模再大也比不上人类大脑。但大规模似乎已然成为一种发展趋势,而且大规模神经网络的表现也的确亮眼。我也想知道你如何看待小规模神经网络?例如,蚂蚁的大脑比人类小很多,但我们现在造出来的视觉运动系统(Visual Motor Systems)的性能甚至还比不上蜜蜂。
Geoffery Hinton:蜜蜂虽然体型小,但一只蜜蜂大概有上百万个神经元,所以也是一个相当大的神经网络。我认为,如果一个模型有大量参数,而你根据一个合理的目标函数,用梯度下降法不断调整优化这些参数,那么你最终得到的模型会拥有非常好的性能。GPT-3和Google的GLaM模型都是这么做的。但我的做法和它们不太一样。
我们在神经网络中做的更多是递归。我在2021年2月发表了一篇论文《如何在神经网络中表示部分-整体层次结构》(https://arxiv.org/pdf/2102.12627.pdf)介绍了GLOM这个概念,其中也涉及符号化计算。大多数人所说的符号化计算是这样的:在符号层次上计算,计算规则取决于所处理符号串的形式,而每个符号具有唯一特性,这个特性可能与其他符号相同,也可能不同,或许还可以把特性作为指针,用以指向其他事物。但我这里所指的符号化计算是为了配合部分-整体结构而采取的措施。
我不确定GPT-3的文本理解能力到了何种程度,但我相信它是有理解能力的,不像早期的ELIZA只是把符号串重组但并不知道文本说的是什么。为什么我如此确定?证据就是,假如你用英语对GPT-3发出指令:“给我一张戴红色帽子的仓鼠图片”,然后GPT-3就会生成一张戴红色帽子的仓鼠图片。可以确定,GPT-3之前从来没有接收过这个信息对,所以它一定要先明白英语指令说的是什么,才能据此生成图片。
如果放在以前,这是一个非常有力的证据,足以说服那些不相信神经网络有理解能力的人。就像Terry Winograd在1971年发表的论文(https://dspace.mit.edu/handle/1721.1/7095)里描述的,机器准确无误地执行了 “把蓝色积木放到绿色盒子里”这一指令,有力地证明了机器可以明白人类在说什么。但现在,这些怀疑者又提出了新的质疑。他们又觉得:就算机器能根据文本执行命令,这也说明不了什么。
Pieter Abbeel:怀疑者总是将标准越拔越高。2022年4月,Google发表了论文,展示了它的PaLM模型可以准确地解释笑话的笑点。这很不容易,需要机器拥有强大的语言理解力。
Geoffery Hinton:非常厉害。如果机器没有理解笑话的点,它肯定不能生成这么详细、准确的解释。不过,我对机器的理解力还是持保留意见。因为机器学习模型毕竟还是通过反向传播算法训练的,跟人类的理解方式截然不同,所以理解的结果可能与人类也不同。
机器识别物体的方式,是将图片上物体的纹理结构与其他物体的纹理结构对比,从而进行归类。这和我们人类识别物体的方式有很大区别。对抗图像(Adversarial Image)的出现也证明了机器和人类在这方面的区别(对抗图像是对原图片进行微调过后的图片,这种调整对人类几乎微不可察,却会对机器造成巨大干扰,导致机器产生完全不同的识别结果)。
以“昆虫识别花朵”为例来解释对抗样本(Adversarial Example)。昆虫可以看到紫外线,而人类不能,所以在人类看来一模一样的两朵花,在昆虫眼中却可能截然不同。那么能不能说昆虫判断错误了呢?昆虫通过不同的紫外线信号识别出这是两朵不同的花,显然昆虫没有错,只是人类看不到紫外线,所以不知道有区别而已。
不能因为人类肉眼看不出差异就认为两朵花没有区别,其实昆虫的判断才是对的。人类只有借助机器检测,看到两朵花的颜色信号在电磁波谱上分属不同区域,才能确信两朵花确有不同。
Pieter Abbeel:但我们用神经网络进行图像识别的目的或许并不是分析机器与人类谁是谁非,而是想让机器帮助人类解决实际生活中的问题,比如让机器准确地区分汽车和行人。
Geoffery Hinton:同意。我的那篇GLOM论文的一大重点就是,希望为机器构建出与人类相似的感知系统,让机器即使犯错也尽可能按人类的逻辑犯错,而不是出现一些人类根本不可能犯的错误,相比之下,还是前者更容易让人接受。
Pieter Abbeel:OpenAI发布了最新版的DALL-E,你认为具身化(embodiment)对智能有多重要?
Geoffery Hinton:我们需要在工程领域和哲学领域区分这个问题。从哲学的角度来看:一个人坐在房间里,除了听广播和看电视外,不能移动,那么他能否仅仅凭借感官输入来弄清世界是如何运行的? 我认为可以。从这个角度来看,智能并不需要被具身化。但实际上,一旦智能被具身化,它就会改变你建立感知系统的方式和行为。
从工程的角度来看:仅靠听广播和看电视来认识世界是如何运行的,这是不是一个好办法? 我认为肯定不是。从这个角度来看,具身化非常重要,但这也会带来许多麻烦。
我认为,我们可以在视频数据库上取得很多进展,当有人制作了视频后,可以把这些视频作为数据进行研究。由于不需要控制数据的收集,也就不需要移动机器人,所以这仍有很大的研究空间。
1980年代时,Dana H. Ballard意识到移动机器人的动画感知和标准的计算机视觉有很大的不同,我对此也非常认同。
4
睡眠的作用和玻尔兹曼机
Pieter Abbeel:据我所知,你最近也在研究睡眠?
Geoffery Hinton:是的,我晚上睡不着时就会思考跟睡眠有关的问题。关于睡眠,有一些很有趣的事实。动物也会睡觉,比如果蝇,不过它们睡觉可能只是为了停止夜间活动,不睡觉也能活。但如果人类不睡觉,身体就会出现极大的异常反应。CIA的睡眠剥夺试验表明,一个人三天不睡觉,就会开始产生幻觉;7天不睡觉,就可能会患上永久性精神病。
到底为什么会这样?睡眠对人体有什么用?既然人类不睡觉就会崩溃,那么睡眠对人体肯定有非凡意义。现在的理论认为,人类在睡眠时,海马体中的信息会转移到大脑皮层,从而巩固记忆。
80年代初,Terry Sejnowski和我提出玻尔兹曼机理论。我们的部分灵感来源于英国生物学家Francis Crick对Hopfield神经网络的见解。Francis Crick和Graeme Mitchison发表过一篇关于睡眠的文章(http://www.rctn.org/cadieu/pdf/CrickMitchisonDreamSleep1983.pdf)(译注:Francis Crick等人提出的理论是,大脑白天接收了很多混乱无用的信息,在睡眠中就会把它们清理掉,为记忆腾出空间,这个过程称为“逆向学习”(Reverse Learning)。
神经网络也是如此,我们对神经网络进行随机输入,希望神经网络在混乱中整理出秩序。对于Hopfield神经网络,我们对它输入一些想让它记住的向量,然后神经网络通过不断调整权重,使向量的能量达到最低(注:能量函数值越小,系统趋于稳定),但如果一开始就给Hopfield神经网络输入随机的向量,然后要求使能量达到更高,这种逆向的方法反而让神经网络的运行更高效。
这就是玻尔兹曼机的灵感来源。我们发现,可以不必对神经网络进行随机输入,而是让神经网络通过自己内部的马尔可夫链生成数据,然后反过来要求神经网络,“让生成这种数据的可能性高一点,生成那种数据的可能性低一点”。这本质上是一种“最大似然学习法”(Maximum Likelihood Learning)。
有了这个想法之后,我们非常兴奋,这和睡眠中发生的“逆向学习”过程类似。这种逆向的原理还可以应用到“对比学习”中,当有2个来自同一图像的图像块时,你希望这2个图像块能产生相似的表征;而当有2个来自不同图像的图像块时,你希望它们产生2个有明显差异的表征,一旦它们产生的表征有所不同,这时你的目标就不是把2个表征的差异拉大,而是防止这2个表征趋于相似。
对比学习中还涉及正例和反例。使用玻尔兹曼机时,并不能把正例和反例分开分析,而是必须将它们混合在一起,否则整个系统就会难以运行。我尝试过将正例和反例分开,先分析大量正例,之后再分析大量反例,发现这是非常困难的。
但几年前,我发现,在对比学习中,可以将正例和反例分开分析。这样就可以先分析大量正例,再分析大量反例。就像之前提到的睡眠一样,大脑的活动分为白天和黑夜两种状态:白天接受信息,夜晚清除无用的“反例”。
这就使对比学习变得更合理。将正例和反例分阶段分析,先分析正例的特点,增加某些权重和参数,再分析反例的特点,减少某些权重和参数。这样哪怕使用最基础的对比学习,也可以做得很好。尽管需要用到很多动量和技巧,但最终还是可以做到。
所以,我觉得睡眠的作用很可能是让人忘记没用的信息和“反例”。因此,尽管你晚上做了好几个小时的梦,但醒来后只记得最后一分钟的梦境,因为做梦是清理信息的过程,大脑并不想记住梦境。你可能会记得快速权重(注:允许使用权重矩阵储存短期记忆,从而获得更多的容量)中的梦,因为快速权重是一种暂时存储。
我认为,这是我知道的最合理的睡眠理论,因为它解释了为什么人不睡觉,神经系统会出问题,会犯错,出现幻觉和各种异常反应。
下面我想谈谈对比学习中反例的重要性。神经网络需要优化其内部的目标函数,优化某些表征,需要使上下文预测和局部预测达成一致,那么它希望这种一致结果能够反映真实数据的特性。
但神经网络存在一个问题,神经元接收到的不止有输入数据,还有输入数据之间的各种联系,而这些联系与真实数据的特性无关,而是由神经网络的连接(wiring)以及数据在神经网络中的传输方式造成的。
如果有两个神经元在分析同一个像素,那么它们就产生了联系,但这种联系并不反映像素本身的特征。所以你得想办法提取真实数据的结构特征,避免神经网络连接所带来的干扰。办法就是,给神经网络提供正例,让神经网络找出正例中拥有而在反例中没有的结构特点。这种正例和反例之间的差别才能体现真实数据的特征。
所以,如果你有强大的学习算法,应该尽量避免算法学习到神经网络本身的权重和连接,它们会产生干扰。
Pieter Abbeel:人不睡觉就会产生幻觉,那么产生幻觉是不是为了起到和睡眠同样的作用?
Geoffery Hinton:产生幻觉可能和睡眠有同样的作用。我做的所有实验都表明,每天最好不要连续16个小时清醒然后8小时集中睡眠。相反,时睡时醒更有益,所以包括爱因斯坦在内的很多人发现小睡对他们很有帮助。
5
t-SNE:数据可视化技术
Pieter Abbeel:在神经网络学习中,尤其重要的一点是,当你建立模型时,你需要清楚它是什么,它在学习什么。人们经常试图将学习过程可视化,其中最普遍的可视化技术之一是你发明的t-SNE(t-Distribution Stochastic Neighbor Embedding,t分布随机邻域嵌入)。
Geoffery Hinton:当你试图画出高维数据的2D和3D映射,你可以先选取2个主成分(principal component)来绘制。在2D映射中最重要的是,呈现2个主成分之间最大的距离(distance),也就是它们最大的不同点,而不必关心那些小的距离(即小的差异)。这也意味着不能在映射中很好地还原数据的高维相似性。
但是人们往往着重的不是数据的差异,而是数据的相似性,如果一个映射中,数据之间小的距离的映射关系是正确的,那他们就不关心大的距离是否有错。
很久以前,我想过能不能把数据间的距离(差异性)转化为“数据间的配对可能性(probabilities of pairs)”?也就是把距离小(差异小)的一对数据表示为“可能配对”,距离大(差异大)的表示为“不可能配对”。这样的话,“小距离”就意味着“高配对可能性”。
我们的方法是,在一个数据点周围放置一个高斯分布,计算这个高斯分布下另一个数据点的密度,这就是一个未归一化的概率,之后你要做的就是将其归一化。
然后你将这些点在2D平面表示出来,以呈现这些“数据间的配对可能性”。如果两个点距离很远,就不用太在意它们之间的相对位置了,因为它们配对的概率很低,只需关注那些配对概率较高的数据对。这样就产生一个良好的映射,这就是“随机邻域嵌入(SNE)”:放置一个高斯分布,然后根据高斯分布下的密度,随机挑选了一个邻近数据。
我们最终得到的导数非常简洁,这让我觉得找对了方法,我还得到了一个很好的映射,但是在这个映射上所有数据点都挤在一起,显然,这就是将高维数据转换为低维数据时会产生的基本问题。
在高维空间,一个数据点附近可以有很多个点,比如A周围可以有B,C,D,E……但是B,C,D,E之间的距离并不会过近。
但在低维空间,如果B,C,D,E都很靠近A,那么B,C,D,E之间也必定彼此靠近。这就造成了问题。所以我突然有个想法,既然用“数据间的配对可能性”作为这中间的转换通货(intermediate currency),那应该有一个混合模型。
它应该是一个混合版本,比如在高维度上,一对数据的配对可能性是与e的-s次方高斯距离成正比。而在低维度上,假设针对同一对数据有两个不同的2D映射,这一对数据的配对可能性就是第一个2D映射中e的-s次方高斯距离和第二个2D映射中e的-s次方高斯距离相加的和。
这样一来,我们就可以避免上述的B,C,D,E彼此靠近。例如,单词bank有“银行”和“河岸”等不同含义,我们试图把它的同类词放在它附近,当“bank”表示“银行”时可以在其中一个映射中靠近“贪婪”,表示“河岸”时可以在另一个映射中靠近“河流”,但是“河流”永远不会靠近“贪婪”。
我认为这是一个很好的想法,所以我继续推进,试图得到一个混合的映射。James Cook等人也参与其中,但是没有找到好的方法实现这个混合模型。
我对此颇感失望,开始研究一个更简单的版本,我称其为UNI-SNE,它是一个高斯分布和均匀分布的混合,运作得很好。UNI-SNE具体是这样的:在一个映射中,所有的数据间的配对概率都相等,形成了背景概率。
在另一个映射上,数据间的配对概率与它们距离的平方成正比,这意味着在这个映射上,数据点之间可以相隔得很远。后来,我收到了一篇来自Laurens Van Der Maatens的文章,格式非常正式,让我以为它是一篇已发表的论文,但实际上并不是。
Laurens想和我一起研究,我以为他手握一篇已发表论文,应该非常优秀,所以邀请他来和我一起做研究。事实证明,他的确非常优秀。我们开始一起研究UNI-SNE,然后我意识到,既然UNI-SNE是高斯分布和均匀分布的混合,而均匀分布可以视为一个非常广的高斯分布,那么何不使用不同层次的高斯分布的组合,由许多不同宽度的高斯分布组成,这就是我们所说的t分布。
于是,t-SNE诞生了,它的效果好很多,并且有很好的特性,可以在多个尺度上展示数据点。当数据点之间距离太远时,它们会表现出类似地心引力和星系团引力一样的特性。而且你可以得到不同层次的结构,比如粗略结构和精细结构都能显示出来。
现在我们使用的目标函数与高斯分布的相对密度有关,这是我之前和Alberto Pacinero的研究结果,但这个研究结果很难发表。我们的论文被某个会议拒绝时的反馈是:Hinton在这个想法上已经研究了7年,但没人感兴趣。
往好的方面想,这个反馈是在告诉我,我的研究非常具有独创性,我们现在使用的函数就来自这个研究,t-SNE实际上是NCE的其中一个版本,使用对比的方法,用于制作映射。
总结起来,t-SNE的诞生是一个很长的过程,首先是原始的SNE,然后我们试图制作一个混合版本,发现它不成功,最后因为巧合,发现了应该使用t-SNE。我非常感谢Laurens的到来,他非常聪明,也很擅长编程,帮助这个项目成功推进。
Pieter Abbeel:现在来看,宏大的想法很重要,但是只有严控细节才能取得成功。
Geoffery Hinton:你通常需要做到以下两点:首先,你必须有一个大的想法,以产出一个有趣的原创作品;然后,你也必须保证细节正确,这就是研究生正在做的。
6
智能与非永生计算机、心理学、意识
Pieter Abbeel:在神经网络领域,你从一无所有坚守到现在并取得了重大成就,实属不易。你曾说过,在某种程度上,深度学习能实现一切。现在还是这样认为么?
Geoffery Hinton:我有时说话来不及认真思索,因此不够准确,所以当有人给我打电话时,我就回复“我们不需要放射科医生了”之类的话。其实我的本意为:我们可以使用随机梯度,当我谈及深度学习时,脑子里呈现的只是一大堆参数。我们计算梯度的方式不一定是反向传播,而我们通过梯度实现的也不一定是最终的性能指标,而是大量的局部目标函数。这基本就是大脑的工作方式,它可以解释一切。
我还想说一点,我们现在拥有的计算机非常精确,银行、航天事业或者其他对精度要求极高的领域必须使用精确的系统。人脑与计算机不一样,前者没那么精确。其实人们还没有完全意识到:我们已经设定了计算的方式,计算机是精确的,这也就意味着计算机以及计算机里储存的知识可以“永生”。
基于现在的计算机,想像一下你有一个电脑程序或者是一些神经网络的权重(也可以视其为一种程序),如果你的硬件失灵了,你还可以在另一个硬件上运行这个程序——这就是实现知识的“永生”,知识并不依赖于同一个硬件而存在。但就目前而言,实现知识“永生”的成本是巨大的,因为它要求两个硬件必须一模一样,不能出现任何偏差。这需要数字化方法才能实现,可能要执行相乘等操作,这又要使用大量能耗,并不是硬件的理想发展方向。
一旦决定让你的程序或者神经网络得到“永生”,你就要花费巨大的计算能耗和硬件制造成本。要制造出精确的硬件,你可能得先在2D环境下设计,然后再叠加在一起。
如果你放弃对“永生”的追求呢?如果是在小说里,放弃永生的人通常会得到“爱”,但在人工智能领域,放弃“永生”可以降低计算能耗和生产成本。因此,我们需要做的不是制造计算机,而是给它们种下一颗“种子”,让它们自己成长。我们可以用纳米技术在3D环境进行这个过程,但不同对象应采取的方式有所不同。
我对此想到的一个比喻是:如果你把一棵植物从花盆里拔出来,你会发现它的根部是球状的,接近于花盆的形状。不同的盆栽植物的根都长成了和花盆轮廓相似的球状,但细看却各不相同,而它们的功能是一样的,都是从土壤中汲取养分。
人脑就跟盆栽的根差不多,可以自行生长,不同大脑之间也存在差异,但却可以承担相似功能。我想象中的非永生计算机就应该是这样的。
非永生计算机是自己成长进化出来的,而不是被制造出来。你不能提前给它设计好程序,而是要让它自己学习。所以,我们需要给它配置一套学习算法。非永生计算机大部分的计算都可以在模拟信号中进行。例如,可以将电压乘以电阻并将其转化为电荷,然后将电荷相加。现在已经有类似的芯片了。
问题是,我们下一步应该做什么,以及如何在这些芯片中进行学习。目前,人们已经提出了反向传播和各种版本的玻尔兹曼机,但我觉得这还不够,我们还需要其他研究。
我想,在不久的将来,我们可以用低成本生产出非永生计算机,可以自行学习知识,耗能很低,当它们的生命周期完结时,它们获取的知识也随之消失。而原计算机里的权重也没有参考意义了,因为这些权重只适用于原计算机的硬件,我们只能通过“知识蒸馏”把原计算机中的“知识”转移到新计算机里。这就好比,老一辈非永生计算机要像你一样制作大量的“Podcast节目”才能把知识传授给新一代非永生计算机。
Pieter:机器语言起源于人类心理学,你是否认为如今机器语言的进步在未来能帮助人们更好地理解人类心理学?比如将人视为神经网络或分类器,将他们的认知偏差看作是过拟合。
Geoffery Hinton:是的,我坚信机器语言的发展能帮助人们更好地理解人类心理学。等我们弄清大脑的运作方式,其实也会给心理学的发展提供一些突破口。就像在原子的基础上学习化学一样,知道了分子之间如何相互碰撞以及产生了哪些反应后,我们也就更加深入了解气体定律。
细微层次上的理解很重要,这有利于我们深入理解更高层次所发生的事情。但我认为,我们很难在更高层次上对许多事情做出令人满意的解释,例如,人们现在仍未查清精神分裂症的病因。
Pieter Abbeel:如果神经网络有意识,现在达到了何种程度?
Geoffery Hinton:100年前,如果你问别人,“活着和死亡的区别是什么?”他们会说,“活着的东西有活力,而死了的东西没有活力。”接着你又问他们,“那什么是活力?”他们会告诉你,“活力是所有生物都拥有的共性。”
随后,人类便开创了生物化学,弄清楚了它是怎么回事。但从那时起,我们就不再谈论“活力”这个词了,这并不意味着没有了活力,只是它不再是一个那么有用的概念而已。
现在,我们已经从生物化学层面弄清了事物存活的原因,知道了当器官供养不足时就会衰竭,然后人就会死亡,身体也会随之腐烂。所以,并不是生物的身体失去了活力去了天堂,而是身体的生化物质发生了变化而已。
“意识”也是如此。我认为“意识”是一个前科学概念,大家对“意识”的定义不同,我们很难得出一个确切的定义,但我们的生活中有很多相关概念。例如,“你是否觉察到身边发生了什么?”假如拳王阿里打了一下你的下巴,但你没有意识到身边发生了什么,此时我们用“无意识”这个词来表示,这是“无意识”的第一层含义。但是,假如我正在开车,却没有意识到我在做什么,这是“无意识”的另一层含义,我们有很多种不同的理解。
在我看来,“意识”是一种原始的尝试,它通过给大脑中所想命名,并假设有某种本质可以解释一切,以此来理解如何处理大脑中发生的事情。
拿汽车举例,如果你想了解汽车,就一定要了解动力。一旦你开始了解动力,就会知道引擎如何工作,会探讨动力是如何转换的等一系列问题。但当你熟悉了这些步骤过后,就不会再使用“动力”这个词了。