chatgpt 4 训练数据量 ChatGPT/InstructGPT论文(二)
一. 导读
第一篇解读:/论文(一)
继大火后,越来越多人想了解相关技术。官网虽然没有给出足够详细的信息,但给出了一篇推荐阅读论文,经过对比,可以发现两者技术相差不大,所以完全可以通过了解。下面就给出内容详解。阅读本文内容最好提前了解GPT1-GPT3。
二. 摘要和概述
这篇文章企图解决的问题:已有的大型语言模型(例如GPT3.5)并非模型越大越好。越大的模型仍然会生成假的、有害的、简单的和没有用的内容。简单的说,得不到用户想要的内容。
解决方法:1.人工引导,使用监督学习。2.强化学习,人工帮助的情况下,训练一个模型,该模型会进一步引导GPT模型生成优质的结果。
实验结果:使用1.3B参数的模型对比GPT-3的1750B参数模型能取得更优的性能(即能生成更优,更有用,更安全,更无害的内容,调戏过的人应该更有体会)。
三. 引言
已有大型语言模型经常会生成不想要的内容(很好理解,因为目标函数只是预测下一个词和数据集信噪比高的原因)。
所以,本文使用微调的方法在一个大型语言模型LM上进行改进。大致思路是:
评估:使用未在数据集中出现的,采用人工的方式对GPT模型生成的结果进行打分。
模型:模型考虑3种设置方案:1.3B,6B,150B。模型的结构和GPT-3保持一致。
实验结果:
在人工打分结果上,显著优于GPT-的结果比GPT-3更真实,即不会瞎说(但从的结果来看,还是有待提高)的结果比GPT-3更不会有害,即不会有种群歧视之类的面对具体的NLP数据集,还可以改进面对没有出现的人工引导的, 的结果也会更好,即 模型得到了推广效果会比使用一般的公开的NLP数据集后的GPT模型更好仍然会犯简单的小错误(从的结果来看确实)。 四. 流程
流程如下图所示。可以分成3个阶段:
阶段一:在这个阶段前,我们首先有一个大型语言模型GPT-3.5。然后,我们随机从指令库中采样出一些指令,并人工给出答案。最后,将这些指令和答案作为新的数据集进一步训练GPT-3.5模型,这里是由人工给出的答案作为标签,所以是有监督学习。我们将这一阶段完成后的模型称为SFT( fine- )。阶段二:使用SFT对指令库中的指令生成多个答案。然后人工对这些答案进行排名。使用这些排名训练一个奖励模型RW,即可以通过这个模型对一个指令的多个回答给出奖励值。阶段三:从指令库中采样一批指令,让SFT回答多个答案,并使用RW给出预测的奖励值。最后,使用奖励值采用PPO算法更新模型。
五.数据集
我觉得主要包含4个数据集,并且刚好4个数据集对应于不同的阶段。第2、3和4个数据集对应于流程的第1-3个阶段,而第1个数据集对应于第一个阶段前的训练GPT3.5模型的阶段。
1. 在了解4个数据集前要先了解先做了个指令库数据集
指令库数据集:前面多次提到指令库,这个指令库来自于以前的GPT模型提供的API中收集的用户问题。但这些问题经过了一定的处理,包括去除重复,限制每个用户最多200个指令,去除个人身份信息等。下表给出了来自API的指令分布。然而,这个处理好后的指令库数据集也并不全面,好用。所以让人工(请的)写了3类指令进行扩充:(1)Plain:尽可能广地写各种指令,增加多样性。(2)Few-shot:写出一些指令,并给出多对(问题,回答)。(3)User-based:根据刚才提供的API中得到的用户的请求队列中收集用户需求,并写出对应的指令。
下面是用到的4个数据集:
已有的用于训练GPT3.5的数据集:这个数据集主要来自NLP数据集、网络爬虫和从其他公司拿来的。可参考GPT-3( are Few-Shot )的工作。训练SFT的模型(数据量:13k):来自指令数据库中的API和人工写的(,),用于第一阶段初步训练。训练RM的排名数据集(数据量:33k):首先从指令数据库中的API和人工写的指令中获得指令,再使用进行回答,人工给的回答进行排名得到排名数据集(,Rank)。该数据集会用于训练得到一个RM模型。PPO数据集(数据量:31k):只从指令数据库的API中获得指令,并使用和RM模型分别得到和RM给出的分数。最后这个数据集由多个三元组(,,RM给出的分数)组成,用于进一步微调采用PPO算法微调。
总结:特有的数据集并不大,13k-33k对于一个公司来说是很小的了。不过仍然有效,能显著提升模型性能。
六.模型的训练
SFT( fine- ):第一阶段训练的模型SFT。具体地,迭代轮数使用16个epoch、学习率使用余弦衰减、模型残差连接,率为0.2。
RM:第二阶段训练的奖励模型,模型结构是在SFT基础上去掉了最后的层,并以(,,Rank=)训练模型。模型大小使用6B。
七. 相关链接