1. 引言
随着大规模语言模型(Large Language Models, LLMs)参数规模的持续增长以及语料库覆盖范围的不断扩展,其部署所需的计算资源也显著增加。这种趋势使得通过传统模型微调(Fine-Tuning)提升性能的方式愈发复杂和困难。尽管已有诸如P-Tuning和LoRA (Low-Rank Adaptation)等创新性微调方法的提出,这些方法通过仅加载模型部分参数即可实现性能优化,但在实际应用中仍面临一定的局限性,例如部署流程复杂、计算资源需求较高等问题,限制了其在资源受限场景中的大规模推广。
在此背景下,大规模语言模型逐渐展现出一种无需显式参数调整的能力,即上下文学习(In-Context Learning, ICL) [1]。上下文学习通过构建高质量的上下文示例,使得模型能够直接从输入中学习任务模式,从而执行一系列复杂任务。研究表明[1]大规模语言模型在上下文学习的支持下可以完成诸如数学推理等高难度任务。进一步上下文学习研究中,Wei [2]等人提出了思维链(Chain-of-Thought, CoT)的设计思路,通过在构建示例时引入分步推理过程,显著增强了模型的逻辑推理能力。
从模型参数的角度来看,近年来许多研究通过模型结构优化、训练策略改进、稀疏化技术等多种手段,成功训练出了参数量低于10 B的小型模型。实验表明,这些模型在特定任务上的性能与参数量超过100 B的超大规模模型相当,由于其对计算资源的需求显著降低,小型模型在实际部署和下游任务应用中展现出更大的灵活性和适配性。
本文结合参数量较小的语言模型与思维链提示的方法,旨在探索无需模型微调的情况下,通过合理构建提示信息来提升小型模型在下游推理任务中的表现。实验结果表明,仅利用部署模型所需的基础资源,即可在逻辑推理任务中取得优异的性能表现。本文的研究不仅为简化未来下游任务的部署流程提供了理论依据,也为提升其工作效率和操作便利性奠定了坚实的基础。
2. 相关工作
2.1. 上下文学习
上下文学习(In-Context Learning, ICL) [1]是指模型通过输入的上下文(通常包括任务描述、示例等)来学习如何完成一个特定任务,而无需显式的权重更新。在论文中定义为:上下文学习是一种范式,允许语言模型以示例的形式学习仅给出几个示例的任务。本质上,其通过使用预训练模型来预测以示例为条件的可能性答案。形式上,给定一个查询输入文本和一组候选答案(Y可以是类标签或一组自由文本短语),预训练语言模型将得分最高的候选答案作为示例集C的预测条件。C包含可选的任务指令I和k个演示示例;因此,其中是根据任务用自然语言文本编写的示例。候选答案的可能性可以用模型对整个输入序列的评分函数f来表示:
(1)
最终预测标签是概率最高的候选答案:
(2)
上下文学习能力实现基于少样本学习(Few-Shot)和零样本学习(Zero-Shot),在推理层面分为示例选择和示例格式两部分,在示例选择方面,有Liu [3]等人提出了基于无监督学习的检索器KATE,该方法能够通过无监督方式选择与任务相关的示例;此外Rubin [4]等人开发了基于有监督学习的检索器,通过训练模型对示例进行优化选择。在示例格式方面,Wang [5]等人提出Self-Instruct模型,在自动生成指令方面取得了良好的结果,Wei [2]等人提出了思维链(Chain-of-Thought, CoT)的设计思路,采用分步推理的方式构建高质量示例。实验表明,该方法能够显著增强模型的逻辑推理能力,尤其是在需要复杂推理的任务场景中表现尤为突出。
2.2. 思维链(CoT)提示
2.2.1. 思维链提示概念
为了解决模型微调过程中的资源消耗问题并改善少样本学习的局限性,Wei [2]等人探索了语言模型在推理任务中利用少量提示信息的能力,并提出了一种基于三元组示例的设计方法。具体而言,这些示例由三部分组成:输入(Input)、思维链(Chain-of-Thought, CoT)和输出(Output)。其中,思维链指的是一系列中间推理步骤,这些步骤以自然语言的形式呈现,并逻辑递进地引导生成最终输出。该方法被称为思维链提示(CoT-Prompting)。
在算术推理、常识推理以及符号推理等多个基准数据集上的实验表明[6],思维链提示显著优于传统的标准提示方法。这一结果不仅验证了其在复杂推理任务中的有效性,也为无需模型微调的高效提示方法提供了新的研究方向,进一步拓展了语言模型在少样本学习场景中的应用潜力。
2.2.2. 思维链提示应用
思维链的提出为样本学习方法提供了全新的研究视角和创新思路。在零样本学习(Zero-Shot)领域,Kojima [7]等人通过引入思维链指令对推理能力进行了探索。在多条指令以及多个逻辑推理数据集的实验中,研究发现采用“Let’s think step by step”这一指令(Zero-Shot-CoT)能够显著提升模型的回答准确率,证明了思维链指令在增强推理性能中的有效性。
此外,Brown [8]等人通过训练超大规模语言模型GPT-3 (175 B参数)发现,该模型展现出强大的少样本学习(Few-Shot)能力。基于这一发现,Wei [2]等人进一步提出了特定的少样本学习思维链方法,即Few-Shot-CoT,也被称为Manual-CoT。这一方法通过人为构建高质量的思维链示例,有效提升了模型在少样本场景下的推理能力。
在此基础上,后续研究将思维链提示与多阶段上下文学习相结合,发展出迭代思维链提示。例如,Least-to-Most Prompting [9]是一种典型的迭代思维链提示方法,其核心思想是将复杂问题分解为多个子问题,并通过多轮问答逐步解决每个子问题。每次推理都会携带前一次子问题的问答结果,从而显著提高了模型的推理准确性,特别是在复杂逻辑推理任务中的表现尤为优越。
2.3. 主流语言预训练模型
2.3.1. 自动编码模型(Auto-Encoder Models)
自动编码器(Auto-Encoder)是一类通过将输入数据压缩为潜在空间表示并尝试重构原始输入数据的神经网络模型。其结构通常包括两个主要部分:编码器(Encoder)用于提取输入数据的潜在特征表示,解码器(Decoder)则尝试根据潜在表示重建输入数据,从而最小化输入与重构输出之间的差异。
在自然语言处理(NLP)领域,BERT是自动编码模型的典型代表。BERT利用双向Transformer结构,能够从上下文中捕获丰富的语义信息,并在各种自然语言理解任务(如文本分类、命名实体识别和机器阅读理解)中表现出卓越的性能。这种能力使得BERT成为NLP任务中广泛使用的预训练模型之一。
然而,BERT的设计目标是理解和表征输入数据,而非生成文本。因此,其在生成式任务中无法直接应用,需要通过额外的生成模块来实现扩展功能。
2.3.2. 自回归模型(Auto-Regressive Models)
自回归模型(Auto-Regressive Model)是一类生成模型,其核心特征是通过条件概率的方式,基于前面已生成的内容逐步预测当前输出。在这种生成框架下,模型按照从左到右或从前向后的顺序对目标序列进行建模,从而生成完整的输出序列。
GPT (Generative Pre-trained Transformer)是自回归模型的典型代表,其基于Transformer架构实现了高效的文本生成能力。由于逐词预测的方式,GPT在开放域文本生成任务中表现出色。
然而,自回归模型也存在一定的局限性。由于生成过程是单向的,其对上下文的依赖主要体现在前向内容的连续性,而缺乏对全局上下文的全面理解能力。这种限制使得自回归模型在需要全局语义一致性或深度推理的任务中表现相对不足。
2.3.3. 编码器–解码器模型(Encoder-Decoder Models)
编码器–解码器模型是一种集成了编码器和解码器模块的框架结构。编码器的主要功能是对输入数据进行特征提取和语义表示,而解码器则根据编码器生成的潜在表示逐步生成目标输出。
T5是编码器–解码器模型的典型代表。T5的设计理念是将所有NLP任务统一建模为文本到文本的转换问题,通过一体化的任务框架实现了跨任务的高效迁移学习。其显著优势在于可以同时处理多种自然语言理解和生成任务,在广泛的下游任务中可通过微调取得优异的性能,使其具备了高度的可扩展性。
然而,编码器–解码器模型也面临一定的限制。由于需要同时优化编码器和解码器两部分的参数,训练过程的复杂性和计算成本显著提高,尤其在模型参数规模较大时,对硬件资源和训练时间的要求更为苛刻。此外,在极少样本或零样本任务中,模型的泛化能力会受到限制,需要结合优化策略加以改进。
2.3.4. 通用语言模型(General Language Model)
GLM [10] (General Language Model)是一种通用语言模型,旨在针对自然语言理解、无条件生成和条件生成任务进行优化。该模型通过调整输入中空白的数量和长度,使其能够灵活适应多种任务需求,从而展现出在多种下游任务中的强泛化能力。GLM的设计目标在于提供一个统一的预训练框架,通过在多个任务和场景中实现性能优化,克服传统模型(如BERT、GPT和T5)在特定任务上表现受限的问题。
在本研究中,采用了ChatGLM2-6B模型作为基础模型进行实验和分析。ChatGLM2-6B基于GLM的核心架构,继承了其在多任务处理上的灵活性和高效性,同时针对中英文对话场景进行了进一步优化训练,使其能够更好地处理双语语境下的对话任务。该模型采用62亿参数规模设计,相较于超大规模模型(如GPT-3 175B),对硬件资源的需求显著降低,具备更高的部署效率。此外,ChatGLM2-6B提供了全面的开源支持,降低了研究者和开发者的使用门槛,适合作为下游任务模型的研究基础,为自然语言处理领域的多场景应用提供了重要的技术支撑。
3. 基于思维链的样本学习示例构建原理
本实验探索了采用有无思维链的示例和不同思维链构造的示例通用语言模型ChatGLM2的上下文学习能力,从思维链的选择与否上分为Zero-Shot,Few-Shot和Zero-Shot-CoT和Few-Shot-CoT,从思维链的构造上分为CoT-KMeans和CoT-OPTICS两种构造方法。
3.1. 不同示例构建方法原理
Zero-Shot示例是采用原有的数据集问题部分作为示例,如图1所示。
Figure 1. Zero-Shot demo
图1. Zero-Shot示例
Zero-Shot示例根据Kojima等人的指令研究,在Zero-Shot基础上加了思维链指令“Let’s think step by step”,如图2所示。
Figure 2. Zero-Shot-CoT demo
图2. Zero-Shot-CoT示例
Few-Shot示例为由8个示例构造而成的上下文学习实例,如图3所示。
Figure 3. Few-Shot demo
图3. Few-Shot示例
Few-Shot-CoT示例在上述基础上采用了思维链思想,在输入和输出之间添加了思维链,所有思维链都是采用GPT3.5通过Zero-Shot-CoT方法生成的中间推理过程。如图4所示。
Figure 4. Few-Shot-CoT demo
图4. Few-Shot-CoT示例
3.2. Few-Shot示例的选择原理
在构建Few-Shot示例时,为了使模型能够准确回答目标问题,通常需要通过上下文学习(In-Context Learning)方式选择与目标问题最为相似的若干问题,作为Few-Shot示例的构成基础。具体而言,首先对所有候选问题进行向量化表示,利用余弦相似度衡量候选问题与目标问题之间的相似性,选取与目标问题向量余弦相似度最高的8个问题,构建目标问题的Few-Shot示例。这种方法被称为基于余弦相似的检索示例。此外,还可以通过另一种方法,即随机抽取8个候选问题,来构建目标问题的Few-Shot示例,这种方法被称为基于随机抽取的示例。
在Zhang [11]等人的研究中,针对多个数据集的实验结果表明,采用基于余弦相似的检索示例构建Few-Shot示例时,尽管这些示例在表面上更接近目标问题,但模型回答的错误率反而更高。进一步分析表明,这是由于基于余弦相似检索的示例中容易包含相同的错误推理逻辑,从而导致模型在回答目标问题时沿用错误的推理路径,影响了推理的准确性。
上述实验结果表明,在使用Zero-Shot-CoT方法生成思维链示例的过程中,基于随机抽取的示例在一定程度上能够更有效地支持模型进行上下文学习,进而提升对目标问题的回答质量。这一发现为示例选择策略的优化提供了重要参考。
3.3. Few-Shot示例的选择策略
为了使用基于随机抽取的示例构建适用于少样本学习的Few-Shot [12]示例,本研究引入了聚类算法对向量化后的问题集进行分组。聚类方法的优势在于能够对数据集进行语义上的合理划分,从而有效提升所选示例的语义差异性,为构建具有多样化信息的Few-Shot示例提供了支持。在具体实现中,本研究选用了KMeans和模糊聚类算法OPTICS两种方法,分别对候选问题进行聚类,旨在分析不同聚类策略对Few-Shot示例质量的影响。
通过实验对比,探讨了基于这两种聚类方法构建的Few-Shot示例在模型回答目标问题时的准确性,为改进少样本学习方法提供了新的思路。
3.3.1. 基于聚类K-Means方法
首先将所有待处理的问题通过自然语言处理模型进行向量化,将文本转化为高维数值向量,这些向量能够有效捕捉问题的语义信息,并反映其在语义空间中的位置。
在KMeans算法中,需要预先指定聚类的数量k,即将所有问题划分为k个簇。算法初始阶段,随机选择k个点作为簇的中心,称为质心(Centroids)。
之后对于每个问题向量,计算其与所有质心的欧氏距离,并将问题分配给距离最近的质心所在的簇。此时,每个问题都被归属于一个簇,簇的中心即为距离该问题向量最近的质心。接着,在每次迭代后,计算每个簇中所有问题向量的均值,并更新质心的位置,新的质心是该簇内所有问题向量的平均值。这个过程不断迭代,直到质心不再发生变化或达到最大迭代次数,最终得到稳定的簇结构,得到了k个簇,其中每个簇包含一组语义相似的问题。
最后,从每个簇中选择质心所对应的问题,构建成Few-Shot示例,供模型进行上下文学习和推理任务。
3.3.2. 基于聚类OPTICS方法
首先将所有待处理的问题通过自然语言处理模型进行向量化,转化为高维数值向量,以便能够准确捕捉问题的语义信息。随后,使用OPTICS算法进行聚类。
在OPTICS算法中,无需预先指定聚类数目。首先,算法从任意一个点开始,计算该点的密度可达性(density reachability)和密度相似性(density similarity),即通过与邻近点的距离和局部密度关系来判断点的聚类归属。对于每个点,OPTICS会记录一个可达距离和核心距离,用来表示该点在簇内的中心程度以及其与其他点的关系。然后基于这些距离,算法对点进行排序,产生一个拓扑结构,表示所有点的聚类顺序。
之后通过该拓扑结构,OPTICS可以识别出不同的簇,且能够在数据密度变化较大的情况下仍然有效。算法会逐步扩展聚类,确保每个点都根据其与邻近点的关系合理分配到相应簇。
当所有点都被处理完成后,OPTICS将提供一个聚类的层次结构。根据该结构,可以进一步分析哪些问题向量属于相似的语义群体,并选择每个簇的代表性问题作为Few-Shot示例,供模型用于上下文学习和推理任务。
4. 基于思维链提示的模型推理实验设计
4.1. 任务数据集
实验采用了8个典型的逻辑推理相关数据集,6个算术推理数据集AQuA,GSM8K,AddSub,MultiArith,SVAMP,SingleEq和2个常识推理数据集CommonsenseQA,StrategyQA,这8个数据集涵盖了从简单到复杂的各种推理任务,既有基础的算术推理问题,也有复杂的多步骤推理任务。常识推理任务则涵盖了模型对现实世界常识的理解能力。这些数据集的多样性确保了实验结果的广泛适用性。
4.2. 实验环境
实验使用了ChatGLM2-6B模型进行推理任务的测试,具体实验环境配置如下:模型的temperature参数设置为0.75,top-p参数设置为0.9,以控制生成结果的多样性与合理性。实验在矩池云平台上进行,使用四张Tesla P100显卡进行分布式计算,每张显卡上运行一个ChatGLM2-6B模型实例。每个模型的API访问接口均配置为端口8000,确保统一的接口调用。
为了进一步提高实验的稳定性和可靠性,所有请求均通过Tesla A16显卡服务器的API进行调用,该服务器负责接收并处理来自四个ChatGLM2实例的请求。针对8个数据集在4种示例方法下的实验任务,所有的请求与响应操作在两个连续请求之间设置了2秒的停顿间隔,以防止因高频率的请求导致读写延迟过长,从而影响实验的准确性和响应时间。
4.3. 实验结果
首先,对模型返回的response进行答案的清洗,清洗原理为根据回答问题的一般范式选取response的最后一句中最后一个数字为此次回答的答案,对原数据集也是相同的操作获得应该预测出的正确答案,实验定义一个问题的完整记录分为四个部分,目标问题Question,模型回答Rationale,应该预测的正确答案Pred,模型回答的答案Ans每一条记录按{“Question”, “Rationale”, “PreD”, “Ans”}四元组的方式记录到json文件中,在该示例方法和该数据集下模型的正确率(Accuracy)计算为
(3)
(4)
num[i]表示该数据集中第i个目标问题是否正确,N为一个数据集问题总个数。
Table 1. Accuracy of eight datasets from two types of reasoning tasks
表1. 来自两类推理任务的八个数据集的准确性
|
AQuA |
GSM8k |
CSQA |
AddSub |
MultiArith |
StrategyQA |
SVAMP |
SingleEq |
Zero-Shot |
14.17 |
3.87 |
31.53 |
16.20 |
14.67 |
46.94 |
10.0 |
20.87 |
Zero-Shot-CoT |
22.83 |
17.43 |
70.52 |
26.20 |
45.67 |
59.96 |
35.4 |
56.49 |
Few-Shot |
20.47 |
4.35 |
69.29 |
55.05 |
7.5 |
64.49 |
36.6 |
57.87 |
Few-Shot-CoT (OPTICS) |
23.62 |
16.38 |
62.81 |
50.38 |
54.17 |
6877 |
34.8 |
59.64 |
Few-Shot-CoT (KMeans) |
24.41 |
18.95 |
71.25 |
60.0 |
50.0 |
71.31 |
33.6 |
60.03 |
表1的结果为在5种示例构造方法下的两类推理任务的八个数据集的逻辑推理准确性,可以看出采用思维链模式的少样本学习示例能让大模型获得更好的推理准确率。进一步分析表明,思维链提示通过显式展现推理步骤,能够帮助大模型更好地理解问题背景和逻辑关系,从而提升推理质量。尤其是在复杂逻辑任务中,思维链提示的效果尤为显著,相较于其他示例构造方法,大模型的准确率平均提升了10%以上。
5. 结语
为了解决大模型微调过程的复杂性以及当前模型逻辑推理能力不足的问题,本文探索了通过上下文学习方式提升模型推理能力的方法。具体而言,本文以Zero-Shot-CoT生成的思维链作为示例构建的基准,基于随机检索示例错误率较低的研究结论,探讨了采用不同聚类方法构建示例对参数量较小的大模型在推理性能提升中的可行性。实验结果表明,基于本文方法构建的示例相比传统示例,能够更有效地增强大模型的上下文学习能力,并显著提升其逻辑推理性能。这一研究为大模型在下游任务中的部署与执行提供了理论支持,并为优化参数量较小模型的推理性能提供了新的思路。