赞
踩
原创 DataLearner DataLearner 2023-12-06 17:18 德国
本文来自DataLearnerAI官方网站:
在GPT-4这种超大基座模型发布之后,一个非常活跃的方向是专有模型的发展。即一个普遍的观点认为,基座大模型虽然有很好的通用基础知识,但是对于专有的领域如医学、金融领域等,缺少专门的语料训练,因此可能表现并不那么好。如果我们使用专有数据训练一个领域大模型可能是一种非常好的思路,也是一种非常理想的商业策略。但是,微软最新的一个研究表明,通用基座大模型如果使用恰当的prompt,也许并不比专有模型差!同时,他们还提出了一个非常新颖的动态prompt生成策略,结合了领域数据,非常值得大家参考。
基座模型 vs 领域大模型
微软Prompt新方法MedPrompt
动态少样本选择(Dynamic few-shot)
自生成思维链(Self-generated chain of thought)
选项洗牌集成(Choice Shuffling Ensemble)
MedPrompt效果
总结
长久以来都有一种观点,通用基座大模型如GPT-4等,虽然在广发的任务上都有非常不错的表现,但是对于医学、金融等领域来说,使用基座大模型+领域数据进行微调获得一个专用大模型的效果更好。这也是当前非常主流的认知和观点,也是非常多的公司的商业逻辑。因此,诞生了如BioGPT、PubMedBERT、Med-PaLM 2等知名的领域大模型。
而微软的研究人员这并不是经过科学验证的结论。是否可以通过更加精巧的Prompt技术来解锁大模型的能力以获得近似微调的效果是一个值得探索的方向。为此,他们选择医学领域作为一个测试,设计了一种非常新颖的Prompt技术,结合了领域数据,验证GPT-4是否在不微调的情况下超越领域专用大模型(如Med-PaLM2),注意,也就是说这里是使用通用大模型+prompt技术挑战专用大模型在专业领域的效果。
而这个结论是可以的。下图是微软测试的高级Prompt+GPT-4与简单Prompt+GPT-4和Med-PaLM2的对比结果。
Med-PaLM2是Google发布的一个针对医学领域的大模型,在MedQA数据集的测试上拿下了86.5%的高分。超过了GPT-4的基础模型。而微软通过MedPrompt提示工程技术,直接让GPT-4在医学领域的评测结果超过了Med-PaLM2。
下图是微软测试的结果:
微软提到的这个Prompt方法实际上是一种结合了训练数据的few-shot方法。简单来说,在prompt中加入few-shot案例,可以大幅提高模型的性能。但是传统技术上都是直接使用固定的few-shot案例,这显然是低效的。在大量的领域知识中这种使用方式几乎不可行。为此,微软考虑让模型自动搜索领域知识,然后生成few-shot样例再为用户提供答案。
在微软的案例中,具体来说,就是为GPT-4准备医学领域的预训练数据,在GPT-4回答用户领域问题之前,先通过检索的方法从训练数据中找到近似的问答结果,然后构造few-shot案例,嵌入用户的输入中,再让模型回答问题。
而微软这种通过训练数据构造few-shot的MedPrompt也不是简单的选择训练数据回答,而是包括三个方法的框架:
根据测试样本选择k个训练样本,使其与测试样本语义最相似,构成少样本展示。使用text-embedding-ada-002模型将样本映射为向量表示,基于向量空间距离计算相似性。
这个动态选择样本的方式相比此前那种固定的few-shot方式有个最大的好处是可以借助领域数据动态构建few-shot案例,而不是固定的结果,这种方式更加灵活高效。这种方法还可以结合传统的kNN技术获得更好的效果。
而使用向量相似度检索可以大幅提升找到相关数据的概率。
思维链(Chain of Thought, CoT)技术是一种大模型改进的大模型prompt技术,它通过提供少量提示(few-shot)来分解复杂的思维。实际操作中只是加上类似这样“Let’s think step by step,”这样鼓励大模型通过更细的步骤来解决问题就可以获得不错的效果。这种方法已被发现可以提高LLM在复杂算术、常识和符号推理任务上的性能。
微软结合前面的动态选择训练数据,使用GPT-4来自主生成每道题目的详细思维展示,作为Prompt(提示)给GPT-4使用。
这个过程发生在预处理阶段,将所有的领域数据通过自生成思维链技术进行处理,生成一个更加优质的Prompt示例,这样在动态few-shot选择的时候可以获得更加高质量的prompt模板。
作者对比了GPT-4生成的思维链与专家生成的对比,相比较而言GPT-4的CoT细节更丰富,甚至比专家设计的更好。
上图是微软的自生成思维链的实例,给定一个选择题,以及正确的答案,专家生成的CoT实例和GPT-4的生成的CoT对比,可以看到GPT-4生成的更加详细。
让GPT-4根据数据生成CoT的过程也比较简单,模板如下(第二个图是DataLearner测试结果):
也就是说微软先用GPT-4在领域数据中自动生成CoT的数据,然后动态prompt生成few-shot时候基于这些改造成CoT回答的样例告诉模型如何回答。
这个方法主要解决大模型的一些不稳定的问题。我们都知道大模型的问题的回答通常有一定的随机性。这种方法的核心在于通过改变问题中的选项顺序,然后观察模型对不同顺序下选择的一致性,以此来减少模型对某些选项的偏好。
具体来说,它是在模型已经接收到问题和任何相关提示(如在Medprompt方法中的动态少样本选择和自动生成的思维链)之后,但在最终决定答案之前使用的。
这个方法的集成部分主要是指将模型在不同选项顺序情况下生成的多个答案进行汇总和分析。集成的目的是从这些不同情况下的答案中得到最终的、更可靠的答案。具体步骤如下:
改变选项顺序:对于一个多项选择题,模型会多次尝试回答,每次尝试中问题的选项顺序都会不同。
生成多个答案:模型在每种不同的选项顺序下都会生成一个答案。
分析答案的一致性:观察模型在不同选项顺序下的答案是否保持一致。如果模型倾向于无论选项顺序如何都选择同一个答案,这表明该答案可能是正确的。
集成和决策:最后,通过比较不同情况下的答案,选择最一致或最频繁出现的答案作为最终答案。
通过这种方法,研究者能够减少模型在回答多项选择题时对特定选项位置的偏好,从而提高答案的准确性和模型的可靠性。
在这篇论文中,作者给出了很多测试,来证明使用上述Prompt方法是可以达到或者接近fine-tuning效果的。下图是模型在MedQA准确率的结果:
上图是最终的结果,展示了不同技术的效果:
可以看到,这个技术可以将GPT-4在医学领域的成绩从81.7分提高到了90.2分。而谷歌的Med-PaLM2在MedQA得分是86.5分!
所有的评测结果如下:
总结
这个论文其实贡献了很多重要的有价值的结论,主要包括:
它证明了使用Prompt技术配合领域数据是可以提高基座模型在特定领域的能力的,媲美甚至超过fine-tuning;
动态Prompt和自生成CoT技术给了一种非常好的结合领域数据和prompt的方法,为领域大模型微调提供了另外一种思路。
但是,这个结论也未必适合所有情况,因为首先GPT-4模型已经有了很好的医学基础。也就是说,基座模型的强大可能是前提,如果基座模型不行,可能也会影响这个方法的效果。
大家可以仔细阅读原文获得更加详细的信息:Can Generalist Foundation Models Outcompete Special-Purpose Tuning? Case Study in Medicine
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。