Hinton 为啥能获得诺奖?
胖车库
2024-10-22 23:34
订阅此专栏
收藏此文章

这是一个标题党,希望我得逞了让你点进来。

原因并不是我想胡说八道或当白嘴儿评论员。而是我想蹭...分享一个让我内心时常充满激动,对缠绕在脑子里的诸多问题作出了迄今为止最好的解释的 Hinton 教授的访谈。如果你和我一样执着于“我们是怎么通过语言理解事物的”,你一定会被吸引。

我是很认真的动脑瓜子,对原访谈“加料”——对教授提到的知识点做了考古(链接文献,对历史事件做背景补充),白话一些我认为非常重要的概念和问题。但这只是基于我小脑袋认知的阶段性的文章,仍需持续理解和挖掘“字面意思”背后的东西。神奇的是,同样的访谈,一模一样的内容,每一次听,都会听出些新东西。

他解释了

语言与认知之间关系的三种观点 (3 views of language and how it relates to cognition),为什么语言对认知形成至关重要。

推理是直觉 (intuition) 和推理验证 (reasoning) 的推拉过程,训练模型的直觉可以让他们获得更多的训练数据,而不是单纯的模仿人。

理解是一个压缩权重的过程,数字系统的压缩与大脑的压缩有何异同?这让我不禁想到自己的教授在讲 大数据(他脑子里的“大数据”)的时候,他造的句子,解压到我的脑子里什么时候不再是 %#¥$^*=&。如果能把你的知识,打包解压成我的大脑硬件可以接受的模样,这期间在发生什么?

重要的不只是训练数据,而是学习。你可能有 50% 的训练数据是错误的,但是你能通过训练学习、识别错误,然后做的比训练数据更好。这就是为什么学生会青出于蓝。

原访谈本身已俱备自我解释的能力,娓娓道来的邻家教授(尽管不是来自星星的咳咳)。能把抽象难懂的东西讲到让我等凡人听懂并为之产生理解渴望的人,就是 太厉害了。也许是因为他解释的起点并不是传授知识的任务,而是源于本身的兴趣和对事物的纯粹好奇心:“我就是要理解大脑是怎么运作的”“我要把这件事情解释到和我自己的直觉一样”。我相信每一个人都对“大脑”有同样的好奇(而不是微积分;)。知识本身有没有趣,重要的也是讲述的人。

Again,我还是在探索一个可理解的视角,对我而言 AI 是一个深情的发明:它不应该是谁该理解谁不用,拿来创新或使坏的特权,或充满公式的技术大门,而是本身是一个有趣的东西,与每个人都相关的事物。也许是我们通向认识自己的一根稻草。


访谈录:Geoffrey Hinton | On working with Ilya, choosing problems, and the power of intuition

来源:https://www.youtube.com/watch?v=n4IQOBka8bc

片段:

校订加料:Jessie

是什么让 LLM 能够学习这么多领域?

寻找共同结构(common structure)

LLM 所做的是寻找共同结构,通过找到共同结构,他们可以使用更有效的共同结构编码事物。让我举个例子,为什么堆肥堆“像”原子弹,能量尺度和时间尺度非常不同,但相同的是,当堆肥堆变得更热时,它会更快地产生热量,同样,原子弹释放更多的中子,从而更快地产生中子,因此它得到了链式反应的概念。LLM 可以从明显不同的事物中看到类比。

它理解了这两种形式的连锁反应,并利用这种理解将信息压缩到其权重中。如果它在做这样的事,那么它可能已经对数百种我们还没有看到类比的事物进行了这样的处理。

2011 年我与 IIya Sutskever 和 James Martins 一起发表了一篇字符级预测论文《Generating Text with Recurrent Neural Networks》[1],我们使用维基百科,试图使用 GPU 上名为 Hessian-Free 的花哨优化器来预测下一个超文本标记语言字符。它起作用了,看起来具有理解的迹象。

用循环神经网络生成文本(2011)

如何训练 LLM 来预测下一个单词?为什么这是“错误”的思考方式?

首先,我不认为这是错误的方式。我做了第一个使用嵌入和反向传播的神经语言模型,数据只是三元组 *,将每个符号转换为嵌入,然后让这些嵌入相互作用以预测下一个符号的嵌入,再从中预测下一个符号。然后通过整个过程进行反向传播来学习这些三元组,这显示了它可以 生成文本 。

学习概念的分布式表征(1986)

