现在的大语言模型很笨吗?
从2022年12月接触ChatGPT起,我就感到语言模型第一次变得如此有用。在之后一年半的时间里,行业迅速发展,国内各大厂商也纷纷推出了自己的大模型。直到今天,我仍然没有一个稳定的住所,不停游荡在各个大模型平台还有套壳平台,DeepSeek V2是今年5月推出的,它价格低廉,多项指标领先,是我目前的主力模型。如果要聊天,则选择字节出的豆包,语音顶级,无论是识别还是合成都是让人意外的好,可惜智力水平较低,可能采用了类似Google低成本、低智力水平的路线。那大模型现在有多笨?能变聪明吗?
1
首先,很多人看待其输出的方式存在误解。我们习惯将模型的直接输出,如一篇文章或一句话,等同于它在说话或写作。但我认为并非如此。
我的看法是,模型的输出更应被看作我们大脑思考的过程。它不是最终结果,而是一个中间过程。如果坚持用等同于“人类说话、写作”的标准来评判,模型自然显得很笨。
这个过程像什么呢?我的猜想是,它类似于一种即时反应。就像针扎到手会下意识喊痛一样,当你直接问模型“9.11和9.9哪个大,直接给出答案”时,它给出的答案就是这种未经审视的反应。比作生物反射有点夸张,但是更接近大脑原始、快速的反应过程。
我们日常生活上下文看起来是无限的,不是很直观,做梦的经历能提供一些启发。梦境在发生时感觉逻辑自洽,事后却经不起推敲。大模型的表现与此相似:看似流畅的回答中可能包含逻辑错误,并且很明显可以感受到,梦境中的上下文极短,很容易被不清晰的前提推导下去。这么看,现在大模型是不是强的离谱,说梦话都能行之有理,有条不紊。大家可以试试自己不停顿一直往下说话,录音下来听听看有多少无意义的话(对人来说,当口误直接忽略就行,但是对大模型来说……)。
2
社交媒体中大模型时而聪明、时而笨拙。
模型的“笨”体现在一些几乎人人都能完成的基础任务上。例如,它有时无法直接区分9.9和9.11的大小。用我的想法解释,这是因为它被要求给出“即时反应”,而这个反应并未经过内部的逻辑步骤,可以理解成给出一个“背下来的最有印象的答案”。
另一方面,模型又展现出“聪明”的一面。一个显著的进步是代码生成能力。最早的ChatGPT 3.5几乎无法直接生成可用代码,而现在我使用的DeepSeek模型,很多代码可以一次运行。这引发了“程序员是否会被替代”的讨论。
许多提升模型准确率的方法,无意中印证了引导“思考过程”的重要性。将模型的逐个TOKEN输出视为其想法而非最终言语,其表现的正确率会提高。例如,在要求模型比较两个小数大小之前,先让它回顾比较规则,它的回答会准确得多。或者用通用的zero-shot方法,COT方法,即让模型“think step by step”。也可以专门制定一系列例子或者规则,这是更麻烦的few-shot,但有更好效果。
无论是few-shot还是zero-shot提示,这些技巧都在间接应用我所说的想法。
3
从底层看,大模型基于Transformer的sequence to sequence架构,以流式方式逐个推理生成TOKEN。这种生成机制看起来和说话一样,但与人类的丰富表达方式有别。同时,TOKEN只是对文字词典的一种近似切分,并非完全等价。
在此需要区分“推理”与“思考”。推理和思考其实生活中差不多,但是在人工智能领域,模型从输入到输出的过程,称为推理(inference),这是一个庞大的模型本身计算过程。而这里我用“思考”区分,人类的思考则包含斟酌和内省,人类说话或写作前,大脑已经过多次权衡,这与计算过程有本质区别。因此,当模型直接回答问题时,其背后的过程不能简单地等同于人类的思考。最简单的差别,比如有长度次数的根本不同。
4
基于以上,如何构建更强大的能够思考的模型?
可以设想两种方式。一种比较简单:让模型先生成独立的“思考区”,然后用分隔符输出最终的“结果区”。更合理的方式,是模仿人类“一边想一边说”,让思考内容和结果内容交错输出。这种方式更自然,但构造相应训练数据的难度会大很多。目前来讲用提示词就可以实现,但由于训练中没有相关数据,这个思考很大程度不靠谱。
挑战之一是教会模型思考。目前的训练数据多为“问题-答案”对,缺少“思考过程”的数据,需要设法创造很多这类数据。 另一个难题在于奖励机制。如何确保模型是在进行真正的思考,而不是学会先给出答案,再反向构造一个合理的“思考过程”以获取奖励?这是一个非常困难的点。
总而言之,这是我对大模型当前表现的一些看法,显然我持非常乐观的态度。大模型在简单的判断任务上已具备较高准确率,只要我们能将复杂问题拆解成一系列它能处理的小判断,就能解决非常困难的问题。不要低估现在的大模型,它已经展现出了变聪明的潜力。