论文解读 | Auto CoT——利用聚类自动生成CoT
Title: Automatic Chain of Thought Prompting in Large Language Models
Institute: Shanghai Jiao Tong University, Amazon Web Services
Authors: Zhuosheng Zhang, Aston Zhang, Mu Li, Alex Smola
Arxiv Link: https://arxiv.org/abs/2210.03493
Date: 2022.10.7
介绍
此前,CoT有两种范式,一种是Zero-shot,在问题末尾添加"Let’s think step by step";另一种Manual CoT(Few-shot CoT),每个例子由问题和推理链组成。第二种方法表现是否好取决于CoT写的好不好,不过这需要人手工来写。本文通过提出Auto-CoT这一方法使得Few-shot CoT可以自动生成,解放双手!
动机
相比于Zero-shot CoT,Manual CoT(Few-shot CoT)效果更好,也更浪费人力,因此作者想设计Auto CoT。
发现
与开门见山介绍方法的论文不同,本文首先进行了探索性的实验,然后再提出方法。
首先作者对比Retrieval-Q-CoT和Random-Q-CoT方法在MultiArith,GSM8K,AQuA三个数据集上进行试验。作者发现在MultiArith问题上,Retrieval-Q-CoT甚至不如Random-Q-CoT,这显然是不符合常理的。作者怀疑,这是因为Zero-shot生成的CoT质量太差。于是,作者又在GSM8K,AQuA两个数据集上进行实验,与MultiArith数据集不同的是,这两个数据集的CoT是人工标注的。果然,在这两个数据集上Retrieval-Q-CoT好于Random-Q-CoT。于是作者得出结论,Zero-shot生成的CoT并不如人工编制的。
Retrieval-Q-CoT:使用Sentence-BERT对问题进行编码,然后将相似度最高的前k个相似问题作为demo,$q_i^{demo}(i=1,..,k)$。对于这k个问题,使用Zero-shot生成CoT——$c_i^{demo}$,然后将$q_i^{demo},c_i^\text{demo}(i=1,…,k),q^{test}$串联拼接作为输入提问大模型。
Random-Q-CoT:相比Retrieval-Q-CoT随机选取k个问题。
为了进一步验证是否是错误的CoT导致推理效果不好,作者在600个样例中的128个中使用了错误的CoT,结果表明,Retrieval-Q-CoT受到了误导,进一步证明了CoT方法中正确的CoT的重要性。
进一步,作者将所有的问题按照相似性使用k-means方法划分为k个类别,然后使用Zero-shot的方法生成CoT进行推理。作者想知道某些簇是否包含Zero-Shot- CoT经常失败的问题,因此,作者计算每个簇的错误率。
如上图所示,2号簇的错误率特别高,这说明对于某一类问题,Zero-shot无法生成好的CoT,这可能就是导致Retrieval-Q-CoT表现不好的原因。
Auto CoT
结合上述发现,作者提出Auto CoT方法。
Auto-CoT包括两个主要阶段:
- 聚类:将给定数据集的问题划分为几个簇
- 抽样:从每个簇中选择一个代表性问题,并使用简单的启发式方法使用Zero-Shot-CoT生成其推理链
整个过程如下图所示:
具体而言:
- 在聚类阶段,将所有的问题Sentence-BERT生成向量表示,然后使用k-means聚类将问题划分为k类问题。对于每一簇内的问题,按照距离簇心距离排序,生成升序列表$\mathbf{q}^{(i)}=[q_1^{(i)},q_2^{(i)},\ldots]$。
- 在抽样阶段,对于每一个簇,按照升序列表依次遍历每一个问题,对于当前问题,使用Zero-shot生成CoT,如果CoT满足token不大于60个且不超过五个步骤,则将此问题和CoT作为此簇中的每个问题的样例CoT,拼接在这类问题的前面。
实验
实验在三类推理任务、十个基准数据集和GPT-3上进行
- 算术推理(MultiArith,GSM8K,AddSub,AQUA-RAT,SingleEq,SVAMP)
- 常识推理(CSQA,StrategyQA)
- 符号推理(Last Letter Concatenation,Coin Flip)
作为对比的方法有Zero-Shot,Zero-Shot-CoT,Few-Shot和Manual-CoT。
如下图所示Auto-CoT 一贯匹配或超越了需要手动设计演示的CoT方法的性能。
总结
从24年的角度看,本文方法相比于ReAct等比较简单,然而需要注意的是,本文提出的时间较早,大家都是摸着石头过河,能有如此方法已经难能可贵。事实上,即使是从最新的方法上也能看到Auto CoT的影子。