* 反向传播(Back-propagation)是神经网络学习的关键算法,用于调整网络权重以最小化预测误差。三元组(Triples)指的是上下文 - 目标对,即使用两个或更多前面的词(上下文)来预测下一个词(目标)。

举个例子,很久以前,我做了一个有趣的神经网络实验,具体是训练一个网络来识别手写数字——这是我非常喜欢的一个例子,通常被称为 MNIST。你训练你的神经网络来识别手写的数字,在这个实验中,我故意引入了一个错误:将一半(50%)的训练数据错误标记。重点是:对于特定的数据样本,错误的标签始终是相同的。例如,如果一个图像显示数字"5",但被错误标记为"8",那么每次这个特定的"5"出现时,它都会被标记为"8"。因为如果同一个样本有时被正确标记,有时被错误标记,网络可能会通过某种形式的"投票"或"平均"来得出正确答案。但在这个实验中,这种可能性被排除了。

所以训练数据集的错误率是 50%,但如果你用反向传播训练网络后,它可以将错误率降到 5% 或更低。因此,对于标注不良的数据,大型神经网络可以提取有价值的见解,它能看出训练数据是错误的(这就是为什么聪明的学生可能比他们的导师做得更好的原因)。

1986 年的小语言模型

心理学关于“词”的启发

受到心理学对于“词的意义”的解释启发:一个词的意义是一大组语义特征,具有相似含义的词具有相似的语义结构。我们如何将两种意义理论统一到一个拥有超过 1000 个权重的小型模型中。这个想法是,我们将为每个词学习一组语义特征,并学习这些特征如何相互作用以预测下一个词。但是,关于事物如何组合在一起的所有知识都将体现在这些特征的相互作用中,没有显式的关系图。如果你想要关系,你需要从你的特征中生成它。

一个推理家谱关系的学习任务

给定家谱的三元组,训练神经网络学习谱系关系。

神经网络看起来是这样的,符号代表人,符号代表关系,符号通过一些连接变成特征向量,这些特征将被网络学习。因此,人 1 的特征和关系的特征,然后这些特征相互作用,并预测输出人的特征,从中您可以预测输出人,从而找到最接近的匹配。该模型的有趣之处在于,如果它遵循正确的规律,就会合理的学习。当时是 6 个特征神经元,现在这些向量有几百上千的特征神经元。

这个 family tree 家谱的例子同样首次出现在 1986 年的论文 学习概念的分布式表征(1986)Learning distributed representations of concepts 中。有趣之处在于时过近 30 年,这个直觉不断在被完善,尽管表述和用词有所变化。

  • An extra unit that is activated during unit interaction is said to encode a **micro-inference ** (e.g. "old"as a feature - has husband - wife old)

    • Micro-inferences store propositions by encoding the underlying regularities of a domain.

  • 6 units - feature neurons

学习概念的分布式表征(1986)

当时 Hinton 提出的问题是:神经网络可以通过反向传播学习到符号者们定义好的规则吗?

从 1985 年的小型神经网络 到今天的大模型 LLM,尽管输入的量级、神经元层数、特征交互的复杂程度都提升了很多。但不变的是,这两者共享相同的总体框架,即 将符号串 (symbols) 转换为词语片段的特征 (features) 以及这些特征向量之间的交互 (interactions between feature vectors) 。

"Turning the symbol strings into features of the word fragments, and the interactions between the feature vectors."

学习“特征”的过程就是理解

他们学到的这些(数十亿)特征就是理解。他们正在将模型与数据拟合,这不是统计学家认为的那种模型,而是一种非常大的"奇怪"模型,具有大量参数。但它试图通过特征和特征之间的交互来理解这些离散符号串。不要着急,我们会在后面介绍“符号”、“特征”等具体是什么,现在简单理解为“词”和词语之间的关系。

有一件事要记住,如果你思考这个问题:“我们人是如何理解的?”这就是我们理解的最佳模型。最初这些小语言模型是作为模拟“人类如何理解”而设计的。

2003 Bengio

然后是 Yoshua Bengio - 他使用了类似的神经网络,并证明它可以用于真实文本。在那之后的 10 年里,语言学家们逐渐看到嵌入(embedding)的价值。

一种神经概率语言模型(2003)

训练模型的推理直觉,以此来获得更多的训练数据

你想想看,人是如何运作的。

