揭秘ChatGPT的数据集构建

news2024/11/25 2:26:22

从Open AI发表的论文《Training language models to follow instructions with human feedback》,我们可以知道ChatGPT/InstructGPT(两者技术原理基本一致,下面不再做区分)的训练过程分为以下3步:

  • SFT:根据采集的SFT数据集对GPT-3进行有监督的微调。
  • RM:收集人工标注的对比数据,训练奖励模型。
  • PPO:使用RM作为强化学习的优化目标,利用PPO算法微调SFT模型。

注:从解析大语言模型训练三阶段我们知道LLM的训练一般包括预训练SFT以及RLHF(包含RM、PPO)三个阶段,在文章揭秘ChatGPT预训练数据集中我们已经揭秘了预训练数据集,因此本文将重点关注SFT、RM和PPO。

一、数据来源

Open AI的训练数据有2个来源:

  1. 由外包的标注人员编写
  2. 用户早期试用InstructGPT模型时提交给API的数据

1、标注人员

OpenAI通过一系列的筛选,找到了40个对不同人口群体的偏好敏感并且善于识别可能有害的输出的全职标注人员。整个过程中,OpenAI的研发人员跟这些标注人员紧密合作,给他们进行了培训,并对他们是否能够代表大众的偏好进行了评测。

40名外包员工来自美国和东南亚,分布比较集中且人数较少, InstructGPT的目标是训练一个价值观正确的预训练模型,它的价值观是由这40个外包员工的价值观组合而成。而这个比较窄的分布可能会生成一些其他地区比较在意的歧视,偏见问题。

  • 性别比例:男55%,女44.4%,未知5.6%
  • 国家分布:top3 菲律宾,孟加拉,美国
  • 年龄分布:75%左右的标注人员35岁以下
  • 受教育程度:本科及以上占比约89%

标注人员的工作是根据内容自己编写prompt,并且要求编写的Prompt满足下面三点:

  • 简单任务:标注人员给出任意简单的任务,同时要确保任务的多样性。
  • Few-shot任务:标注人员写出一个指示,同时写出其各种不同说法。
  • 用户反馈任务:从接口中获取用例,然后让标注人员根据这些用例编写prompt。

2、API用户

OpenAI训练了一个早期版本的InstructGPT,开放给了一部分用户,根据他们提问信息构造样本,对数据集做了如下操作:

  • 删除了一些重复的、包含个人信息的prompt。
  • 每个用户只取200条prompt。
  • 按照用户ID划分训练集、验证集和测试集,避免类似问题同时出现在训练集和验证集。


API prompt dataset

二、数据集构建

基于LLM的训练流程,Open AI准备了三份不同的训练数据集:

数据集

生成方法

训练量

训练任务

SFT dataset

由标注人员编写prompt对应的回答

13k

Supervised FineTune(SFT)

RM dataset

由标注人员对GPT产生的答案进行质量排序

33k

Reword Model(RM)

PPO dataset

不需要人工参与,GPT产生结果,RM进行打分

31k

Reinforcement learning (RL)

注:

  • SFTRM阶段需要人工标注的数据,PPO阶段不需要标注人员参与。
  • 人工标注的任务类型有2种,一种是prompt-response的生产标注,一种是对同一个prompt的多个response结果进行质量排序
  • 部分prompt由API生成(也是早期用户提供),可以作为模型训练集或者验证集的补充数据,减少了人工标注工作。
  • SFT的训练+验证数据集是prompt-response pair,这部分数据主要来自人工标注,有少量prompt来自于API。
  • RM的训练+验证数据集是prompt,一共有50k数据(10k人工标注+40k API生成),由模型生成50k*9个回答(output),再由标注人员对output进行排序。
  • PPO的训练+验证数据集是prompt,一共有47k数据(31k训练+16k验证),均由API生成,由模型产生回答(output),再由RM模型进行打分。

人工标注+API产生数据

InstructGPT/ChatGPT数据集

数据中96%以上是英文,其它20个语种例如中文,法语,西班牙语等加起来不到4%,这可能导致InstructGPT/ChatGPT能进行其它语种的生成时,效果应该远不如英文。

三、数据示例

1、SFT数据示例

SFT数据需要根据不同的任务类型来生产,比如通用问答、头脑风暴、分类任务、生成任务、聊天等,每条SFT数据应该包含prompt和response两部分,以下是论文中的一些prompt示例:

2、RM数据示例

RM主要是对模型的output进行打标并对多个output进行排序:对每个output进行整体质量打分(1-7分,得分越高质量越高),并进一步细化打标。完成模型的output打标后,综合考虑真实性(truthful)、无害性(harmless)、有益性(helpful)对输出进行整体排序。

模型的output打标

对多个output进行排序

以下是论文中的RM数据标注示例:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1580627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

私域电商客户要挨一刀的“订单发货管理”,微信:必须强制接入

文丨微三云营销总监胡佳东,点击上方“关注”,为你分享市场商业模式电商干货。 - 引言:超90%的私域运营商家都见到了或者说遇到了这个问题,如果没有读懂这个微信的模型机制,一定会懵逼,微三云营销总监胡佳…

C++11:function包装器

包装器,体现了C11中的封装性,包装器可以应用于:函数指针,仿函数,lambda 而包装器function的出现刚好也弥补了上述三种语法的不足之处 函数指针写起来较为复杂,而仿函数之间类型不同,lambda则在…

