Prompt输出限制怎么写?用CCoT限制输出长度的推理,大幅提高LLM准确性
图片由修猫创作
一项由意大利比萨的著名高等教育和研究机构圣安娜高等学校Sania Nayab等人进行的研究为这个问题提供了一个创新的解决方案- Constrained Chain-of-Thought (CCoT)提示技术。这项研究不仅提出了控制LLM输出长度的新方法,还开发了一套评估LLM输出简洁性和正确性的新指标。这项研究很值得受困于此的朋友借鉴。
01、输出长度与推理效率的矛盾
大型语言模型在复杂问题解答方面表现出色,但同时也存在一个明显的问题:模型往往会生成冗长的输出,这不仅增加了推理时间,也可能引入不必要的错误。特别是在使用Chain-of-Thought (CoT)提示技术时,模型倾向于生成详细的推理步骤,虽然这提高了答案的解释性和正确性,但也显著增加了输出长度和生成时间。
图(a)是一个散点图,展示了输出长度与生成时间之间的关系。蓝色点代表普通提示,红色点代表CoT提示。我们可以看到:
- 输出长度和生成时间呈正相关。
- 使用CoT提示时,输出长度和生成时间普遍更长。
图(b)是一个柱状图,展示了50个样本的输出长度对比。蓝色代表普通提示,粉色代表CoT提示。我们可以看到:
- CoT提示通常会产生更长的输出。
- 输出长度的变化在不同样本间存在较大差异。
**研究者发现,输出长度与生成时间之间存在明显的正相关关系。**例如,在测试Falcon-40b模型时,使用CoT提示后,输出长度和生成时间都显著增加。这种现象在各种规模的模型中普遍存在,突显了控制输出长度的重要性。
02、CCoT创新的提示工程策略
为了解决这个问题,研究者提出了Constrained Chain-of-Thought (CCoT)提示技术。CCoT的核心理念是在提示中明确要求模型限制输出长度,同时保持推理的完整性。CCoT提示包含三个部分:
- 用户输入(x_us)
- 标准CoT提示(x_p)
- 长度限制提示(x_l)
通过在提示中加入长度限制,CCoT鼓励模型生成更简洁的输出,同时保持推理的质量。
03、实验设置多模型的综合评估
研究者使用了多个预训练的大型语言模型进行实验,包括:
- Vicuna-13b-v1.5
- Falcon-40b-instruct
- Falcon-7b-instruct
- Llama2-7b-chat-hf
- Llama2-70b-chat-hf
实验主要在GSM8K数据集上进行,这是一个包含约8000个数学问题的测试集。研究者比较了普通提示(base)、CoT提示和不同长度限制的CCoT提示(15、30、45、60、100个词)的效果。
这张图清晰地展示了大型模型如何从CCoT中获益最多,而小型模型在面对严格的长度限制时可能难以保持性能。
04、CCoT的效果与模型规模
实验结果显示,CCoT的效果与模型规模密切相关:
4.1 大型模型的显著提升
对于Llama2-70b等大型模型,CCoT不仅能有效控制输出长度,还能提高模型的准确性。例如:
- 使用传统CoT时,Llama2-70b在GSM8K数据集上的准确率为36.01%
- 使用限制100词的CCoT (CCoT-100)时,准确率提高到41.07%
- 同时,平均输出长度从99词减少到71词
这一结果令人振奋,因为它表明CCoT不仅能提高效率,还能改善模型的推理质量。
4.2 中小型模型的混合效果
对于Falcon-40b等中型模型,CCoT能在保持准确率的同时显著减少输出长度。虽然准确率可能略有下降,但仍高于基础提示的效果,为效率和准确性之间提供了一个很好的平衡点。
然而,对于Falcon-7b、Llama2-7b等小型模型,CCoT的效果不太理想。这些模型在面对严格的长度限制时,往往难以生成正确且完整的推理过程。
05、简洁性和正确性的评估指标
为了全面评估LLM的输出质量,研究者提出了三个新的评估指标:
5.1 Hard-k Concise Accuracy (HCA)
HCA衡量正确答案中不超过指定长度k的比例。这个指标对严格控制输出长度的场景特别有用,如实时系统或计算资源有限的环境。
5.2 Soft-k Concise Accuracy (SCA)
SCA是HCA的一个更灵活的版本。它允许答案略微超过指定长度k,但会根据超出的程度进行惩罚。这个指标引入了一个容忍度参数α,允许对长度限制进行更细致的调整。上图我们可以看出,对于Llama2-70b,CCoT在大多数情况下都能提高SCA得分,表明它能有效平衡输出的简洁性和准确性。对于Falcon-40b,CCoT在较低k值时表现更好,说明它在严格限制输出长度的情况下仍能保持良好的性能。增加α值(从1.0到10.0)导致所有策略的SCA得分都有所提高,这说明允许一定程度的长度超出可以提高模型的整体表现。α值的增加对CCoT策略的影响尤为明显,这表明CCoT在更宽松的长度限制下能发挥更大的优势。
5.3 Consistent Concise Accuracy (CCA)
CCA在SCA的基础上,还考虑了输出长度的一致性。它引入了第三个参数β,用于控制对输出长度变异性的容忍度。这个指标特别适合评估模型在不同问题上保持一致输出长度的能力。
在实际使用中,您可以根据具体的场景要求在代码或提示词中加入这些Metric,可以有效的改善输出长度限制。我已经将Metric作了分类,您需要根据场景动态调整:
- 对于简单问题,优先考虑HCA,严格控制长度。
- 对于复杂问题,可以倾向于SCA,允许更多的长度灵活性。
- 在需要保持一致性的场景中,更多地考虑CCA。
06、CCoT如何影响模型输出
6.1 输出长度分布的变化
研究者分析了不同提示策略下模型输出长度的分布。结果显示:
- 使用CoT时,输出长度分布较为分散,且平均长度较长
- 使用CCoT后,输出长度分布更加集中,且平均长度显著减少
- 对于大型模型(如Llama2-70b),CCoT能有效将输出长度控制在指定范围内
这一发现意味着CCoT不仅能减少平均输出长度,还能提高模型输出的一致性,这对于实际应用中的性能预测和资源管理极为重要。
6.2 准确性与简洁性的权衡
通过使用新提出的评估指标,研究者发现:
- 对于Llama2-70b,使用CCoT不仅没有降低准确性,反而在多数长度限制下提高了HCA和SCA指标的得分
- 对于Falcon-40b,虽然CCoT可能略微降低绝对准确率,但在考虑输出简洁性后,其综合表现优于CoT和基础提示
这表明CCoT能在保持或提高准确性的同时,显著改善输出的简洁性。
6.3 模型对长度限制的响应能力
研究还发现,不同规模的模型对CCoT中的长度限制有不同的响应能力:
- 大型模型(如Llama2-70b)能较好地遵循长度限制,即使在严格的限制下(如15或30词)也能保持较高的准确性
- 中型模型(如Falcon-40b)在适度的长度限制下表现良好,但在极短的限制下可能难以保持准确性
- 小型模型在面对严格的长度限制时,往往难以生成完整且正确的推理过程
这一发现为不同规模模型的应用提供了重要指导,帮助开发者选择合适的长度限制策略。
07、CCoT的实际应用案例
研究者提供了几个具体的例子,展示了CCoT如何改善模型输出。以下是一个从GSM8K数据集中选取的问题示例:
问题:Richard住在一栋有15层的公寓楼里。每层有8个单元,整栋楼3/4是有人居住的。整栋楼里空置的单元总数是多少?
使用基础提示时,Llama2-70b的回答:
"让我们先计算整栋楼的总单元数:15层 × 8单元/层 = 120单元
现在,我们知道3/4的单元是有人居住的,所以空置的单元数是:
120单元 × (1 - 3/4) = 120单元 × 1/4 = 30单元
因此,整栋楼里有30个空置单元。"
使用CoT提示时,Llama2-70b的回答:
"首先,我们需要计算整栋楼的总单元数。我们可以将楼层数乘以每层的单元数:
15层 × 8单元/层 = 120单元。
接下来,我们需要计算已占用的单元数。我们可以将总单元数乘以已占用的比例:
120单元 × 3/4 = 90个已占用单元。
最后,我们可以通过从总单元数中减去已占用的单元数来计算空置单元数:
120单元 - 90个已占用单元 = 30个空置单元。
因此,整栋楼里有30个空置单元。"
使用CCoT-45(限制45词)提示时,Llama2-70b的回答:
-
总单元数= 15层 × 8单元/层 = 120单元。
-
已占用单元 = 3/4 × 120单元 = 90单元。
-
空置单元 = 120 - 90 = 30单元。
所以,整栋楼里有30个空置单元。"
这个例子清晰地展示了CCoT如何在保持答案正确性的同时,显著减少输出长度,使推理过程更加简洁明了。
文章中还用了一个简单示例,我也做了交叉验证,结论是:CCOT更简洁,准确。
08、CCoT的潜在应用
8.1 实时交互系统的优化
CCoT技术在实时交互系统中有巨大的应用潜力。通过控制输出长度,可以显著减少模型的响应时间,提高用户体验。例如,在智能客服系统中,CCoT可以帮助模型生成简洁而准确的回答,避免冗长的解释影响交互效率。
8.2 资源受限环境的应用
对于计算资源有限的设备(如移动设备或嵌入式系统),CCoT提供了一种有效的方法来平衡模型性能和资源消耗。通过限制输出长度,可以减少内存使用和计算时间,使大型语言模型在这些设备上的应用成为可能。
8.3 提高模型可解释性
虽然CCoT旨在减少输出长度,但研究发现它在某些情况下反而提高了模型的准确性。这一现象值得进一步研究,可能揭示出简洁推理对模型决策过程的积极影响。理解这一机制可能有助于开发更可解释、更可靠的AI系统。
8.4 个性化长度控制
未来的研究可以探索如何根据不同的任务类型、用户偏好或上下文自动调整CCoT的长度限制。这种动态调整的方法可以进一步优化模型的性能,为不同场景提供最佳的输出。
8.5 与其他提示技术的结合
CCoT可以与其他先进的提示技术结合,比如DoT、POMDP、之前的变分推理等复杂的提示技术,探索更复杂、更高效的提示策略。这种结合可能产生新的突破,进一步提升大型语言模型的能力。
CCoT技术为我们在写Prompt时提供了宝贵的启发:首先,输出长度不必过长,适度限制能提高效率和准确性;其次,不同规模模型对提示策略反应不同,应匹配模型特性;再者,保持输出一致性有助于提升可预测性和稳定性;同时,应采用多维度评估方法,关注准确率、简洁性和一致性;最后,建议根据任务复杂度动态调整提示策略,以优化整体性能。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。