The CoT Collection: Improving Zero-shot and Few-shot Learning of Language Models via Chain-of-Though

文章介绍了TheCoTCollection,一个通过改进的链式思考流程收集和筛选的大型语言模型数据集,用于提升零样本和少量样本学习效果。研究者使用OpenAI的Codex生成高质量的推理过程(rationale),并通过C2F2模型进行二次Fine-tune,结果显示该数据集有效并增强了模型的泛化能力。

The CoT Collection: Improving Zero-shot and Few-shot Learning of Language Models via Chain-of-Thought Fine-Tuning

文章链接

主打CoT,收集了海量的CoT数据,如下图所示:在这里插入图片描述
主要的收集方法依然是基于LLM生成,首先人工手写并筛选出精品CoT样例,之后以这些样例为demo,让LLM输出某个问题的推理过程(rationale),从而获得大量的带rationale的问题作为数据集。

第一步,筛选数据集,主要基于FLAN Collection,把FLAN原来1836个任务减少到了1060个,主要去掉了多语言、过长、不公开、输入输出不匹配、重复和只能产生无意义和较短CoT的任务。

第二步,构造prompt,根据作者提供的附录其实没什么新意,就是先提供多个样例,每个样例包含[Instruction and Question], [Option], [Answer], [Rationale],最后一个Example的rationale就让LLM补全。

第三步,交给LLM,作者采用的LLM是OpenAI的Codex。作者还另外提到,在demo种把问题的label放在rationale前面对生成高质量rationale很重要,可能是因为给答案放松了对LLM解决问题的要求。

第四步,过滤生成的rationale,作者删掉了rationale中没出现答案的、太长的以及相同的。

最后,作者对生成的这些rationale进行了评估,质量评估使用了ROSCOE的13个指标,又评估了rationale的多样性,显示他们的CoT Collection是更多样化的(动词更多样)。

之后就是实验部分了,他们提出的C2F2其实就是在FLAN-T5的基础之上再做二次fine-tune,数据集就是他们收集到的CoT Collection。之后的测试则是在非训练数据集,即unseen datasets上做的,考察经过这么大的fine-tune以后模型的泛化能力如何。

在这里插入图片描述
结果表明他们的C2F2确实是最好的,而且直接用原生T5在CoT Collection上面做Fine-Tune结果也比FLAN T5要好,说明他们这个数据集更有效。

除此之外作者还做了few-shot的实验,主要是用Lora做Adaption,就不放实验结果了。

### 三级标题:定义与区别 Zero-shot learning(零样本学习)是一种机器学习范式,其中模型在测试阶段可以预测训练过程中未见过的类别。这种学习方式不需要任何特定类别的训练数据,而是依赖于类别之间的语义关系或者属性描述来识别新的类别[^1]。 Few-shot learning(少样本学习)则是在仅有少量样本的情况下进行学习的任务。它旨在使模型能够从非常有限的数据集中快速适应并做出准确预测。这通常通过元学习(meta-learning)策略实现,即让模型学会如何从少量例子中学习新任务[^4]。 Chain-of-thought (CoT) 是一种促进复杂推理的方法,特别是在多步骤问题解决中。这种方法鼓励模型生成一系列中间推理步骤,以达到最终的答案。这些推理链可以帮助模型处理需要逐步逻辑推导的问题,并且已经被证明对于提高数学基准性能特别有效[^3]。 ### 三级标题:应用场景 Zero-shot learning的应用场景包括但不限于图像分类、自然语言处理中的文本分类以及推荐系统等,在这些领域中可能遇到之前未曾见过的类别或项目。例如,一个图像识别系统可能被要求识别出训练时完全没接触过的动物种类。 Few-shot learning非常适合那些获取大量标记数据成本高昂或者不可行的情况,比如医学影像分析,因为每个病人的病例都是独特的,而且隐私限制使得收集大量数据变得困难。此外,它也适用于个性化推荐系统的快速调整,当用户行为模式发生变化时,可以利用少量的新数据迅速更新模型。 Chain-of-thought方法主要应用于需要深层次逻辑推理的任务,如数学问题解答、科学问题回答和复杂的决策制定过程。例如,在教育软件中帮助学生理解解题过程,或是智能客服中处理更复杂的客户咨询情况。 ### 三级标题:代码示例 下面是一个简单的Python伪代码示例,展示了如何使用few-shot learning的一个典型框架——Prototypical Networks来进行分类: ```python def prototype_networks(support_set, query_set): # 计算支持集每个类别的原型向量 prototypes = compute_prototypes(support_set) # 对查询集中的每个样本计算其与各原型的距离 distances = calculate_distances(query_set, prototypes) # 根据最近邻原则分配标签 predicted_labels = assign_labels(distances) return predicted_labels ``` 这个例子简化了实际实现细节,但基本思路是通过计算支持集中每个类别的平均嵌入作为该类的原型,然后根据查询点与其对应原型的距离来进行分类。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值