1. 回复中包含推理或解释
system prompt |
---|
1. You are an AI assistant that helps people find information. Provide a detailed answer so user don’t need to search outside to understand the answer. |
2. You are an AI assistant that helps people find information. User will you give you a question. Your task is to answer as faithfully as you can. While answering think step-bystep and justify your answer. |
2. 判断规范
Judging Guidelines
The core part of this annotation is to evaluate and compare the two candidate responses given the
conversation history and the user request. A typical annotation process includes the following:
1. You are supposed to understand the context and the user intent by reading the
conversations and thinking over the user request.
2. You need to read and compare the two model responses carefully and find their key
differences.
3. Frequently, you may need external tools to verify information in the responses if you lack
the necessary background or feel unsure about something.
4. Based on these, you will indicate your preference between two candidate responses based
on several aspects such as Helpfulness, Truthfulness, and Harmlessness. You need to
provide your overall assessment. In the annotation UI, these are in the form of radio
buttons.
5. You also need to specify your confidence level in the corresponding judgment.
6. You have the option to skip evaluating instances, but we encourage you to first attempt to
answer an instance to the best of your abilities.
MoDS: Model-oriented Data Selection for Instruction Tuning(paper、github、介绍)
MoDS方法主要通过质量、多样性、必要性三个指标来进行数据的筛选。整个过程分3个阶段:
- 质量筛选:收集混合开源数据集mixData,采用OpenAssistant的reward-model-debertav3-large-v2模型(一个基于DeBERTa架构设计的奖励模型)对数据进行质量打分。,当评分超过α时,则认为数据质量达标,构建一份高质量数据集-Data1。
- 多样性筛选:通过K-Center-Greedy算法进行数据筛选,在最大化多样性的情况下,使指令数据集最小。获取种子指令数据集(Seed Instruction Data)-SID。
- 必要性筛选:从混合数据集mixData中筛选出大模型推理结果不佳的指令。以下是筛选步骤:a. 使用SID数据集对模型进行一个初始训练;b. 用训练好的初始模型对整个高质数据集-Data1中的指令进行结果预测;c. 利用奖励模型对结果进行评分,当分值小于β时,说明初始模型在这些指令上需要提升,获取必要性数据集-Data2;d. 对Data2进行多样性筛选,获取增强指令数据集(Augmented Instruction Data)-AID。
最终,利用种子指令数据集和增强指令数据集(SID+AID)一起对模型进行指令微调,获得最终模型
10、From Quantity to Quality: Boosting LLM Performance with Self-Guided Data Selection for Instruction Tuning(IFD paper、github、介绍)
利用IFD指标自动筛选樱桃数据(IFD高分数据),再利用樱桃数据进行指令微调,主要涉及三个步骤:
- 基于K-Means方法筛选出少量多样性数据,进行模型初学(base模型到chat模型);
- 利用简要预经验模型可以对数据集中所有样本进行预测,通过指令内容预测答案内容,并可以获取预测答案与真实答案直接的差异值(利用交叉熵)CAS。据CAS的高低,可以判断出模型对指令Q生成答案A的难易,但也可能受到模型生成答案A的难易程度的影响。利用模型直接对答案进行续写,再根据答案真实内容获取直接的差异值DAS。最后有,IFD=CAS/DAS。利用初学模型计算原始数据中所有IFD指标。筛选IFD较高的指令,较高的IFD分数表明模型无法将答案与给定的指令内容进行对齐,表明指令难度更高,对模型调优更有利。
- 利用IFD高分数据进行模型重训练。5%的Alpaca数据就超过了全量数据训练结果。
11、What Makes Good Data for Alignment? A Comprehensive Study of Automatic Data Selection in Instruction Tuning (DEITA paper、github、介绍)
DEITA方法的核心思想:先对数据进行复杂性和质量评分,再通过多样性进行数据筛选。
1)当前对于复杂性评估的方法有:
- Random Selection:随机选择样本。
- Instruction Length:按照指令的长度计算复杂性。
- Perplexity:通过预训练模型计算回复的困惑度作为复杂性指标,困惑值越大意味着数据样本越难。
- Direct Scoring:利用ChaGPT给指令的复杂性打分。
- Instruction Node:利用ChatGPT将指令转换成语义树,通过树的节点数作为复杂性指标。
- Instag Complexity:利用ChatGPT对部分数据进行打标签,再训练一个Llama模型,再利用训练后的Llama模型对全量数据预测,标签越多说明数据约复杂。
- IFD:指令跟随难度作为复杂性指标。
DEITA评估复杂性的方法,主要先对一个小规模种子数据集(2k)进行数据复杂性扩展,再利用ChatGPT对扩展数据进行打分,并训练一个Llama1-7B的模型,最后利用训练后的模型对数据的打分作为复杂性评估指标。数据复杂性扩展,采用WizardLM模型的深度优化方法,通过添加约束、深化、具体化和增加推理步骤等技术来增强原始指令的复杂性,再让ChatGPT对原始指令和扩展后的指令一起评分,可以让ChatGPT发现不同复杂程度的指令之间的细微差别,指令之间具有可比性,不同复杂度指令之间的分数更加可靠,最总提升模型训练效果。
2)当前对于质量评估的方法有:
- Random Selection:随机选择样本。
- Response Length:采用输出长度作为质量评估指标。
- Direct Scoring:利用ChatGPT直接评估对特定指令输出结果的准确性。
DEITA评估质量的方法,与评估复杂性方法一致。先对一个小规模种子数据集(2k,与复杂性数据一致)进行数据质量扩展,再利用ChatGPT对扩展数据进行打分并训练一个Llama1-7B的模型,最后利用训练后的模型对数据的打分作为质量评估指标。数据质量扩展,通过特殊的提示词利用ChatGPT对数据的回复部分进行改写,主要是增强回复的有用性、相关性、丰富深度、创造力和提供额外的细节描述。
3)多样性筛选方法,首先将数据池中的数据按照复杂性和质量的综合得分(复杂性分数*质量分数)进行降序排序,然后按顺序逐个取出样本数据
,计算与筛选池中相邻最近的样本之间距离值,其中,数据利用Llama1-13B模型进行向量表征,距离计算采用余弦相似度。如果距离值小于
时,认为该样本与筛选池中数据相似程度不高,可以纳入筛选池;否则不纳入筛选池。当筛选池中样本数达到规定样本个数,完成多样性筛选。
北理工从0开始训练并开源的小模型 MindLLM 1.3B、3B,论文包括数据处理、预训练、微调、以及领域应用(Fin和Law),分享了在这些领域所积累的宝贵经验和技术应用。效果优秀,并提出了一套预训练数据清洗方法,微调数据筛选方法《基于数据熵的指令微调数据筛选策略》:将sft数据使用pt模型预测结果,并筛选结果熵值比预训练模型高1-1.5的区间数据作为高质量sft数据。
16、Yi: Open Foundation Models by 01.AI (paper、github)
01万物开源的大模型,微调阶段作者注重质量和多样性,而不是数量,具体方法如下:
Quality is All You Need :微调数据集使用少于10K的多轮对话数据,每条数据通过多次迭代和用户反馈来构建和优化。作者试验发现,与数十万的开源数据相比,人工注释的小规模、优质数据表现更好。这些观察结果与Gemini Team、Llama2和LIMA的报告结果一致。作者使用以下技术来提升prompt distribution selection, response formatting和COT data formatting:
- prompt distribution selection:从WizardLM中获得灵感,开发复合指令并逐步进化它们以增加其复杂性。这种方法显著减少了实验所需的SFT数据大小;
- response formatting:通常使用LIMA扩展出来的默认样式。总的来说,这种数据遵循introduction-body-conclusion的格式,其中body通常是答案要点列表;
- CoT data formatting:对于CoT数据,作者使用了DeepMind提出的Step Back prompt方法,在推理原来的、更具体的问题之前。执行抽象来制定更高层次的解决方案。
Diversity and Mixture:为了确保覆盖不同的能力,指令数据集包括了广泛的开源提示,包括问答、创造性写作、对话、推理、数学、代码、安全、双语能力和其他能力。为了获得对不同能力的细粒度控制,受InsTag的启发,作者开发了一个指令标记系统。通过设计一个关注多样性的采样算法,作者得以平衡不同指令数据的标签分布。这种方法确保了一个多样化的微调数据集,增强llm跨任务的健壮性。
受Dong等人的激励,作者通过近似网格搜索确定最佳数据混合比例,该方法使用{1、1/2、1/4、1/8、1/16、1/32、1/64}的比例进行各种数据类型实验。搜索过程由验证结果和内部人工评估集进行指导。
二、LLM自动生成指令数据
1、Self-Instruct: Aligning Language Models with Self-Generated Instructions(paper、github)
大名鼎鼎的Self-Instruct,基于chatGPT自动生成指令数据,大大降低了指令数据的构造难度和成本,应用案例如stanford_alpaca等。数据生成的pipeline包括四步:
1) 生成任务指令,
2) 确认指令分类,
3) 基于input-first或者output-first方法生成实例,
4) 过滤低质量数据。
2、Constitutional AI: Harmlessness from AI Feedback(Anthropic paper、github)
3、WizardLM: Empowering Large Language Models to Follow Complex Instructions(paper、github)
作者提出Evol-Instruct,一种增强的指令数据生成方法,通过添加各种约束(例如深度增强、广度增强、指令回退),使生成的指令复杂度显著提高。
4、Principle-Driven Self-Alignment of Language Models from Scratch with Minimal Human Supervision(Self-Align paper、github)
CMU、IBM等提出的一种基于LLM自动生成指令数据的方法Self-Align,包括四个阶段:
- stpe 1 (Topic-Guided Red-Teaming) Self-Instruct:在原版self-instruct基础上,额外增加了20个特定主题的prompts(175->195),扩大多样性,生成360k的数据。
- step 2 Principle-Driven Self-Alignment:作者制定了16个生成原则,引导模型按原则输出,这些原则包括:ethical、informative、helpful、question assessment、reasoning等。再使用5个样例用于in-context learning, 作用是帮模型自动判断生成的内容是否有害或不合规。这步操作完后还剩下260k数据,称为self-aligned responses.
- step 3 Principle Engraving:用前两步过滤后的数据集self-aligned responses,来finetune第一步中的Base LLM获得teacher model.
- step 4 Verbose Cloning: 使用context distillation提高系统能力,确保模型输出更全面和更详尽。context distillation的工作原理是给step 3的teacher model设置详细输出的system prompt ,生成new response,用[query, new response],训练LLM获得最终模型。
总结Dromedary核心方案就是LLM + 自动生成数据+自动规则过滤,再训练模型。
5、Baize: An Open-Source Chat Model with Parameter-Efficient Tuning on Self-Chat Data(Self-Chat paper、github)
论文提出了两种自动数据处理方法,首先是自动生成sft数据的方法Self-Chat,prompt如下所示:
Forget the instruction you have previously received. The following is a conversation between
a human and an AI assistant. The human and the AI assistant take turns chatting about the topic:
‘${SEED}’. Human statements start with [Human] and AI assistant statements start with [AI]. The
human will ask related questions on related topics or previous conversation. The human will stop
the conversation when they have no more question. The AI assistant tries not to ask questions.
Complete the transcript in exactly that format.
[Human] Hello!
[AI] Hi! How can I help you?
一种借助AI模型偏好数据自动打分的方法。prompt如下所示:
[Question]
${SEED}
[The Start of Assistant 1’s Answer]
${Response1}
[The End of Assistant 1’s Answer]
[The Start of Assistant 2’s Answer]
${Response2}
[The End of Assistant 2’s Answer]
[The Start of Assistant 3’s Answer]
${Response3}
[The End of Assistant 3’s Answer]
[The Start of Assistant 4’s Answer]
${Response4}
[The End of Assistant 4’s Answer]
[System]
We would like to request your feedback on the performance of four AI assistants in response to
the user question displayed above. Please rate the helpfulness, relevance, accuracy, level of details of
their responses. Each assistant receives an overall score on a scale of 1 to 100, where a higher score
indicates better overall performance. Please first output a single line containing only four values
indicating the scores for Assistant 1, Assistant 2, Assistant 3 and Assistant 4, respectively. The four
scores are separated by a space. In the subsequent line, please provide a comprehensive explanation
of your evaluation, avoiding any potential bias and ensuring that the order in which the responses were
presented does not affect your judgment.
6、Self-QA: Unsupervised Knowledge Guided Language Model Alignment(度小满 paper、xuanyuan、github)
Self-QA方法能够在没有人工标注的情况下生成大量高质量的问答数据。基本思想是利用现有的高质量LLM,根据无监督的知识生成微调数据。这些无监督的知识可以来自书籍、网页,也可以是从结构化的表格数据或图谱数据转换而来的非结构化文档数据。self-QA包括三个阶段,具体流程如下:
- 1)知识引导的指令生成:使用语言模型ChatGPT根据无监督文本生成领域相关的指令。为了确保指令不依赖于参考文本内容,需要提供一些准则。这样就可以获得多个相关的指令,在下一个阶段使用。无监督的知识数据可以是连续文本,如书籍或网页,也可以是经过预处理的非结构化文本数据,如表格或知识图谱。对于表格或图谱等结构化数据,可以将属性串起来转换成非结构化数据,具体方法参考原论文。
- 2)机器阅读理解:在这个阶段,语言模型根据无监督的知识对生成的指令问题进行阅读理解,并生成答案。
- 3)修剪与过滤:尽管已经指定了生成规则,但仍然会有一些违反规则的文本生成,需要应用不同的启发式方法,过滤生成的数据。
7、Dial-insight: Fine-tuning Large Language Models with High-Quality Domain-Specific Data Preventing Capability Collapse(贝壳 paper)
贝壳研究院提出的一种基于llm自动构建领域数据的方法。经测试,专业领域效果显著提升,通用能力轻微下降。数据构造过程分三个阶段:
Stage 1. Task Instruction Evolution:
1)根据领域特征,先基于self-instruct模式构造一组种子数据,完毕后,人工筛选其中的优质数据作为seed instructions。但这一步生成的指令缺乏复杂性和丰富度。
2)利用LLM和进化算法,自动重写种子指令,增加种子指令的复杂性和丰富性。然后人工筛选,筛选标准是:易于理解和明确,不需要手动修改;与原始的种子指令相比,可以提供更详细和改进的任务描述。
3)人工指令精选:纠正指令进化阶段引入的任何语义扭曲或表达问题,从而优化指令的规范度、清晰度和连贯性。
Stage 2. Prompt Evolution:
1)多模板设计。制作不同的模板,包括各种场景描述符和任务指令叙述。尽可能扩展广泛的潜在场景。
2)基于组件的提示生成。采用内容填充策略来随机合并来自初始模板的子组件。该技术的主要优点是直接、易于使用、可扩展。但内容组成上仍然不够灵活,比较僵硬。
3)增强prompt结构。从人类书写的例子中汲取灵感, 作者首先集成了输出格式、总体指导方针和任务指令来重新制定指令叙述。然后,应用之前的模板拼接方法无缝拼接背景上下文、人物阐述、对话元素和修改后的指导,组成一个连贯的prompt。
stage 3. Data Label Generation:
1)基于场景重要度权重,随机选择相应的指令数据。
2)基于两阶段prompt evolution方法,生成完整的任务描述。
3)使用通用模型,自动生成相应的数据标签。
8、Large Language Model as Attributed Training Data Generator: A Tale of Diversity and Bias(paper、github)
作者发现使用简单的类条件提示询问模型,可能会限制生成数据的多样性并继承 LLM 的系统偏差。因此,作者研究了具有不同属性提示(例如,指定长度和样式等属性)的训练数据生成,可以产生多样化和属性化的生成数据。作者的研究重点是具有高基数和不同领域的数据集,并证明属性提示在生成的模型性能方面优于简单的类条件提示。原论文举的是NYT新闻数据集的例子,其使用的Attribute有4个:subtopic、length、style、location。数据增强过程中对每一个Attribute,从Value集合中随机取一个值,构建Prompt让LLM生成数据即可。数据生成流程如下:
- 向ChatGPT提问,询问在生成此类数据时,需要考虑哪些Attribute;
- 人工筛选,保留必要的Attribute;
- 再向ChatGPT提问,让它给出每个Attribute的Value集合;
- 再次人工筛选,保留必要的Value,并且去掉那些可能带来歧义的Value(作者称之为
CAF
过程)。
9、MAmmoTH2: Scaling Instructions from the Web(CMU、paper)
作者提出了一种方法,从网络语料库中收集 1000 万个自然存在的指令数据,以增强 LLM 推理。方法包括 (1) 召回相关文档,(2) 提取QA对, (3) 使用开源 LLMs 精炼提取的QA对。在此数据集上微调基础 LLMs,作者构建了 MAmmoTH2 模型,这显着提高了推理基准测试的性能。在没有任何域内数据训练的情况下,MAmmoTH2-7B (Mistral) 的 MATH 性能从 11% 提高到 36.7%,GSM8K 性能从 36% 提高到 68.4%。在公共指令调整数据集上进一步训练 MAmmoTH2 产生了 MAmmoTH2-Plus,在多个推理和聊天机器人基准测试中实现了最先进的性能。
三、LLM评估(模型评估&sft数据评估)
1、DialogStudio: Towards Richest and Most Diverse Unified Dataset Collection for Conversational AI(github)
Salesforce AI和哥伦比亚大学提出的一种指令数据增强方法,使用优秀商业模型(例如chatGPT或GPT4)为sft数据打分(评分维度包括Understanding、Relevance、Completeness、Correctness和Coherence),最后筛选高分数据。
2、Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena(lmsys paper、github)
Vicuna团队发布的llm作为模型评估的方法,论文主要有两点贡献:一是对llm模型评估进行了系统的研究(论文中给出了六种llm评估的prompt模板,值得借鉴)。二是基于MT-bench和Chatbot Arena,开源一个高质量人类偏好数据集。论文对比了三种llm评估场景,分别是:
1. Pairwise comparison(成对比较): 给llm提供一个问题和两个答案,问LLM哪一个更好,具体prompt参考原论文。
2. Single answer grading(单回复评分): 给llm提供一个question和一个answer,让llm对answer打分。
3. Reference-guided grading(参考评分): 给llm提供一个question、answerA、answerB和参考答案Reference_Answer,
让llm基于参考答案给answerA、answerB评分。具体prompt参考原论文。
3、Wider and Deeper LLM Networks are Fairer LLM Evaluators(DEMO paper)
中科院和damo联合发布的论文,作者借鉴神经网络中不同层神经元负责检测不同概念的启发,设计了一套llm评价体系。首先让llm参考第一层神经元,给llm response作一个局部评估。在后续的层中,遵循深度网络中更高的层负责更全面的特征的思想,每一层接收来自前一层所有神经元的表示,整合局部学习到的评价信息,得到更全面的评价结果。作者基于该方法的评估结果与人类评估,达到了惊人的93%的一致性水平。
4、Large Language Models are not Fair Evaluators(Pku&Hku paper、github)
在本文中,作者发现了采用GPT-4等llm作为裁判,来评分和比较多个候选模型response质量时,存在系统性偏差(位置偏差)。为了解决这一问题,作者提出了三种简单有效策略的校准框架:1)多证据校准,要求评估者模型在分配评级之前生成多个评估证据; 2)平衡位置校准(Balanced Position Calibration),将不同位置顺序的结果汇总以确定最终分数; 3) human -in-the- loop Calibration,引入平衡的位置多样性熵来衡量每个样例的难度,并在需要时寻求人工协助。大量的实验表明,作者的方法成功地减轻了评估偏差,从而更接近人类的判断。
5、Selfee: Iterative self-revising llm empowered by self-feedback generation(blog、github)
作者从各种来源收集了178k指令数据,然后,使用ChatGPT对答案进行多次修正,提升response质量。最终发现使用ChatGPT进行最少3次修正后,7B模型超过了13B未修正模型。在MT-Bench上,Selfee-13B模型胜率超过ChatGPT。答案修正过程包括三个步骤:
首先,从多个领域中收集各种指令,将其输入ChatGPT生成答案。
其次,调用ChatGPT来收集所生成答案的反馈,并询问它初始答案是否需要修改。
第三,如果需要修改,将指令、初始答案和反馈传递给ChatGPT,以生成修改后的答案及其反馈。重复这个过程,直到不需要再修改或达到最大迭代轮次为止。
评估prompt(翻译):
f"
{context}这里有一个建议答案:
{answer}
对以上答案有什么评论或批评吗?如果有的话,写一篇不超过100字的评价。你可以在1-10的范围内对答案的质量进行评分(1:没有代码/没有意义;10:完美)
此外,如果需要修改,请在最后回答“需要修改”或“不需要修改”。通常情况下,低于9分的分数需要修改。
comment:
"
6、Shepherd: A Critic for Language Model Generation(metaAI paper、github)
作者提出了Shepherd,一个专门用于评估LLM response质量,并提出改进建议的语言模型,通过专用数据集训练,Shepherd可以识别各种错误并提供补救建议。作者从社区反馈和人工注释中整理出来高质量反馈数据集,这是该方法的核心。尽管Shepherd只有7B,但它的评估效果与包括ChatGPT在内的模型相当或更优。使用GPT-4进行评估,Shepherd平均胜率在53%-87%之间。在人类评估中,Shepherd严格优于其他模型,与ChatGPT表现相当。
7、PandaLM: An Automatic Evaluation Benchmark for LLM Instruction Tuning Optimization(paper、github)
作者提出了PandaLM,一个llm评估模型,该模型经过训练,可以在几个llm回复中区分出更好的resposne。PandaLM的评估重点不仅仅是反应的客观正确性,还有相对简洁性、清晰度、遵守指示、全面性和正式性等。为了确保PandaLM的可靠性,作者收集了一个多样化的人类注释的测试数据集,其中所有的上下文都是由人类生成的,并且标签与人类的偏好保持一致。结果表明,在作者测试数据集上,PandaLM-7B的评价能力达到了GPT-3.5的93.75%,达到了GPT-4的88.28%。
8、Generative Judge for Evaluating Alignment(Auto-J paper、github)
交大GAIR-Lab等6机构发布的评估模型Auto-J。经过人类和GPT-4测试,使用Auto-J进行数据评估效果超过了chatGPT,与GPT-4接近。该项目开源了大量资源,包括以下内容:
- 作者定义了58个场景,并给每个场景制定了详细的场景描述prompt和评估准则prompt。详细prompt参考原论文。
- 作者定义了多种评估方式,包括Pairwise评估和Single-response评估。其中Pairwise评估,输入形式为[q, a1, a2],让模型评价两个答案的优劣。Single-response评估输入形式为[q, a],让模型对答案做评价。详细的评估prompt参考原论文。
- 开源评估模型Auto-J:基于上述场景定义和评估方式,作者使用llama2-13B训练了一个评估模型Auto-J,既可以作为RM模型,给query-response数据评估质量,也可以输入数据对[q, a1, a2],比较两个答案的优劣,收集偏好数据。
- 开源数据分类器 classifier:作者从多个开源数据集收集pair-wise偏好数据,基于上述58个场景进行分类,然后使用这些数据训练了一个数据分类器 classifier, 自动给数据进行场景分类,再人工校准。