读了一篇非常有趣的文章,作者是哈佛的一个博士生 Kenneth Li。 文章讲的是我自己写过很多遍的一个主题:为什么说大语言模型不是仅仅学到了语料的统计相关性,而是学到了某些更深刻的逻辑概念。但这篇文章不仅仅停留在理论探讨上,而是直接做了一个生动的实验证明了这一点。 基本想法是这样:假定你和朋友喜欢在家里下棋,而窗外总是有一只乌鸦在看。过了一阵子,乌鸦开始插嘴说下一步应该怎么走,并且它提出的下法总是合理的(不管水平好不好,但至少符合规则)。于是你想弄明白一个问题:乌鸦到底是只是因为看太多次了,记住了哪一步棋后面总是跟着哪些走法,还是乌鸦真的弄明白了规则本身? 于是你和朋友约好,在下棋的某一刻,趁着乌鸦走神,把棋子偷偷调整一下,然后看乌鸦怎么说。如果乌鸦只是在通过之前的走法从统计上预测下一步,它的建议就会和新的棋盘相冲突。如果乌鸦是真的弄明白了规则,它建议的就会是基于新的盘面的合理走法。 很显然,在这里,大语言模型就是那只乌鸦。而作者真的做了一系列实验来观察这件事。他们设计了一个简单的下棋游戏,把棋谱作为语料交给大语言模型来训练,训练出了一个会下棋的模型。今天 AI 会下棋已经司空见惯了,所以到这一步既不令人惊讶也不说明什么问题,就像前面说的,你无法分辨模型是记住了统计规律还是在更深刻的意义上弄懂了规则。但接下来是真正的考验:首先通过模型探针,把模型的内部状态和棋盘之间的对应还原出来,然后强行改写这个中间状态,观察模型的输出。 和你想象的一样,模型仍然给出了合乎规则的结果。也就是说,模型确实是在根据它内在建构的那个虚拟棋盘做决定。即使改写的状态是一个正常的输入序列所不可能到达的棋盘盘面,也就是说是它在训练数据中从未见过的——这是我们人类常常做的事,从一个假设性的反事实的状态出发向下推导,类似于某种残局训练——模型仍然可以正常工作。 用作者本人的话说:It allows us to imaginarily go down the untaken path in the garden of forking paths.(这里显然是对博尔赫斯的致敬。 为什么这件事很重要呢?因为有或者没有这个内在的世界图景,决定性地影响了大语言模型的能力上限。内在世界图景意味着它是把外部的输入先映射在这个图景上,然后再在此基础上做出下一步的判断,这就从根本上跳出了统计相关性的限制(「胸有成竹」这个成语用在这里再好不过)。没能学习到内在世界图景的语言模型只是在字面意义上的鹦鹉学舌,并不知道自己在说什么。而一个内在的世界图景,不管多么简陋,都是在通向通用人工智能道路上的关键一步。 虽然我们暂时还不是百分之百理解大语言模型内部的竹子是怎么长出来的,以及它有多可靠。我们甚至都不是特别确定这件事是在哪个版本的大语言模型上开始发生的。但目前的所有证据都表明,那棵竹子确实已经在那里了。
Author: 木遥
2023-3-3
2023-2-25
对 AI 的思维链条 CoT 能力和进展多说两句。 1. AI 的 CoT 能力基本上就是在 GPT3 和 GPT3.5 这两个版本之间的某处诞生的。GPT3 还几乎不具备 CoT,而基于 GPT3.5 的 ChatGPT 已经明显具备了。考虑到这个飞跃对通用人工智能的关键程度,我们确实是在过去一两年里眼睁睁目睹了一次 ground breaking 级别的技术进展。(顺便吐槽一下 GPT 这个糟糕的版本号系统。 2. 人们对 CoT 能力究竟是怎么从大语言模型中产生的目前并不是特别了解。许多人都观察到似乎让模型多读一些代码语料有助于培养 CoT。Google Brain 的 Peter Liu 猜测说这是因为读代码能逼着语言模型把相隔很远的词联系起来思考(这是代码的特点)。AI2 的 Yao Fu 猜测这是因为代码的多层级性有助于语言模型理解 CoT。但这都还只是猜测。这是目前最有趣也最重要的理论问题之一。 ——不要把这一条理解为让你的孩子去学 Python 有助于培养思维能力。没有用的。 3. 同样在过去两年内出现的一个新的热词是 Grokking,中文可能可以翻译成「顿悟」,它描述了这样一种现象:一个高度复杂的神经网络在漫长的训练期内一直只能记住训练样本的信息,几乎没有泛化能力,但到了某一刻,它的泛化水平忽然跳了出来,而且非常完美。你可以想象成一个神经网络经历了一个「aha moment」,像是内部的某个齿轮忽然对上了一样。我的理解是 CoT 也可以看做是一种 Grokking。 4. 在一种很粗糙的意义上说,大语言模型的外部属性(也就是用户可以直接感知和评估的属性)可以分解为「知识基础」+「推理能力」+「表达能力」这三个层面。大多数关于 ChatGPT 的讨论把目光集中在第一项和第三项,忽视了第二项的革命性进展。当人们热衷于吐槽它的知识基础(比如竟然不知道某件事或者完全弄错了某个事实)的时候,多少有点 miss […]
2023-2-24
展开讲讲一些关于大语言模型的理解的问题在哪里。 这些评论通常归结为这句话:大语言模型「只不过是把语料中的统计相关性复现出来而已。」但这句话是错的,其错误程度就像是在 AlphaGo 出现的时候说「AlphaGo 只不过是在背诵它见过的棋谱而已」一样。 很多人对大语言模型(或者更一般地说,大神经网络)的理解还停留在两三年前。而过去两年里重要的两个研究方向(并不只有这两个,但它们对下面要说的事最关键)显示出它终于开始初步跳出贝叶斯的陷阱,展现出了一点通用智能的模样。这两者一是思维链条(chain of thought, CoT),二是自发性地结构涌现(英文文献里一般就直接简称为 emergence)。 如果你看过《思考快与慢》这本书,你可能知道传统的大神经网络是标准的快思考模式。输入一个样本,网络直接输出一个答案,没有推理过程,本质上是直觉。人们长期以来对神经网络的诟病也在于此:人之所以区别于动物,是因为人除了直觉之外还会慢思考,也就是逐步推理型的思考。长期以来人们认为神经网络无法实现这样的思考。 但 CoT 恰恰是一个试图复现慢思考模式的工程上的尝试:我也许不能直接教神经网络做推理,但我可以硬性规定它一步一步输出推理环节。打个比方,就像是你的中学老师告诉你「直接写出答案是不给分的,你必须写出过程」。逼着神经网络写出思考过程也许并不等于真的在慢思考,但没关系,既然它输出了整个思维链条的文字版本,那实质上的结果是一样的。(其实人类的学习和这差别也不大,「真正会思考」和「显得像是在思考」这两者的区别有时候只是哲学上的。Fake it till you make it. 一个典型的例子是 Amazon 最近的一篇论文 Multimodal Chain-of-Thought Reasoning in Language Models。你给 AI 的数据是一幅图片,上面画着饼干和薯条,然后问 AI:这两者的共同点在哪里?A:都是软的。B:都是咸的。 AI 并不被训练直接选择 B(这种训练是没有意义的,也无法推广)。AI 被训练的是输出下面这样一段文字:「看看这两样东西。对每个东西,判断它有哪些特性。薯条是咸的,饼干是咸的。软的东西你捏它的时候会变形。薯条是软的,但饼干不是。两个东西的共同特性是咸的。所以选 B。」 因为这是一大段文字,AI 并不会一次性说完。它可以每说一个词就「回过头去看一眼」图案(在比喻意义上),然后把图案的信息和自己已经说出来的部分整合,再预测下一个词是什么。每一次具体的预测仍然是快思考,但逐个词说下来的结果,就是它正确地模拟了慢思考。 Amazon 这个模型的结果在许多测试集上的得分都超过了人类平均水平,你很容易看出来,这种训练下说 AI 只是记住了语料文字的相关性是不公平的。它不可能只是肤浅地死记硬背「什么词后面大概率跟着什么词」。 设计有了,为什么能做到呢?于是就要说到上面提到的第二件事:emergence。 这是过去两年来人们最大的发现之一。只要神经网络的复杂性和训练样本的多样性超过一定规模,就会有抽象的推理结构在神经网络里突然自发涌现出来。这个过程像所有的复杂性系统一样是非线性的。去年十月份 Google 的一篇论文 Emergent Abilities of Large Language Models 对这个现象做了很好的综述。简单地说:量变导致质变。 (另一方面,由于涌现是非线性的,这也使得要预测它的发展极为困难。如果今天的模型暂时还不能解决某一类任务,你无法估计模型要再扩张多少才能涌现出新的能力去解决这些任务。可能永远不行,可能下一个阈值会超出硬件的能力极限,可能你需要的全新的网络架构。所有这些问题都无法用简单的外推来回答。这种非线性也是人工智能波浪形发展的根源:你会在好几年里觉得一事无成(比如前几年大量声音说大模型已死),接着忽然迎来一个剧烈爆发的增长,然后可能又进入下一个等待期。 但重点在于,今天的大语言模型已经在很多方向上确定无疑地迈过了某个重要的阈值。这使得整个关于模型能力的认知都需要迅速重估。最典型的就是 […]
2023-2-7
虽然这个话题已经有点过热了,但我觉得还是值得写一下为什么 ChatGPT (确切说是以它为代表的大语言模型的进展)是重要的。(顺便说一句,几个小时前 Google 宣布即将推出自家竞品 Bard,白热化的竞争指日可待)。 ChatGPT 不是一个聊天机器人。ChatGPT 是一个以自然语言为界面的机器人。这是不同的两件事。 「作为一种服务的自然语言界面」并不是一个常见的概念,虽然这件事每天都在发生。一个人从最早接受教育的时刻就在训练自己把书本上的内容翻译成自己心里可以理解的自然语言,并且也许你脑海中想象过这样的场景:在看书的时候有一个精灵浮现在书本上对你说:「我了解这本书的全部内容,你有什么问题可以问我。我是这本书里的结构化知识的对话界面。」这是件很诱人的事,但你极少听到人们谈论这个需求,因为就像大多数新事物一样,在它诞生之前人们甚至没有意识到这是可以被需求的。这怎么可能呢? 作为一种服务的自然语言界面是极为昂贵的,为了给教材一个这样的界面,人们发明了教师。为了给财报一个这样的界面,人们发明了基金经理。为了给法律文书一个这样的界面,人们发明了律师。事实上,几乎所有现代经济中的「professionals」本质上都是这样的一种服务。它把结构化的信息转译成自然语言,可以被讨论、被诘问、被辩难,然后再被对手方转译回结构化的信息。 以 ChatGPT 为代表的语言模型宣告说:这件事是可以被机器做到的。不是无中生有的创造信息,而是对它的归纳、总结、举例、在不同结构之间切换。——这就是为什么上个月微软董事长 Nadella 说这是新的工业革命(我倾向于同意他),因为信息流通转译的服务(不是信息本身,但这种服务是现代经济的血脉)的价格在一夜之间被彻底改变了。 有许多人不认为大语言模型有智能。最有代表性的可能是图灵奖得主 Yann Lecun,每天咆哮痛斥 ChatGPT 已经成了他最近的每日功课。就在昨天他发推说「任何一只猫所掌握的常识都比任何今天的大语言模型更多。」有人在评论里弱弱地问:「你家的猫也能写 Python 吗?」他回复说:「写 Python 算个狗屁智能。」 我不会说猫的任何坏话(也不会说 Python 的任何好话),所以我只能说他说得对,但这是没什么意义的正确。半拉子智能也可以有实际的用处。语言模型并不需要「在本质上了解世界」,只要装做了解并且能够侃侃而谈就可以了。毕竟很多大V(以及麦肯锡和德勤的咨询师们)能做的也不过如此。 当你急于指出 ChatGPT 的弱点(太多了,我自己在过去两个月里写过不少)的时候,有必要想到的是:首先,这里有些是 ChatGPT 这个特定产品的问题而未必是大语言模型的问题(比如很多人不喜欢 ChatGPT 不给出参考文献,但它的一个竞品 perplexity 就会给)。其次,也是更重要的是,这个领域在接下来的几个月和几年里会因为大量资金的投入突飞猛进。AlphaGo 刚推出的时候也有人嘲笑说它连欧洲围棋冠军都下不赢,但重点在于「它竟然有资格跟欧洲围棋冠军下棋了」。 同样的,当你抱怨 ChatGPT 鬼话连篇满嘴跑火车的时候,这可能有点像你看到一只猴子在沙滩上用石头写下1+1=3。它确实算错了,但这不是重点。它有一天会算对的。
2023-2-4
跟朋友讨论了一下 ChatGPT 大规模取代码农工作的前景。以下是大致的讨论纪要。谁是谁不太重要,用AB代替。这是个没有结论的讨论。 A:所以你觉得 ChatGPT 会导致程序员大规模失业? B:我觉得这个可能性是真实存在的。 A:但你觉得今天的程序员的职业行为的智能水平 ChatGPT 真能胜任吗? B:不是这么算的,它不需要取代一整个程序员。它只要能让每个程序员节省10%的工作量,那整体换算下来就可以节省10%的 head count。 A:但你怎么节省10%的工作量呢?咱们不讨论什么遥远的未来,就说今天,你用ChatGPT能替代哪些工作?我承认它可以帮着写写 review 之类,但…… B:不我说的不是那个,那些当然可以,但不是本质问题。我是说真正的程序员的实质工作。 A:但这里的问题在于,你可以让 ChatGPT 写个排序算法什么的,但你也知道我们日常的工作不是这样的,没人在工作中写那种孤立的面试题。你每天的工作总是要和你的业务 context 紧密相关,ChatGPT 哪来这些 context? B:对,这里我们得做一个基本假设。今天这个版本的 ChatGPT 确实不行,因为你每个 talk session 都是孤立的。但如果我们要真的讨论它的大规模应用,我们肯定不会站在今天这个版本上说话,首先全世界大大小小的软件公司都把内部业务逻辑发给微软就不可能。所以我们得假设每个公司有自己的 on-premise ChatGPT,就像私有云一样。 A:但你这个私有 ChatGPT 又怎么得到业务的 context 信息呢? B:既然是私有的,你就让它把你的公司的全体代码读一遍呗,反复读,如果有必要全公司的 design docs 也可以给它读…… A:然后它就能跟你顺利沟通了?我还是无法想象这件事,咱们举个具体的例子,比如我今天要给 APP 的 UI 做个更改,你怎么告诉它这件事?这个更改不是只是改改颜色,它要从 API 里读不同的字段,要调用已有的库…… B:你就把你对我说的这些话对它说一遍啊。这里的关键在于,你当然不能假设 ChatGPT 每次都要从头理解起。那当然太困难了,这就是我说的 on-premise 的意思,它既然住在你的公司里,你上面所说的所有这些请求的上下文它都已经了解了才对。就像你今天问 ChatGPT 红烧肉怎么做,你并不需要每次从零解释什么是肉,什么是锅,这是它已经掌握了的背景知识。放在公司里,那你现有的 […]