我们有某种直觉 (intuition),我们有推理能力 (reasoning),我们用推理来纠正我们的直觉,当然我们在推理过程中也会搅和直觉来进行推理,但是当推理的结论与我们的直觉冲突时,我们意识到直觉需要改变。这很像 AlphaGO 和 AlphaZero 中的情况,你有一个评估函数,你只需看一下棋盘就能说出这对我有利,然后你进行蒙特卡洛模拟,现在你得到了一个更准确的想法来修正你的评估函数,所以你可以通过让它与推理结果一致来训练它。我认为 LLM 也必须开始这样做:即 通过推理开始训练他们对下一步应该做什么的原始直觉 (raw intuition),并意识到这是不对的,这是他们获得更多训练数据的方法,而不仅仅是模仿人们做什么。

这就是 alphaGO 为啥会出现创造性的“第 37 步棋”(除了 RL 的作用之外,尽管 Hinton 认为并不必要)他有更多的训练数据,因为它使用推理来检查下一步应该是什么。

3 种不同的语言观点及其与认知的关系

我曾经认为我们可以在不需要语言的情况下进行大量的认知,但现在我改变了想法。我来介绍三种不同的语言观点以及它们与认知的关系。

老式符号观点

首先,老式符号观点。认知由在某种经过清理的逻辑语言中的符号串组成,这种语言中没有歧义,并应用推理规则,认知只是对这些类似语言符号的东西进行符号操作。

向量与隐藏状态

第二种观点:一旦进入大脑内部,一切都是向量。符号输入后被转换成大型向量,如果你想要输出,你再次产生符号。在 2014 年的机器翻译 * 中有一个转折点:基于向量的方法在处理复杂语言任务上被证明有效。人们使用循环神经网络(RNN),单词不断输入并在隐藏状态中累积信息。所以到达句子末尾时,会有一个大的隐藏向量,捕捉了该句子的含义,然后用它来在神经语言中输出句子,这被称为思想向量 (thought vector)。你将语言转换成大型向量(与语言完全不同),这就是认知的全部内容。

*2014 年,随着 RNN 的出现,机器翻译(WHAT)取得了重大突破,特别是序列到序列(seq2seq)模型。具体在序列到序列模型中,一个输入和一个隐藏状态 (hidden state) 结合起来生成下一个隐藏状态,然后它和下一个输入结合生成下一个隐藏状态,依此类推,直到生成最后一个隐藏状态。然后把最后一个隐藏状态作为解码器处理输出的上下文。而注意力机制 (attention mechnism) 的创新是把编码过程中所有的隐藏状态都带到解码器,解码器给每个隐藏状态打一个分数,表示我们在解码过程中关注的是输入句子的哪个部分。比如,在把一句话从英语翻译成法语“欧洲经济区协议于 1992 年 8 月签署”时,注意力模型会特意把“欧洲经济区”的顺序颠倒成“zone économique européenne”。

现在我们要翻译:"The agreement on the European Economic Area was signed in August 1992." 到法语。每个单词输入进来,RNN 会更新其隐藏状态。这个隐藏状态是一个向量,用于捕获到目前为止的句子的上下文和含义。

初始状态:隐藏状态以默认值开始。

“The”:隐藏状态开始编码基本句子结构。

“agreement”:状态现在包括有关正式安排的信息。

“on”:为协议主题做准备。

“the European Economic Area”:隐藏状态现在编码特定主题。

“wassigned”:添加有关所采取行动的信息。

“in August 1992”:包含时间信息。

(想象一个嘟嘟囔囔的学习者去听一句话,这句话的播出速度是 0.25 倍,每出一个词,他都要说“我觉得这句话的意思是...”。直到最后一个词出现,说出自己听到了什么)

处理完整个句子后,最终的隐藏状态向量包含整个句子含义的压缩表征。这是什么意思?为了简单起见,我们假设最终的隐藏状态是一个由 4 个数字组成的向量(实际上,它会大得多[....🥠.])。处理完整个英文句子后,它可能看起来像这样:[0.8, -0.3, 0.6, 0.1] 。这个向量并不直接对应于单词,而是对应于网络学习过的表示含义的抽象特征。

在我们的例子中,这些数字编码了句子的各个方面:

  • 0.8 可能表示存在某种正式协议

  • 0.3 可能表示它是关于经济主题

  • 0.6 可能表示过去发生的事件

  • 0.1 可能表示欧洲背景