【Week Y5】yolo.py文件解读,插入C2模块到指定位置

插入C2模块到指定位置 一、common.py文件修改二、yolo.py文件修改三、yolov5s.yaml修改四、训练 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 模块结构如下:【同Y4】 【Y4…

Jackson 2.x 系列【15】序列化器 JsonSerializer

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 源码地址:https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 概述2. 方法2.1 构造2.2 序列化2.3 其他 3. 实现类3.1 StdSerializer3.1.1 源…

CSDN 广告太多,停更通知,转移到博客园

文章目录 前言新博客地址 前言 CSDN的广告实在是太多了,我是真的有点忍不了。直接把广告插在我的文章中间。而且我已经懒得找工作了,我当初写CSDN的目的就是为了找工作,有个博客排名。当时经济环境实在是太差了。我也没必要纠结这个2000粉丝…

Vue通过自定义指令实现元素平滑上升的动画效果。没一句废话

1、演示 2、介绍 这个指令不是原生自带的&#xff0c;需要手动去书写&#xff0c;但是这辈子只需要编写这一次就好了&#xff0c;后边可以反复利用。 用到的API&#xff1a;IntersectionObserver 这里有详细介绍 3、Vue文件代码 <template><div class"container&…

【计算机考研】408算法大题怎么练?

先说结论&#xff1a;基础阶段学好各个数据结构与&#xff0c;重点是数组、链表、树、图。然后强化阶段突破算法提 在基础阶段&#xff0c;并不需要过于专门地练习算法。相反&#xff0c;基础阶段的重点应该放在对各种数据结构原理的深入理解上。在我个人的经验中&#xff0c;…

【AcWing】蓝桥杯集训每日一题Day17|单调队列|求直方图中最大矩形|单调栈|模型转化|1413.矩形牛棚(C++)

1413.矩形牛棚 1413. 矩形牛棚 - AcWing题库难度&#xff1a;中等时/空限制&#xff1a;1s / 256MB总通过数&#xff1a;1914总尝试数&#xff1a;3823来源&#xff1a;usaco training 6.1算法标签单调栈 题目内容 作为一个资本家&#xff0c;农夫约翰希望通过购买更多的奶牛…

【零基础学数据结构】链表

目录 1.链表的概念 ​编辑 2.链表的雏形 ​编辑 3.链表的组成 ​编辑 4.链表代码 4.1创建节点 4.2链表的打印 4.3链表的尾插 4.4链表的头插 4.5链表的尾删 4.6链表的头删 4.7链表的查找 4.8链表在指定位置之前插⼊数据 4.9链表在指定位置之后插⼊数据 4.9-1删除pos节点 4.9…

VBA技术资料MF140:在PowerPoint中移动幻灯片位置

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

Java基于微信小程序的校园外卖平台设计与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警

文章目录 openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警 openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警 Plan Hint的结果会体现在计划的变化上&#xff0c;可以通过explain来查看变化。 …

公开课学习——JVM虚拟机面试核心点与性能优化点

文章目录 jdk的体系结构图Java语言的跨平台的特性&#xff0c;怎么实现的&#xff1f;jvm内部组成呢&#xff1f;pc的值怎么变得&#xff1f;main方法的栈帧有一点点区别&#xff0c;Math()是new出来的&#xff0c;放在堆区&#xff0c;这个堆区的math和我们栈帧中的局部变量表…

SpringBoot之集成Redis

SpringBoot之集成Redis 一、Redis集成简介二、集成步骤2.1 添加依赖2.2 添加配置2.3 项目中使用 三、工具类封装四、序列化 &#xff08;正常都需要自定义序列化&#xff09;五、分布式锁 一、Redis集成简介 Redis是我们Java开发中&#xff0c;使用频次非常高的一个nosql数据库…

【频繁模式挖掘】Apriori算法(附Python实现)

一、实验内容简介 该实验主要使用频繁模式和关联规则进行数据挖掘&#xff0c;使用Apriori算法和Python语言来编写和设计程序&#xff0c;然后用不同规模的数据集来检验效果&#xff0c;最后分析和探讨实验结果&#xff0c;看其是否达到了理想的效果。 二、算法说明 关联规则…

2024年生成式人工智能的现状:进展、挑战与未来展望的深入分析

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

wireshark抓包新手使用教程

Wireshark是非常流行的网络封包分析软件&#xff0c;可以截取各种网络数据包&#xff0c;并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括&#xff1a; 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学…

【C++航海王:追寻罗杰的编程之路】探寻实用的调试技巧

目录 1 -> 什么是bug&#xff1f; 2 -> 调试是什么&#xff1f;有多重要&#xff1f; 2.1 -> 调试是什么&#xff1f; 2.2 -> 调试的基本步骤 2.3 -> Debug和Release的介绍 3 -> Windows环境调试介绍 3.1 -> 调试环境的准备 3.2 -> 学会快捷键…

不牺牲算法,不挑剔芯片,这个来自中科院的团队正在加速国产AI芯片破局

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 不降低大模型算法精度&#xff0c;还能把芯片的算力利用效率提升 2~10 倍&#xff0c;这就是…

java swing毕业设计题目管理系统eclipse开发Mysql数据库CS结构java编程

一、源码特点 java swing毕业设计题目管理系统 是一套完善的窗体设计系统&#xff0c;对理解SWING java 编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;&#xff0c;系统主要采用C/S模式开发。 应用技术&#xff1a;javamysql 开发工具&#xff…