上周的结尾,我提了一个开放问题——“按照AI现在这个发展速度,几年后,什么样的经验是需要我们教给AI的?” 这周,随着OpenAI o1的发布,我有了新的思考:随着模型越来越强大,我们需要教给AI的东西将越来越抽象。
在我看来,大模型的能力主要体现在基础知识和推理能力两个方面。虽然业内对大模型在通用领域的应用越来越有信心,但在垂直领域仍存在挑战,因此本文将重点讨论大模型在垂直领域的应用。
在执行垂直领域任务的时候,有领域知识很重要,在复杂度比较高的任务中,推理能力也非常重要。按照目前的趋势,在推理能力上,前沿实验室的模型长期会具有绝对优势,而垂直领域知识的植入,目前有两种方式,一种是把领域知识全部放在上下文里,让模型进行in-context-learning;另一种就是自己训练、调整模型。
我比较看好第一种,始终让自己的产品能接触到最先进的推理能力更重要,我只需要把领域知识放在context中,不依赖任何一个模型,等新模型出来,我马上就可以切过去,并且in-context-learning的成本也在指数型降低,使用这种方式,成本会越来越低。
而如果使用第二种方式自己训练模型的话,存在几个问题:
首先,微调模型需要针对模型去准备相应的数据集,可能今天准备的数据对这个模型有效果,但换个模型就不work了,需要重新根据新的模型准备数据,切换成本很高,如果使用第一种方式,则只需要切换模型,对prompt不需要过多的修改,切换成本很低。
其次,微调具有一定的不可逆性,而且是个黑盒(我们不知道自己输入的数据集产生了多大效果),有可能一开始微调模型的时候,是根据产品策略A来准备的数据集,但是过了一段时间,切换了产品策略,那就需要让模型按照产品策略B来进行回复,这个时候面临一个选择:是重新开始训呢?还是基于之前的模型继续训呢?每种选择都意味着巨大的成本,而如果使用in-context-learning,更改产品策略的成本很低,只需要调整一下prompt即可。
此外,很多模型不是一开始就允许微调的。比如说,GPT-4o于2024年5月13日发布,8月20日,官方才支持对这个模型进行fine-tuning。对于AI赛道的产品来说,3个月,如隔三秋。正如之前所讨论过的,对AI Native应用来说,模型能力很大程度上决定了产品效果。如果新一代模型有了很强的能力提升,竞争对手使用的是in-context-learning,而我们的产品高度依赖fine-tuning,那就意味着竞争对手在用户体验上会领先我们3个月,等到时候支持fine-tuning了,新一代模型可能又出来了,这个时候就很尴尬,我是应该继续fine-tune旧模型呢?还是等新的模型支持fine-tuning呢?如果按照这种方式,用户体验可能永远也追不上竞争对手。所以,长期来看,fine-tuning这种方式在商业竞争上是不可行的,会让自己处于一个非常被动的地位。
顺着逻辑推导到这里,相信我们应该都已经意识到in-context-learning是未来的趋势,要不然Google、Anthropic、OpenAI也不会在long context上投入这么多的精力。那么问题就来了,当我们想要在context中向模型传授领域知识时,应该怎么做呢? 在之前,one-shot、few-shot是非常典型的解决办法,在context中,除了具体的执行指令外,还提供足够多的sample,让模型按照这些sample来推理回复,在常见的一些任务下表现效果都不错,一些benchmark也会采用few-shot来提高模型的表现。但是OpenAI o1的发布给我带来了新的思路,o1通过让模型在正式回答问题之前学会了使用Chain-of-thought进行“慢思考”,实现了模型能力的巨大跃升,我仔细观察过一些“慢思考”的内容,模型已经学会了像人一样,在回答问题之前,反复推敲自己的想法、排除可能错误的选项、顺着逻辑推导新的内容,换个角度讲,它会仔细思考我们给它的prompt,在“慢思考”中榨取尽可能多的信息量。这意味着什么呢?以后,我们可能不需要向模型说一些很细节的内容,而是说一些比较宏观、抽象的指示,它会结合自己的内在知识库,尽可能多地从抽象信息中推导出合理的细节。
我举一个例子,比如说我做了一个AI教师,现在AI需要给学生上一节数学课,内容是两个数的乘法,放在之前,我需要给模型提供一个非常详细的教案,让它完全按照我的意思去讲。但是以后,我可能只需要简单的一句话,“用耐心的语气,向一名二年级学生讲授两个数的乘法,这个学生具有XXX特点,请根据他的个人性格调整教学策略。“ 在给学生进行教学的过程中,AI会根据学生自身情况和当前教学情况,实时“慢思考”出新的策略。
为什么我认为在垂直领域给LLM提供抽象信息的方式会work呢?其实是源于芒格的多元思维理论,个体每多接触一个领域的信息,对TA来说带来的价值可能不是加法,而是乘法,我认为对于大模型也是一样的。在模型训练过程中,跨领域的知识会进行融合,不是孤立存在的,也就是说,这个模型现在是一个“通才”,当“通才”需要让自己擅长某些垂直领域时,可能不需要从0开始一点点学,只需要提供一些重要的顶层抽象信息,它就可以get到这个领域的关键点,然后根据这些信息实时推导出细节。
简单来讲,在Training Scaling Law时代,大家关注的是如何将尽可能多的信息无损压缩进模型里。在Inference Scaling Law时代,或许我们也需要开始关注,如何将人脑中的经验抽象成凝练的理论,让模型进行解压缩,变为可执行的细节,并低成本地规模化,创造更大的经济价值。