CCoT 压缩链式思维框架全解析:用稠密连续表征把 CoT 推理计算开销降下来
CCoT 压缩链式思维框架全解析:用稠密连续表征把 CoT 推理计算开销降下来
导读:链式思维(Chain-of-Thought, CoT)让大语言模型(LLM)具备了分步推理能力,但代价是必须逐 token 生成冗长的推理链。CCoT(Compressed Chain-of-Thought,压缩链式思维)提出了一个直接面向推理链路本身的压缩框架:用内容丰富的连续表征替代显式语言推理链,在保持推理准确性的同时显著降低生成时间。本文基于 Foundations-of-LLMs 仓库中 《CCoT 压缩链式思维框架,极大降低 CoT 计算开销》 的周报内容,完整梳理 CCoT 的动机、CCOT/DECODE 双模块架构、训练与推理流程、GSM8K 实验设置,并结合仓库内的教材章节与相关周报做源码级、资料级的延伸解读。读完本文,你将掌握 CCoT 的核心公式推导脉络、LoRA 微调配置要点,以及它与 Coconut、TALE 等同类“推理提效”工作的区别与联系。
一、论文速览:CCoT 在解决什么问题
CCoT 由 Jeffrey Cheng、Benjamin Van Durme 等(Hopkins University 等机构)提出,目标非常明确:在保留 CoT 推理能力的前提下,把推理链“写出来”的成本降下来。
传统 CoT 通过显式生成一段完整的、人类可读的推理链来分步解决复杂问题,这带来了两个层面的代价:
- 计算开销大:每个推理 token 都要经过完整的 Transformer 前向计算,推理链越长,延迟与算力消耗越高;
- 生成时间长:对实时交互、批量推理等场景,逐 token 自回归生成冗长中间步骤会明显拖慢响应速度。
CCoT 的核心思想是:推理信息不一定要以文本形式存在。它通过生成“压缩的、内容丰富的连续表征”(即嵌入空间中的向量序列),把推理链压缩到原来的很小比例,在推理性能与生成效率之间取得更好的平衡。
需要说明的是,本仓库周报中该文配图因存储于本地 Typora 路径而不可用,本文将以文字与公式完整还原其架构与流程;文中所有结论均以 关联周报文档 的表述为准。
二、研究动机:显式推理链的“效率税”
CoT 之所以成为大模型推理的主流范式,是因为它把复杂问题拆解为多步中间结论,显著提升了 LLM 在数学、逻辑等任务上的表现。但它的代价同样突出:
- 推理链中的大量 token 只用于“保持文本流畅”,真正承载关键推理信息的 token 占比并不高;
- 模型为链中每个 token 分配了相同的计算资源,而不同位置的推理难度差异很大;
- 在很多实际应用(问答、客服、代码助手)中,用户只关心最终答案,冗长的中间推理造成了资源浪费。
这正是 CCoT 想绕开的“效率税”。更深远的技术动机是:显式语言并不是推理的唯一媒介。如果能把推理链压缩为信息密度更高的连续表征(连续嵌入空间),就可以在减少推理步骤、降低生成成本的同时,尽量保留推理链中的有效信息。
在同一个时间窗口内,仓库中还有多篇周报从不同角度回应同一问题,可作为横向参照:
- Coconut:从语言脑到推理脑,大模型连续潜在空间推理:直接把最后一个隐状态当作“连续思维”喂回模型,在潜在空间中推理;
- TALE:Token 预算感知的 LLM 推理:通过估计并约束 token 预算来减少冗余输出;
- 《减少不必要的计算开销,让模型不再“过度思考”》:针对 o1 类模型在简单任务上“想太多”的问题做长度偏好优化。
CCoT 与它们最大的不同在于:它不改变提示词、不压缩输出 token 的数量约束,而是直接对“推理链的表示形态”做文章——把链从 token 序列变成向量序列。
三、问题形式化与符号约定
在展开 CCoT 之前,先建立统一的符号体系(与周报原文一致):
| 符号 | 含义 |
|---|---|
| 预训练因果解码器语言模型,权重为 | |
| 任务输入(查询),长度 | |
| 完整推理链,长度 | |
| 目标答案,长度 | |
| 推理链压缩比例() | |
| 压缩后推理链长度, |
压缩比例 是 CCoT 中最核心的超参数: 越小,压缩后的推理链表征越短,推理时的生成成本越低,但对表征的信息密度要求也越高。周报实验聚焦于 与 两个极低压缩比,正是为了验证“极端压缩”下的可行性。
四、解决方案总览:CCoT 框架的两大模块
CCoT 框架把“压缩式推理”拆成两个独立可训的模块:
- CCOT 模块(记作 ):负责把完整推理链压缩为 个连续嵌入向量 ,作为推理链的压缩表征;
- DECODE 模块(记作 ):负责在压缩表征与原始查询的条件下,逐步解码出最终答案。
两个模块分工明确:前者解决“如何高效地表示推理过程”,后者解决“如何从压缩表示中恢复出正确答案”。下面分别展开其训练流程。
五、CCOT 模块:把推理链压进连续表征
CCOT 模块的目标是:生成内容丰富的连续嵌入 ,使其近似完整推理链的隐状态。它的训练分为四步。
5.1 第一步:对完整样本计算嵌入与隐状态
对输入 (查询、完整推理链、目标答案拼接),先做嵌入,再做注意力计算,得到对应的隐状态序列:
其中 EMBED 与 ATTN 都来自预训练模型 。这里的直观理解是:先用冻结(或部分可训)的主干模型把“完整推理链”编码成隐状态,作为压缩的目标信号——监督信息来源于模型自己对完整推理链的表征,而不是外部标注。
5.2 第二步:评分器(SCORER)选择金标准子集隐状态
完整推理链有 个位置的隐状态 ,但压缩后的目标长度只有 。CCoT 用一个评分器模块从 个隐状态中选出 个“信息量最大”的位置索引 :
评分器通过线性层实现,输出 个索引,据此取出子集隐状态 ,作为后续训练的金标准(gold subset)。这一步回答了“压缩后该保留哪些位置的信息”的问题——不是随机抽样,而是让模型学习挑选关键推理步骤。
5.3 第三步:CCOT 模块近似生成子集隐状态
有了金标准 之后,CCOT 模块 需要学会自己从头生成这些表征,而不再依赖完整推理链。其生成方式与自回归解码类似——基于前一个表征预测下一个表征:
其中 以查询 的最后一个隐状态为起点(即把查询的最终隐状态作为压缩链的首个输入状态)。这一设计使得推理阶段无需任何完整推理链即可启动压缩表征的生成。
5.4 第四步:分层训练与方差归一化 MSE 损失
为了让生成的压缩表征逐步逼近金标准隐状态,CCoT 对 Transformer 的每一层分别优化,目标是缩小生成隐状态与目标隐状态之间的均方误差,并除以目标隐状态的方差做归一化:
关键训练细节是分层细化(layer-wise training):在训练第 层时,只更新该层的参数,冻结之前各层的参数。从源码结构看,这种逐层冻结的策略与教材中“参数选择方法”的思想一脉相承(参见 《大模型基础》第 4 章:参数高效微调),其好处是让每一层的近似任务更简单、训练更稳定,从而逐步逼近完整推理链的隐状态。
六、DECODE 模块:从压缩表征解码答案
DECODE 模块的目标是:利用已生成的压缩推理链 与查询 ,解码出最终答案 。训练流程同样分步展开。
6.1 第一步:生成压缩推理链
使用已训练好的 CCOT 模块 ,以自回归方式逐步生成推理链表征:
这一步与 5.3 的近似生成一致,只是此时 已收敛,生成的是推理阶段将要实际使用的表征序列。
6.2 第二步:条件解码答案
利用查询 与压缩推理链 ,基于条件生成模型 (DECODE 模块)解码答案的每个 token:
注意这里答案的生成以“压缩表征 + 查询”为条件,不再以显式文本推理链为条件——这是 CCoT 与传统 CoT 在生成阶段最本质的区别。
6.3 第三步:交叉熵优化目标
对解码过程的生成分布,优化标准的交叉熵损失(从第 2 个 token 开始,与因果语言建模惯例一致):
6.4 第四步:终止条件预测
CCoT 还增加了一个二分类模块 ,用于预测是否需要继续生成更多的推理链表征,直到达到终止条件。这意味着压缩链的长度 不必在推理前硬编码——模型可以在推理过程中动态判断“还要不要再想一步”,从而在简单问题上更早收尾,在复杂问题上按需延长。这与 《减少不必要的计算开销,让模型不再“过度思考”》 中“让模型学会在简单任务上减少计算步骤”的目标异曲同工,只是实现机制从偏好优化换成了显式的停止预测器。
七、推理阶段:两阶段流水线
训练完成后,CCoT 的推理过程分为两个阶段,全程不需要生成任何显式推理文本:
阶段一:生成推理链表征。 使用 CCOT 模块自回归生成 ,每一步基于上一步的隐状态生成下一步:
阶段二:生成答案。 在压缩推理链与原始查询的条件下,通过 DECODE 模块逐步生成答案:
从计算量上看,阶段一的 token 数从完整推理链的 压缩到了 ;当 时,推理链的生成量缩减到原来的 5%~10%,这是 CCoT 推理提速的根本来源。
八、实验验证:GSM8K 上的效率与性能平衡
8.1 实验设置
周报记录的实验设置如下:
- 数据集:GSM8K——包含小学到中学数学文字题的推理基准,要求模型具备多步推理能力,是衡量 CoT 类方法的标准场地;
- 基础模型:LLAMA2-7B-CHAT;
- 微调技术:LoRA(低秩适配),对 使用 rank=128,对 使用 rank=64。
关于 LoRA 的背景,可以结合仓库资料深入理解:
- 《大模型基础》第 4 章:参数高效微调 专门讲解了低秩适配方法的原理与适配器结构;
- 大模型经典论文列表/readme.md 的“低秩适配方法”小节收录了 LoRA 原论文(LoRA: Low-Rank Adaptation of Large Language Models)以及 DoRA、AdaLoRA、GaLore 等后续工作,可用于理解 rank 超参数对可训练参数量与表达能力的影响。
8.2 结果解读
周报中的实验结果表明:CCoT 在 、 的低压缩比情况下,以显著低于传统 CoT 的生成时间实现了较好的准确率,体现了其高效性。这里需要注意两点:
- 周报配图(含具体数值)因本地路径失效无法在本仓库展示,因此本文不引用任何未经确认的具体准确率数字;
- 从方法设计推断, 的取值在效率与性能之间存在权衡: 越小生成越快,但对 SCORER 选点与 CCOT 表征质量的要求越高,极限压缩下准确率可能下降,这正是 动态停止模块存在的意义——在推理时按需调节实际生成的表征数量。
九、与同类工作的横向对比:连续空间推理家族
CCoT 并非孤例,它与仓库周报中的另外两篇工作共同构成了“低成本推理”的三个技术路线:
| 方法 | 核心思路 | 推理媒介 | 主要手段 |
|---|---|---|---|
| 传统 CoT | 显式生成完整推理链 | 语言 token | Prompt 工程 / 微调 |
| Coconut | 用最后一个隐状态作为“连续思维”喂回模型 | 连续隐状态 | 多阶段渐进式训练,用 <bot>/<eot> 标记切换语言/潜在模式 |
| TALE | 估计并约束输出 token 预算 | 语言 token | 二分搜索最优预算 + 零样本/回归估计器 + 预算感知提示 |
| CCoT(本文) | 将完整推理链压缩为 个连续表征 | 连续嵌入序列 | SCORER 选点 + CCOT 压缩 + DECODE 解码 + END 动态停止 |
CCoT 与 Coconut 都主张“在潜在空间推理”,但机制不同:Coconut 是训练模型把隐状态当作输入嵌入继续推理(一个隐状态接一个隐状态地“想”),而 CCoT 是先把已有的完整推理链压缩成一小段表征序列,再从这个压缩序列解码答案——前者强调推理过程的形态迁移,后者强调推理链本身的压缩与重建。对这两篇的差异做对比阅读,能更好地理解连续表征推理这一前沿方向(两篇周报均位于本仓库 Arxiv 一周进展报告(大模型方向) 目录下)。
十、在 Foundations-of-LLMs 仓库中继续深挖
本仓库是浙江大学 LLMs 团队维护的《大模型基础》开源教材库(见 readme.md),阅读 CCoT 这篇周报时,建议配合以下仓库资料形成完整知识闭环:
-
理解 CoT 的根基:《大模型基础》第 3 章:Prompt 工程 的“思维链”小节系统讲解 CoT 的提出背景与 Prompt 技巧;大模型经典论文列表 的“思维链”小节收录了 Chain-of-Thought Prompting Elicits Reasoning in Large Language Models、Tree of Thoughts、Self-Consistency 等原始文献,可顺藤摸瓜阅读。
-
理解 LoRA 微调:《大模型基础》第 4 章:参数高效微调 与 大模型经典论文列表 的“低秩适配方法”小节,为理解 CCOT/DECODE 模块的 rank=128/64 配置提供了完整的理论背景。
-
横向对照周报:本仓库 Arxiv 一周进展报告(大模型方向) 目录下按周归档了大量大模型方向的前沿解读,除上文提到的 Coconut、TALE、反“过度思考”三篇外,还有 SPPO/自进化推理(20241101-20241107)、TreeBoN 推理效能提升(20241018-20241024) 等,可作为“推理提效”主题的扩展阅读。
十一、总结
压缩链式思维(CCoT)为“既想保留 CoT 的推理能力、又不想付高昂生成成本”的场景提供了一个直接而优雅的方案:
- 压缩:用 SCORER 从完整推理链中选出关键隐状态作为金标准,让 CCOT 模块在连续嵌入空间中学着自回归生成这些表征;
- 解码:DECODE 模块以“查询 + 压缩表征”为条件生成答案,配合 END 模块动态决定何时停止;
- 收益:在 的极低压缩比下,推理链生成量缩减 90% 以上,以显著更短的生成时间换取较好的准确率。
从仓库的角度看,CCoT 与 Coconut 一起勾勒出“连续表征推理”这一新兴范式:推理不一定要写成人话。对于追求低延迟、低成本部署的大模型应用来说,这类将推理链从 token 空间迁移到向量空间的方法,是继 CoT、Self-Consistency 之后值得持续跟踪的前沿方向。更多相关资料与最新论文解读,可继续翻阅本仓库的 Arxiv 周报目录 与 大模型经典论文列表。
本文基于仓库周报 《CCoT压缩链式思维框架,极大降低 CoT 计算开销》 整理扩充,文中公式、实验设置与结论均以该周报为准;周报内原始配图因本地路径失效未予引用。