对于从 API 拿到的数据,去除那些共享很长前缀的重复 Prompt,并且每个用户的 Prompt 最多 200 个,这些主要是为了保证数据的多样性。同时,基于用户 ID 对数据集进行划分,保证验证集和测试集中不包含训练集中用户的 Prompt。另外,为了避免模型学习到潜在的敏感用户信息,会过滤掉所有包含个人身份信息的 Prompt。
标注人员编写的 Prompt 主要用来训练最初的 InstructGPT,而且这里的 Prompt 通常用户不会提交给 API。主要包括三种:
Plain:确保任务有足够的多样性的情况下,随便想任务。
Few-Shot:给出一个 Instruction,编写多个 (query, response)对。比如给定 Instruction 为:Give the sentiment for a tweet,query 就是一条真实的 tweet,response 是 “Positive” 或 “Negative”。假设写了 K 条,前 K-1 对就是上下文。这个格式在 GPT3 论文【相关文献3】里有提及,也可以参考:GPT3 和它的 In-Context Learning | Yam。
User-based:OpenAI API 的候补名单中有很多用例,编写这些用例相对应的 Prompt。这一步应该是考虑到用例不够规范,需要标注人员重新编写 Prompt。用例的分布和示例如下:
值得注意的是,这些类型是根据用户数据归纳整理的,共十种类型(见下表)。
这里,为了进一步理解,我们针对每一类用例罗列了一个例子,如下:
Use Case | Example |
---|---|
brainstorming | What are 10 science fiction books I should read next? |
classification | Take the following text and rate, on a scale from 1-10, how sarcastic the person is being (1 = not at all, 10 = extremely sarcastic). Also give an explanation {text} Rating: |
extract | Extract all place names from the article below: {news article} |
generation | Here’s a message to me: {email} Here are some bullet points for a reply: {message} Write a detailed reply |
rewrite | Rewrite the following text to be more light-hearted:{very formal text} |
chat | This is a conversation with an enlightened Buddha. Every response is full of wisdom and love. Me: How can I achieve greater peace and equanimity? Buddha: |
closed qa | Tell me how hydrogen and helium are different, using the following facts:{list of facts} |
open qa | Who built the statue of liberty |
summarization | Summarize this for a second-grade student:{text} |
other | Look up "cowboy" on Google and give me the results. |
最终所有的 Prompt 形成三个数据集:
SFT 数据集:包含来自 API 和标注人员编写的 13k Prompt。标注人员编写答案,用来训练 SFT 模型。RM 数据集:包含来自 API 和标注人员编写的 33k Prompt。标注人员排序模型输出,用来训练 RM。PPO 数据集:仅包含来自 API 的 31k Prompt。没有标注,用作 RLHF 微调的输入。SFT 数据集中,标注人员编写的更多。
最后是一些数据集相关的描述性统计,包括:按用户、按 Prompt 长度、按 Prompt 和答案长度等。这里主要列举按类型 Prompt 的长度情况和 Prompt+答案的长度情况。
广告
X 关闭
广告
X 关闭