同样,RNN 不会直接“读取”这个向量来生成对应的法语单词。相反, 它将其用作生成翻译的起点 。下面是一个简化的翻译过程:

a)神经网络拿到最终的隐藏状态:[0.8, -0.3, 0.6, 0.1]

b)它使用这个隐藏状态来预测第一个单词“L'accord”:[0.8, -0.3, 0.6, 0.1] -> RNN -> “L'accord”

c)输出“L'accord”后,它更新隐藏状态,可能为:[0.75, -0.2, 0.55, 0.15]

d)它使用这个新状态来预测下一个单词“sur”:[0.75, -0.2, 0.55, 0.15] -> RNN -> “sur”

e)这个过程继续,隐藏状态在每个单词之后更新。

嵌入

第三种观点是嵌入 (Embedding)。你接收这些符号,将它们转换成嵌入,并经过多层处理 *,从而得到非常丰富的嵌入,但这些嵌入仍然与表层的符号关联着。你为这个符号得到一个大向量,为那个符号得到一个大向量,这些向量相互作用来产生下一个词的符号。 这就是理解的本质,即 知道如何将符号转换为这些向量,以及知道这些向量应该如何相互作用来预测下一个符号的向量。 这就是在那些大型语言模型和我们的大脑中理解的本质。这是一个介于两者之间的例子:你仍然保留着 符号 ,但你用这些大向量来解释它们,所有的工作和所有的知识都在于你使用什么向量以及这些向量的元素如何相互作用,而不是在符号规则中。但它并不是说你完全摒弃了这些符号,而是 你将符号转换成大向量,并保持符号的表面结构 。这也是人类思维的一个合理模型。

* 在 Transformer 模型(如 BERT 或 GPT)中,初始词嵌入通过多个自注意力层和前馈层进行处理。每一层都进一步细化表示,整合更多的上下文信息。

总结一下,这里我们提到了符号、向量和嵌入三者的关系。符号是语言的离散表征,向量是符号的数学编码,嵌入是捕捉符号之间语义关系的特殊向量,其中符号被映射到连续(高维)向量空间,相似的符号会彼此接近。

AI 生成概念图

好一个不说人话是吧,在你掀桌子之前,让我们引入猫猫鱼鱼狗狗来理(ping)解(jing)一下。例如,考虑“猫”这个字(在模型眼里它是个“符号”,先暂时忘掉你认识的可爱生物)

向量:假设一个 2D 空间:“猫”可以表示为指向[0.8,0.3]的向量,“狗”可能在[0.7,0.4],“鱼”可能在[0.2,0.7],“车”可能在这个 2D 平面上是[0.9,0.1],“猫”和“狗”可能彼此靠近,因为它们都是动物。“鱼”更远,因为它是一种不同类型的动物。“车”远离所有动物,表明它在概念上是不同的。

嵌入:让我们扩展到 3D 以获得更丰富的嵌入空间:第一个维度可以代表“动物性”。第二个维度捕捉“大小”。第三个维度可以反映“家养与野生”。单词“猫”现在可能在(0.8,0.5,0.9),表明它是小型家养动物。单词“狗”可能在(0.75,0.6,0.85),非常接近“猫”,但略大。“鱼”可能在(0.2,0.4,0.1),反映出它不是家养动物,不是哺乳动物,生活在水中。但仍然是动物!“汽车”可能在(0.9,0.1,0.0),远离前面所有动物,突出它是一台机器。

好现在你可能有点感觉了,现在我们试想一个更丰富的嵌入空间,除了“动物性”“大小”“家养与野生”还有许许多多的特征 ( 生活环境、行为特征、饮食习惯、在人类文化中的象征意义 meme...)。大语言模型(神经网络)就是沉浸在可能有成百上千特征的嵌入空间,在这里对你发送过来的“猫”的符号(😺猫系男友训练教程)进行理解,然后生成输出。(这些词语对他来说是无差别的“符号”)

计算的下一步是什么?

模拟计算(analog compute)

我在谷歌工作的最后几年里,我一直在思考如何进行模拟计算。我们可以不用一兆瓦的功率,而是像大脑一样只用 30 瓦,我们就可以在模拟硬件上运行这些大型语言模型。虽然我最终没能实现这个想法,但我开始真正欣赏数字计算。如果你要使用那种低功耗的模拟计算,每一块硬件都会有些许不同。其核心思想是,学习过程将利用那个硬件的特殊属性。这正是人类身上发生的情况,我们每个人的大脑都是不同的,所以我们无法把你大脑中的权重放到我的大脑中。

