作者
青暮、陈大鑫
编辑
丛末
SIGIR是一个展示信息检索领域中各种新技术和新成果的重要国际论坛,若非疫情影响,今年本定于中国西安市举行。7月25日-7月30日,第43届SIGIR在线上举行。
7月27日,年图灵奖得主GeoffreyHinton带来了主题为《TheNextGenerationofNeuralNetworks》的讲座。讲座由约克大学信息技术学院正教授JimmyHuang主持,ACM杰出科学家、 吉林大学人工智能学院常毅教授担任嘉宾。
在讲座中,Hinton指出:人工神经网络最重要的未解难题之一,是如何像大脑一样有效地进行无监督学习。
当前有两种主要的无监督学习方法:
第一种方法,以BERT和变分自编码器为例,使用了深度神经网络来重建其输入。这种方法对于图像来说是有问题的,因为网络的最深层需要对图像的精细细节进行编码。
第二种方法是Becker和Hinton在年提出的:当给定相同图像的两个不同片段作为输入时,训练深度神经网络的两个副本以产生具有高互信息的输出向量。设计此方法的目的是使表征形式不受输入无关细节的束缚。
Becker和Hinton使用的优化互信息的方法存在缺陷(出于一个微妙的原因,讲座中会解释),因此Pacannaro和Hinton将其替换为判别性目标函数,在该目标函数中,一个向量表征必须从许多替代方案中选择相应的向量表征。
表征的对比学习(contrastivelearningofrepresentations)被证明非常有效,但是它存在一个主要缺陷:要学习具有N位互信息的成对的表征向量,我们需要将正确的对应向量和大约2^N个错误的替代方案进行对比。Hinton将描述解决这种局限性的新颖有效方法,并且表明这将导致在皮质中实现感知学习的简单方法。
GeoffreyHinton现在是多伦多大学的计算机科学系荣誉退休教授,Google的副总裁兼工程研究员,以及VectorInstitute的首席科学顾问。他最早使用反向传播学习单词嵌入,对神经网络研究的其他贡献包括玻尔兹曼机、分布式表示、时延神经网络、专家混合、变分学习和深度学习。年,GeoffreyHinton因在深度学习方面的贡献与YoshuaBengio、YannLeCun一同被授予了图灵奖。
以下是演讲全文,AI科技评论进行了不改变愿意的整理。
1
无监督学习的历史
1、自编码器
在这次演讲中,我将讨论神经网络的未来发展方向。不过在这之前,我会先谈谈神经网络的发展历史,特别是无监督学习。
在机器学习中,有三种不同类型的学习模式:首先是监督学习,即给定输入向量学习预测输出。然后是强化学习,通过学习选择动作以获得最大奖励。最后是无监督学习,其目的是学习输入的内部表征,但是从数学上定义什么是好的表征形式很困难。
首先解释我们需要无监督学习的原因。人类拥有10^14个突触,但只能活10^9秒。这意味着如果要学习大多数突触,显式标签或奖励可能无法提供足够的信息,因为我们必须每秒学习10^5个突触。
有人反对人类需要学习所有突触的观点。一种说法是,可能大多数突触都不会被学习,而且进化的效率很低,进化算法的效率就比反向传播算法低得多。突触可能是高度冗余的。
但是,我认为大脑浪费容量的可能性很小。人类的学习模型非常庞大,却不需要大量的数据,这与常规的统计方法非常不同。对人类而言来说,经验是昂贵的,而突触是廉价的。
因此,我们需要研究不使用大量经验和拥有很多参数的学习算法。用于无监督学习的目标函数,即最大似然,就是个很明显的例子。
优化最大似然意味着调整生成模型的参数,以最大程度地提高模型生成观测数据的概率。例如,将数据分布拟合为高斯混合分布。
另外一个例子是自编码器。自编码器试图找到一种经济的表征形式,来重建数据。
我将在本演讲的后半部分以空间或时间一致性的角度来谈论这个话题,其思想是提取在空间或时间上一致的属性,这和最大似然非常不同。
自编码器是一种使用监督学习算法来实现无监督学习的方法。我们将数据输入网络,网络输出重建的数据,网络学习的目的是使重建数据与原始数据相同。网络将数据转换为编码向量,我们通常希望编码向量的维度很小,或能高效地表征数据。解码器以编码向量为输入尝试重建数据,因此解码器是条件生成模型。
在大约20年的时间里,人们一直认为训练深度自编码器非常困难。自编码器的想法从年代中期反向传播开始流行就有了,但是深度学习无法应用到自编码器中。原因是我们使用了错误的激活函数,当时使用的是Sigmoid或Tanh,而不是ReLU,而后者更容易在深度学习中训练。此外,我们的初始化方法也很糟糕。在初始化权重时需要缩放权重,从而反向传播的梯度不会爆炸或消失。最后,当时的计算机速度也很慢。
2、堆叠浅层自编码器
在年,Salakhutdinov和我提出了一种训练深度自编码器的新方法,即堆叠多个浅层自编码器。
首先训练一个浅层自编码器,其接受输入的数据。它的隐藏层有特征检测器,并且尝试学习可以重建数据的特征检测器。然后,将特征检测器的激活值视为数据,重复以上操作,你可以根据需要确定层数。因此,在不使用任何标签的情况下,我们可以预训练多个层的特征向量,称之为无监督预训练。
每个新的自编码器都将已学习的特征检测器的激活值视为其数据,并且学习进一步的编码。该算法的有趣之处在于,它成功地应用了深度学习来学习自编码器。
对于浅层自编码器(例如受限玻尔兹曼机),数学表明每当新的浅层自编码器添加到堆叠的网络中,模型生成数据的对数概率将获得新的变分界(variationalbound),并且该变分界比先前的变分界更好。
层来说有用的特征,为了解决这个问题,我们可以训练深度端到端自编码器。有了更快的计算机和更好的激活函数,深度自编码器的效果变得很好。
3、变分自编码器
在年,Welling和Kingma提出了变分自编码器,其思想是,编码器采集数据并将其转换为实数值编码向量,解码器利用实数值编码向量重建数据。
编码器的目的有两个:第一,它希望找到一种编码,可以在先验分布下最大化该编码的概率。在实数值编码空间中,存在先验分布,通常为高斯分布,编码器尝试查找接近该高斯均值的编码。第二,它也在寻找可以重建数据的编码。
解码器获取编码并尝试准确地重建数据,使用的是变分近似方法。通过使用巧妙的数学,Welling和Kingma能够获得训练变分自动编码器所需的所有导数,从而既能最大化编码处于高斯先验分布的概率,又能利用变分后验最大化数据的近似概率。以下不会再谈论变分自编码器,但它目前是无监督学习的最佳方法之一。
4、BERT
接下来讨论BERT。BERT是一种深度自编码器,经过训练可以补充句子中遗漏的单词。BERT实际上与信息检索非常相关,因为它可以提取非常好的单词表征。这对于理解文档非常有用。BERT有很多个层,并且在每一层中,都有每个输入单词的嵌入向量。第一个隐藏层中有单词的向量表征,第二个隐藏层中有相同单词的更好的向量表征。
随着深入网络,给定单词的表征将变得越来越好。实际上,L+1层中的某个单词的表征,是通过比较L层中该单词的嵌入与其它单词的嵌入生成的。这种比较是通过称为Transformer的注意力机制实现的。这种嵌入是很好的单词表征,可用于各种自然语言任务。
如果用标准的一维卷积神经网络来表示单词字符串,我们将通过这些向量来表示句子中的单词。通过组合信息,激活单词的权重矩阵,我们可以获得下一层向量来表征单词。因此,和之前的方法类似,只需查看前一级中所有附近单词的表征,即可将这些表征组合成下一层中更好的单词表征,但这里使用了注意力机制。
BERT的机制实际上看起来像信息检索。每个单词都通过学习的权重矩阵生成查询向量、键向量和值向量。然后,对于L层的每个单词,我们将获取其查询向量,并将其与所有其它单词的键向量进行比较。如果查询向量和键向量之间可以很好地匹配时,也就是说,当查询向量和键向量的标量积很大时,附近位置的值向量影响下一层的单词表征。
例如,假设我的名字是June。我将生成一个查询向量,该查询向量可以很好地匹配月份,也可以很好地匹配女性名字。我们将在句子的其余部分中选择相关的词,并使用这些相关的词来修改June的表征。如果句子中还有其他几个女性的名字,则June的表征将变得更接近女性人名的表征,如果句子中出现了月份相关的单词,June的表征将变得更接近“六月”的表征。也就是说,它们将根据上下文进行优化,所以这很像信息检索,不过所有查询、值和键都是学习得到的。
因此,我们可以使用这种神经网络进行语言建模。首先使用Transformers预训练单词片段嵌入。如果采用句子或更长的文本片段,则需要成千上万个片段,将它们输入Transformers的多个层,以学习所有的键、值和查询。
因此,单词表征会在输出之前得到完善,可以很好地利用上下文信息。然后,我们在另一个神经网络中使用这些单词片段的表征,神经网络可以从先前的单词片段中预测下一个单词片段,因此这是一个自动回归模型。但是,它考虑的不是那些单词片段,而是BERT生成的单词片段的表征。
它的效果比规则模型更好。通过给它一个初始的单词序列,然后让它预测下一个片段的概率分布。这样一来,我们就可以生成长长的单词串,直到获得完整的故事为止,效果令人惊讶。
BERT需要用数十亿个文字数据来训练,然后我们使用其产生的嵌入,训练具有1,亿个参数的语言模型,耗时超过一千petaflop天。一旦完成训练,我们就可以生成新闻文章,如上图所示。这是GPT-3的例子,有趣的是,大多数人无法确定这篇新闻文章是由BERT撰写的,它通过了图灵测试。
现在,我们回到有关如何进行监督学习的基础思想。变分自编码器BERT比堆叠自编码器的效果更好,这是因为端到端学习可以确保前面层中的隐藏单元学习提取后面层所需的特征,这是反向传播所擅长的事情。
2
无监督学习的未来
1、自上而下与自下而上
在过去的几年中,我一直非常渴望找到一种新的实现监督学习和深层网络的方法,这种方法不需要多层反向传播,因为我不相信大脑的工作机制是这样的。
接下来,我们大部分时间都将探讨新的修复方法,它如何不起作用以及如何改进以使其起作用。解决方法是学习每个层的特征,从而可以重建前一层的内容。而且,它们对于后一层也能很容易进行重构。这意味着我们将必须同时学习所有的层。
我们将尝试学习足够好的特征并重建前面的层,这是堆叠自编码器的目标函数,但也很容易对后面的层进行重建。也就是说,它们与后面层预测的内容相符。
这里有一个非常令人有趣但饶舌的解释,即后面的层将进行自上而下的预测,自上而下的预测将监督自下而上的连接的学习,自下而上的连接将产生表征,该表征将作为自上而下的预测的目标,自上而下的预测实际上也是自下而上学习的目标,自下而上和自上而下的学习过程是相互监督的。
也就是说,好的特征可以局部地、自下而上地提取,同时也可以从更大的上下文中自上而下地预测。
我们来展示一个使用上下文协议的例子。考虑一个句子,“shescromedhimwiththefryingpan”,希望你以前从未听过scrom这个单词。我们怀疑它是动词,基于它在句子中的位置以及单词末尾的“ed”。
我们不知道它最初的含义,但是在刚看到这句话时,大多数人对其含义已经有了一个很好的了解,认为这大致表示“她用平底锅打了他的头”。
人类不需要成千上万的例子也能从一句话中很好地理解一个词的意思。这就是自上而下预测的,魅力所在。
在视觉识别上也相似,全局的背景帮助你自上而下地预测应该在图像的局部看到什么,例如在草地背景中猜测黑白斑块皮肤的四脚兽是奶牛。
2、以新方法训练堆叠浅层的自编码器,会发生什么?
我们的目标是在自下而上和自上而下对某个特征的预测之间取得一致。这很容易通过缩小所有隐藏激活向量来实现。这被称为所谓的“塌缩问题”(collapseproblem)。不过,我们可以通过使用更好的协议定义来避免这个问题:两个变量在每个训练样例中的值是否一致,以及它们在不同训练样例中是否遵循同样的变化。
我们先讨论一种完全不同的无监督学习方法,之后我再回到这种方法。
之前,我和我的学生想出了一个方法,用一个更好的定义来解释两者的一致性。与其说它们应该相等,不如说它们应该是相似的,即它们在不同的训练案例上有什么样的变化趋势。
所以在一个特定的训练案例中,我们希望神经网络的一部分中的自下而上的预测与自上而下的预测相一致。
不要尝试解释输入的每一个细节,只需