如今,大型语言模型就像是有着无限词汇量的超级大脑,它们能够帮助我们解答问题、写作文、甚至编故事。但是,就像学生在学习新知识时一样,在学习新知识时,大语言模型需要一步步来,不能一蹴而就。这些超级大脑如果能“展示它们的思考过程”,就能处理更复杂的问题。
回想一下小学学习加法的时候,老师不会直接让你计算一个庞大的数字。如果你知道怎么加两个小数字,只需纸笔和一丝耐心,从个位数开始,逐步加上去,不知不觉就能算出一个天文数字。这种按部就班的方法对我们很有效。“我们解决问题不是靠盯着它直到答案蹦出来,”哈佛大学的机器学习研究员埃兰·马拉赫(Eran Malach)说,“而是需要循序渐进。”
这种逐步推进的思考方式也启发了研究 ChatGPT 这样的大语言模型的科学家们。这些高端的聊天机器人能轻松处理一些简单的计算问题,但面对需要多步骤的复杂计算时就会卡壳,例如两个大数字相加。不过在 2022 年,谷歌的研究人员发现【1】,如果让这些语言模型学习像人类一样逐步解决问题,它们突然就能解决之前难以攻克的问题。这种方法被称为“思维链”(chain-of-thought),尽管科学家们还在探索其背后的原理,但它已经开始被广泛应用了。
目前,一些研究团队正在使用计算复杂性理论(computational complexity theory)探索思维链的神秘力量。他们想了解这些大语言模型能做什么、不能做什么、哪里可能会出现问题,以及如何更好地构建它们。“这打破了大语言模型的一部分神秘感,”
威斯康星大学麦迪逊分校的机器学习研究员迪米特里斯·帕帕利奥普洛斯(Dimitris Papailiopoulos)说,“这是件好事。
01 大预言模型的训练营:变压器
人工神经网络是大型语言模型的基础。这些网络里的“神经元”会对代表单词的数字序列进行简单的数学操作,进而将一个单词转换成另一个单词。这种转换依赖于一组称为网络参数的数字,它们决定了神经元之间的连接强度。
要让一个语言模型能流畅地“说话”,研究人员得先向模型输入大量的文本数据,对这些参数进行训练。模型尝试根据已知的词来预测下一个词,然后根据预测结果调整参数。这样反复调整,模型就能学会如何对未知的的输入做出反应了。
自谷歌在 2017 年推出变压器(transformers)模型以来,训练神经网络处理语言的工作实现了飞跃[2]。“七年前提出的东西,感觉已经像是史前时代。”智利天主教大学的机器学习研究员帕布洛·巴塞洛(Pablo Barceló)说。
变压器可以很容易地扩展,能在控制成本的前提下提升处理数据的能力。在变压器出现之前,神经网络的参数最多只有几亿个;而现在,最大的模型可以拥有超过一万亿个参数。正是这种规模的增加,让语言模型变得更加强大。
变压器做到这一点的关键在于其采用的“注意力机制”(attention head)。这让它们在处理文本的时候,能够识别出哪些词是最重要的。这就像是给变压器装上了一副特殊的眼镜,能让它在一大堆信息中迅速找到关键点。变压器内部有很多层,每一层都使用这种眼镜,让信息处理变得更精准。这种设计不仅加快了训练速度,还让我们能用更大的数据集来训练模型,并把庞大的计算任务分散到多个处理器上并行工作。“要想从大数据中获得最大的收益,就需要构建非常大的模型,”圣母大学的机器学习研究员大卫·张(David Chiang)说,“如果不并行处理,训练这样的模型就不现实。”
话虽如此,在训练完成后,变压器用于并行处理的架构就显得有些多余了。在实际使用中,变压器需要一次输出一个词,并将这个词加回到输入中以生成下一个词。这种方式虽然有效,却局限于最初为并行处理而优化的架构之内。随着基于变压器的模型变得越来越庞大,处理一些复杂任务时的挑战也随之增加。这让研究人员开始思考,是否在追求模型并行处理能力时,忽略了其它可能更加重要的能力。这引出了一个问题:我们是否能从理论上深入理解变压器的工作原理,以发展出更加先进的模型?
02 探索变压器的复杂性
研究神经网络,特别是它们如何学习,一直是个大挑战。当神经网络在训练中通过梯度下降法微调参数时,人们很难理解这个过程如何带来好的参数。一些研究者决定不深究训练过程,而尝试把变压器的参数调整到任何他们想要的值,看看变压器能做到什么程度。这其实就像是把变压器当成一台特殊的可编程计算机来研究。
“当你手头有一台计算设备,你自然会好奇,这台机器能完成哪些任务?能解决哪些计算问题?”张这样提问。这是计算理论研究的核心,旨在深入理解计算机的潜能和局限。
这个研究方向可以追溯到 1936 年,阿兰·图灵设想出了图灵机——理论上能执行任何计算任务的机器。随后,计算复杂性理论家在图灵的基础上进一步发展,将计算问题分成了不同的复杂性类别,每个类别根据解决问题所需的资源量来定义。到了 2019 年,巴塞洛(Barceló)和他的团队证明[3],固定参数数量的变压器在理想状态下和图灵机一样强大。也就是说,如果能让变压器不断地把自己的输出作为输入,并为特定问题设置合适的参数,它最终能找到正确答案。不过,这个结论基于了一些不太实际的假设,可能让人对变压器的实际能力期待过高。在接下来的几年里,研究者们努力想要发展出更切实的理论框架。
这项工作的一个关键节点发生在 2021 年,当时威廉·梅里尔(William Merrill)即将离开艾伦人工智能研究所,前往纽约大学继续他的学术之路。艾伦所期间的研究让他认识到,他所用的方法可能不适合分析变压器的并行架构。在离开之前,他和研究过复杂性理论的同事阿希什·萨巴尔瓦尔(Ashish Sabharwal)讨论了这个问题。他们开始思考,复杂性理论是否能帮助揭示变压器的局限。“看上去变压器是个很简单的模型,我们应该能找出它的一些明确限制。”萨巴尔瓦尔说。
为了探究这个想法,他们使用了计算复杂性理论中的一个分支——线路复杂性(circuit complexity),来分析变压器。这个分支通常用来研究并行计算问题,最近也被应用于简化版本的变压器上[4]。接下来的一年里,他们修正了之前研究中的一些不切实际的假设。
他们考虑了一个特定的情况:变压器不能将其输出作为输入进行反馈,也就是说,它们必须一次性给出最终答案。他们发现,在这种框架下,变压器无法解决超出特定复杂度范畴的计算问题[5]。甚至一些看似简单的数学问题,如解线性方程,都可能超出变压器处理的范围。这一发现揭示了并行处理的双刃剑属性:它为变压器提供了强大的计算能力,但在某些情况下也限制了它们的表现。“给变压器一个输入,要让它立即给出答案,这种情况下变压器的表现其实相当有限。”梅里尔解释说。
03 思想实验:让变压器“逐步思考”
梅里尔和萨巴尔瓦尔的研究提出了一个引人入胜的问题:如果变压器可以循环使用自己生成的信息,它们的能力会提升多少?这个问题并不新颖,早在 2019 年,巴塞洛及其团队就已经开始探讨这个概念。但随着“思维链”技术的出现,这个问题变得更加紧迫和实际。
想象一下,如果我们给语言模型提供的指令不仅仅是直接得出答案,而是要求它们展示出解题的每一步思考过程,会有怎样的结果?这正是梅里尔和萨巴尔瓦尔试图探索的[6]——让语言模型学会利用自己先前的“思考成果”,我们是否能借此打破它们处理信息的传统限制?
北京大学的研究团队也在这条路上探索,并且他们在 2023 年 5 月发表的一篇论文中表示[7],这种方法是有希望的。他们发现,即使是那些看似超出变压器能力范围的问题,通过引入中间步骤,它们也能找到解决方案。
但是,让变压器这样“逐步思考”并不简单。到了 10 月,梅里尔和萨巴尔瓦尔的进一步研究表明[8],这种方法的有效性很大程度上取决于变压器在给出最终答案之前能够进行多少次中间步骤的“思考”。解决一个较大数字的加法问题比解决一个小数字的加法问题需要更多的中间步骤。这意味着,少数几步中间“思考”对变压器的帮助不大。事实上,只有当中间步骤的数量随着问题的复杂度成比例增加时,变压器的思维链才真正开始发挥作用。这项研究的深入和彻底让许多研究者印象深刻。“他们非常清晰地界定了这个问题,”哥伦比亚大学的机器学习研究员丹尼尔·许(Daniel Hsu)评论道。
梅里尔和萨巴尔瓦尔的研究告诉我们,思维链原则上可以帮助变压器解决更复杂的问题,但这背后需要巨大的计算力。“我们在寻找其他克服变压器局限的方法,”梅里尔说。“思维链确实是一条路,但这项研究表明,它可能不是最节省成本的方式。”
04 回归现实
研究人员提醒我们,这些理论分析只能告诉我们部分真相。有意思的是,虽然理论上变压器可以解决一些问题,但这并不意味着它们在实际训练中能够自动掌握所有的解决方案。同时变压器局限的研究结果表明,没有哪种变压器能完美应对所有问题——这几乎是不可能的。正如丹尼尔·许所指出,“变压器可能表现得很出色,但须在某些特定场景下。”
即便如此,这些发现仍为我们提供了一种评估未来可能取代现有变压器的不同类型神经网络架构的方法。如果通过复杂性理论分析,我们发现某些网络类型在理论上比其他类型更有优势,那么这可能是一个强有力的迹象,表明这些网络在实际应用中能有更好的表现。大卫·张强调,在语言模型越来越多地被应用于各种实际场景的今天,理解变压器的限制变得尤其重要。这种理解能让我们不过分乐观地估计这些技术的能力。“事实上,这些模型处理很多问题的结果并不理想,我们需要非常清楚这些局限所在,”大卫·张说。“这就是为什么进行这类研究特别重要。
参考文献:
[1] https://arxiv.org/abs/2201.11903 [2] https://arxiv.org/abs/1706.03762 [3] https://arxiv.org/abs/1901.03429 [4] https://arxiv.org/abs/2204.06618 [5] https://arxiv.org/abs/2207.00729 [6] https://arxiv.org/abs/2212.10001 [7] https://arxiv.org/abs/2305.15408 [8] https://arxiv.org/abs/2310.07923