单个神经元的硬件不同

硬件是不同的,单个神经元的精确特性也是不同的。学习过程已经学会利用所有这些特性。因此,从某种意义上说,我们是 凡人 ,因为我大脑中的权重(weights)对另一个大脑没啥用。当我死后,这些权重(weights)就毫无用处了。

我们可以彼此传递信息,尽管效率不高。说话的人吐出句子,听者接收信息想办法改变权重,以便能理解对方说的是啥,这就是所谓的蒸馏(distillation) *。但这是一种非常低效的知识交流方式。

*蒸馏(distillation) 出自 Hinton 的论文 在神经网络中提炼知识。这是机器学习中的一个概念,指的是将一个复杂模型(教师模型)的知识转移到一个较简单的模型(学生模型)中。在人类交流的语境下,它暗示了一个人试图理解并内化另一个人表达的概念的过程。Tom Yeh 有一个很棒的图示。

在神经网络中提炼知识(2015)

数字系统有“不死之身”。一旦你有了权重,你可以将它们存入计算机,然后在另一台计算机上输入相同的权重,这两个数字系统就能计算出相同的结果。因此,数字系统可以 共享权重 。如果你有一群数字系统,每个系统从相同的权重开始,进行一些学习,然后再次共享权重,它们就会知道彼此学到了什么。这是我们(人类)无法做到的事情。人类需要通过语言、文字等间接方式来传递知识,而不能直接"复制"大脑中的神经连接,以这种方式共享知识。

交叉神经科学,我们开发的系统还缺点什么?

变化的时间尺度:临时权重的变化

神经科学领域中我们需要赶上的一个重要方面是变化的时间尺度 (time scale)。在几乎所有的神经网络中,活动有快速的时间变化,所以人们进来时活动和嵌入向量会改变,然后有一个缓慢的时间尺度改变权重,这就是长期学习。在大脑中,权重变化有多个时间尺度,例如,如果我说一个意想不到的词"黄瓜",然后五分钟后你戴上耳机,有很多噪音和非常微弱的词,你会更容易识别"黄瓜"这个词,因为我五分钟前说过它。那么这种知识在大脑中在哪里?这种知识显然是突触的临时变化。这不是神经元在不断重复"黄瓜黄瓜黄瓜",你没有足够的神经元来做这个。它存在于权重的临时变化中。

使用快速权重来模糊旧记忆(1987)

你可以用临时权重变化做很多事情 - 我称之为"快速权重 (fast weights)"。我们在这些神经模型中没有这样做,原因是如果你有依赖于输入数据的临时权重变化,那么你就不能同时处理一堆不同的情况。目前,我们取一堆不同的字符串,把它们堆叠在一起并并行处理,因为这样你就可以做矩阵乘法,这更有效率。正是这种效率阻止了我们使用"快速权重"(但大脑显然使用它进行临时记忆)。像 Graphcore* 这样的技术,如果它们变成顺序的并且只做在线学习 (online learning),那么它们就可以使用快速权重。我认为当人们使用电导作为权重时,我最终会弄明白这一点。

*Graphcore 是一家英国的人工智能芯片公司,设计用于机器学习和人工智能应用的处理器 Intelligence Processing Unit (IPU)

Graphcore IPU 图示

了解模型的工作原理和大脑的工作原理如何影响你的思维方式?

一个重大影响是,多年来, 人们轻视 通过给大型随机神经网络提供大量训练数据,就能学习复杂的事物 的想法。语言学家或统计学家认为,没有办法学习那种复杂的东西,那是一种天生的知识,而且如果没有架构和限制,它无法很好地学习。

实际上,你可以拿一个大型随机神经网络,仅仅通过训练数据就能学习到一堆东西。随机梯度下降 (Stochastic gradient descent) 的思想是通过反复调整权重,使用梯度来学习东西,它能学习到大而复杂的事物,这一点已经被这些大模型所验证。这对于理解大脑非常重要,它表明大脑不需要拥有所有这些先天结构(innate structure),显然它确实有许多先天结构,但对于那些容易学的东西,它并不需要先天结构。

* 随机梯度下降——LLM 正在验证使用梯度重复调整权重来做复杂事情的能力。

Hinton 的问题是,反向传播是不是在做梯度学习?

( 未完待续 )

持续更新的 roam 版本:查看「阅读原文」

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

胖车库
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开