网站首页 > 技术文章 正文
本文约2500字,建议阅读5分钟本文介绍了 Explore-Instruct,一种提高特定领域指令覆盖率的方法。
近期指令微调的研究工作表明,高质量且多样化的指令微调数据对于模型的性能至关重要。现有的指令数据生成方法如 Self-Instruct 在特定领域表现不佳,所生成的指令数据多样性和覆盖程度不足。
为了解决该问题,本工作提出一种 Explore-Instruct 方法,通过使用 LLM 对领域空间进行主动探索,提高领域特定指令微调数据的覆盖度,从而大幅提升指令微调后的 LLM 性能,实验结果表明,Explore-Instruct 在 75% 以上的测试用例中优于 Self-Instruct 等方法。
论文题目:
Explore-Instruct: Enhancing Domain-Specific Instruction Coverage through Active Exploration
论文作者:
万凡琦,黄昕庭,杨涛,权小军,闭玮,史树明
作者单位:
中山大学,腾讯 AI Lab
论文链接:
https://arxiv.org/abs/2310.09168
项目地址:
https://github.com/fanqiwan/Explore-Instruct
数据模型:
https://huggingface.co/collections/Wanfq/explore-instruct-65280973f74b8bf3e9f9bd7e
1、Background & Motivation
1.1 Background
大语言模型(LLM)经过少量指令实例微调后,能够在多种任务场景中表现出色,是挖掘大语言模型潜力的主要途径之一。研究表明,高质量且多样化的指令微调数据对于模型的性能至关重要,但构建多样化的指令微调数据依然具有很大挑战。早期的方法依赖人工构建特定领域的开源指令微调数据集 [1],而近期研究则利用 LLM 的生成能力自动产生特定领域指令微调数据 [2]。
然而,这些方法生成的数据难以涵盖领域内所有潜在的指令。我们的前置实验对比了不同方法产生的指令中 top-15 动词-名词对的分布。如图 1 所示,无论是基于人工构建的 Domain-Specific Human-Curated 方法,还是基于模型生成的 Domain-Aware Self-Instruct 方法,动-名词对都过于集中在狭窄的范围内,限制了模型对该领域的全面理解。因此,急需研究一种自动拓展特定领域指令数据覆盖范围的方法,以提升微调后模型在处理各种任务时的性能。
▲ 图1. 不同方法产生的指令中top-15动词名词对的分布对比
1.2 Contributions
1. 问题挖掘:我们发现了当前特定领域的指令微调数据存在多样性不足,覆盖范围有限的问题。
2. 创新方案:我们提出了 Explore-Instruct,一种增强领域特定指令数据覆盖程度的策略。借鉴经典搜索算法,Explore-Instruct 使用 LLM 主动探索领域空间并生成指令微调数据。
3. 开源共建:我们将 Explore-Instruct 的探索框架代码完全开源,助力各领域多样化指令微调数据的探索。我们同时开源了头脑风暴,智能改写,数学解题领域的数据和模型。欢迎体验:
https://github.com/fanqiwan/Explore-Instruct
2、Method: Explore-Instruct
2.1 Domain Space Representation
在构建特定领域指令微调数据时,我们认为指令的覆盖范围受以下两个关键因素影响:
深度是指领域内任务的细粒度分解,使 LLM 能更深入、精确地解决各个任务。
广度则强调领域内包含的不同任务类型,有助于 LLM 更全面地认识和理解特定领域。
因此,我们将领域空间建模成一棵树,每个节点代表一个任务,连接节点的边表示任务间的层次关系。这种表示方法为 LLM 提供了结构化的途径,以获取全面且深入的特定领域微调数据。
2.2 Active Exploration Strategy
我们提出的主动探索策略包括两个核心操作:前瞻探索(Lookahead Exploration)和回溯探索(Backtracking Exploration)。
▲ 图2. 主动探索的基本操作
前瞻探索:沿深度方向探索领域空间,绘制出复杂的任务网络。具体来说,它通过 LLM 将任务分解为多个不同的子任务,这些子任务与现有任务存在差异。提示模板如图 2 所示:
▲ 图3. 前瞻探索的提示模板
图中的 {Target task} 是要分解的特定任务,而 {Exploration State} 是表示已探索任务状态的近似,用于引导探索朝未充分探索的区域进行。
回溯探索是另一个关键操作,用于在领域空间内寻找替代分支,扩大搜索边界,增加任务多样性。具体来说,对于给定任务,我们先回溯找到父任务,再用 LLM 沿广度方向探索父任务,获取新子任务。回溯探索的提示模板与前瞻探索相似,只是目标任务有所不同。
2.3 Explore-Instruct Implementation
Explore-Instruct 的具体实现主要包括两个步骤:一是领域空间探索,二是指令微调数据生成。
领域空间探索从根任务出发,利用深度优先搜索(DFS)逐个遍历节点,通过前瞻与回溯探索扩展子任务。当达到预设的深度或广度上限时,搜索停止。这种探索方式让 Explore-Instruct 在领域空间中高效地学习各种任务需求。
指令微调数据生成对于探索到的每个任务,我们使用 LLM 生成以任务为核心的指令微调数据,为每个任务产生一系列指令及其回复。
▲ 图4. 具体实现流程
为保证指令多样性,我们在探索和生成过程中引入了基于 ROUGE-L 的多样性过滤器。简单来说,只有当子任务或指令与现有任务或指令的 ROUGE-L 重叠低于阈值时,我们才会保留。
3、Data-Centric Analysis
我们展示了各种方法生成的指令微调数据的基本统计信息,并有如下发现:
1. Explore-Instruct 生成的指令中,动名词对数量在所有领域均高于基线方法;
2. 生成指令的动名词对出现次数的均值和方差在各领域也低于基线方法。
这证实了 Explore-Instruct 可以提高 LLM 生成领域特定指令微调数据的覆盖范围。
▲ 图5. 指令微调数据的基本统计信息
从下图中,我们可以清楚地看到不同方法生成的指令动名词对分布。相较于 Self-Instruct 方法,Explore-Instruct 能产生更均匀的分布。
▲ 图6. 指令中动名词对的分布情况
我们进一步观察各方法生成的指令微调数据的平均 ROUGE-L 重叠分布,发现 Explore-Instruct 生成指令的 ROUGE-L 分数集中在较小区域,说明其多样性更高。
▲ 图7. 指令之间ROUGE-L重叠的分布情况
4、Experiments
我们在头脑风暴(Brainstorming),智能写作(Rewriting),以及数学解题(Math)领域使用各种方法产生的指令微调数据,对 Llama-7B 模型进行了训练。
自动评估的结果如下所示,可以发现:
1. 在相同训练数据量下,我们的 Explore-LM 在三个领域均优于其他基线模型;
2. 在增加训练数量后,Explore-LM-Ext 的性能得到进一步提升,在头脑风暴领域性能甚至超过 ChatGPT。
▲ 图8. 自动评估实验结果
▲ 图9. 自动评估补充实验结果
同时,我们对主观评估较高的头脑风暴和智能写作领域进行了人工评估。结果显示,人工评估与自动评估结果较为一致,证明我们的方法在质量上得到了人类的认可和好评。
▲ 图10. 人工评估实验结果
5、Conclusion
在这篇文章里,我们介绍了 Explore-Instruct,一种提高特定领域指令覆盖率的方法。受经典搜索算法启发,Explore-Instruct 利用 LLM 主动探索领域空间,获取多样化的特定领域指令微调数据。
通过在头脑风暴、智能改写和数学解题领域的实验,我们从数据分析和模型性能评估两方面证实了 Explore-Instruct 的有效性,展示了其在提高特定领域指令覆盖和增强模型任务表现方面的优势。
参考文献:
[1] Chung H W, Hou L, Longpre S, et al. Scaling instruction-finetuned language models[J]. arXiv preprint arXiv:2210.11416, 2022.
[2] Wang Y, Kordi Y, Mishra S, et al. Self-instruct: Aligning language model with self generated instructions[J]. arXiv preprint arXiv:2212.10560, 2022.
- 上一篇: 搜索未知领域,激发你好奇心和创适力
- 下一篇: 百度最新搜索算法揭秘:信息规律与排名新趋势
猜你喜欢
- 2024-10-09 「超详细」深度优先搜索算法(DFS)
- 2024-10-09 机器学习算法【专题】:聚类算法原理
- 2024-10-09 LanDA: 语言引导的多源领域自适应
- 2024-10-09 抖音加码智能搜索,测试“AI搜”功能
- 2024-10-09 一分钟了解C++递推算法 c++递归公式
- 2024-10-09 NumPy(Python库):数组的排序与搜索技术教程
- 2024-10-09 图上的随机游走与PageRank算法:理论与应用探索
- 2024-10-09 「原生案例」如何在JavaScript中实现实时搜索功能
- 2024-10-09 百度最新搜索算法揭秘:信息规律与排名新趋势
- 2024-10-09 JavaScript 算法每日一题:搜索插入位置
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)