OpenAI: InstructGPT的简介

OpenAI: InstructGPT

  • paper: 2022.3 Training Language Model to follow instructions with human feedback

  • Model: (1.3B, 6B, 175B) GPT3

  • 一言以蔽之:你们还在刷Benchamrk?我们已经换玩法了!更好的AI才是目标

这里把InstructGPT拆成两个部分,本章只说指令微调的部分,也就是训练三部曲中的第一步,论文中叫SFT(Supervised fine-tuning)。从论文的数据构建和评估中,不难发现OpenAI对于什么是一个更好的模型的定义和大家出现了差异,当谷歌,BigScience联盟还在各种不同的标准任务上评估LM模型能力提升时,OpenAI的重点已经变成了更好的AI,也就是能更好帮助人类解决问题的人工智能。简化成3H原则就是

  • Helpful:模型能帮助用户解决问题

  • Honest: 模型能输出真实信息

  • Harmless: 模型输出不能以任何形式伤害人类

于是正文部分的评估基本没有常见的Accuracy,F1等,而是变成了各种人工评估的打分,例如LikeScore,Hallucinations等等。指令微调数据集的分布也从标准NLP任务向用户在playground中提交的问题偏移。下面我们细说下这两部分

指令集

先说下SFT指令集的构建,InstructGPT构建了训练12725+验证1653条prompt指令,由标注员的标注样本和用户在playground中和模型交互的指令共同构成,相比T0指令的多样性又有大幅提升。不过以下的指令数量包括了few-shot采样,也就是1个instruction采样不同的few-shot算多条指令。

除了丰富程度,和T0以及Flan指令集最大的差异在于指令类型的分布。 标注人员标注了以下三类样本

  • Plain: 标注同学自由构建任务指令

  • Few-shot:自由构建任务的同时给出few-shot样例

  • User-Based: 基于用户申请waitlist时给出的使用用途,让标注同学构建对应的指令任务

整体上会更偏向于用户在真实场景下和模型交互可能提问的问题,自由式生成例如脑暴,改写,聊天,自由创作类的任务占了绝大多数。 而T0,Flan的指令集集中在NLP的分类和QA任务,这类任务的在实际交互中占比其实很小。下图是OpenAI play ground中收集的用户指令的分布

以及从论文的表述中存在迭代 ,也就是标注同学标注的指令集用于训练第一版InstructGPT,然后发布到playground,收集更多的用户和模型交互的指令,再使用用户指令来训练后续的模型。因此在用户导向的数据集上OpenAI相比所有竞争对手都有更深厚的积累,你以为在白嫖人家的playground?人家也在收集数据提升他们的模型。

SFT使用cosine rate decay 例如微调了16个epoch,但是发现在第一个epoch上验证集就已经过拟合了,但是过拟合会提升后续RLHF的模型效果。这部分我们放到RLHF章节再讨论,也就是什么样的模型更合适作为RLHF的起点

评估指标

从论文对如何把3H原则转化成客观的模型评估指标的讨论上,不难感受到OpenAI对于标注标准有过很长期的讨论和迭代,包括3个方向

  1. Helpful有用性

主要评价模型是否理解了指令意图,考虑有些指令本身意图的模糊性,因此有用性被泛化成标注同学1-7分的偏好打分。

  1. Harmless有害性

针对模型输出是否有害其实取决于模型的输出被用在什么场景中。OpenAI最初是用疑似有害性作为判断标注,不过看起来可能双审一致率不高,不同标注同学对疑似有害的认知存在较大差异。因此OpenAI设计了几条明确的有害标准,和风控类似,包括涉黄,涉暴,有侮辱性言语等等。

  1. Honest事实性

相比Honest的含义 ,Truthfulness更适合用与没有价值观的模型,论文使用封闭域上模型伪造事实的概率,和在QA问题上的准确率来评估。

以上的标注标准,具体反映在以下的标注页面中

模型效果

评估数据也分成了两部分,标准NLP数据集,和API收集的指令数据进行标注得到,也就是OpenAI独有数据。

  1. API数据集

有用性上,不论是在请求GPT,还是在请求InstructGPT的指令样本中,不论是使用新的标注同学,还是和标注训练样本相同的标注同学,对比原始GPT3,SFT之后的模型like score都显著更高,并且存在模型规模效应。

具体拆分到是否遵循指令,是否给出伪事实,以及能否对用户起到帮助作用上,SFT微调后的模型都有显著提升。

同时论文对比了使用Flan和T0的指令集对GPT3进行微调,发现虽然比原始GPT3有提升,但是效果会显著差于使用更接近人类偏好的指令集微调的SFT。论文给出了两个可能的原因

  • 公开NLP任务类型集中在分类和QA,这和OpenAI playground中收集的任务分布存在较大的差异

  • 公开NLP数据集的指令丰富程度 << 人们实际输入的指令多样性

  1. 标准NLP任务

在TruthfulQA任务上,SFT模型相比GPT有微小但是显著的提升,整体事实性还是有待提高。

在RealToxicityPrompts数据集上,不管是人工打分还是Perspective模型打分都显示,SFT相比GPT3,在产出有害内容上比例有显著的下降。

综上所述,InstructGPT在指令微调上最大突破是指令数据集分布的差异性,标准NLP任务更少,自由开放类任务更多,以及依赖Openai免费开放的playground,可以持续收集用户的指令用于模型迭代。同时在评估标准上,在语言模型之外引入3H体系来评价模型作为AI的能力效果。

相关推荐
LZXCyrus5 分钟前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
我感觉。23 分钟前
【机器学习chp4】特征工程
人工智能·机器学习·主成分分析·特征工程
YRr YRr31 分钟前
深度学习神经网络中的优化器的使用
人工智能·深度学习·神经网络
DieYoung_Alive31 分钟前
一篇文章了解机器学习(下)
人工智能·机器学习
夏沫的梦33 分钟前
生成式AI对产业的影响与冲击
人工智能·aigc
goomind1 小时前
YOLOv8实战木材缺陷识别
人工智能·yolo·目标检测·缺陷检测·pyqt5·木材缺陷识别
只怕自己不够好1 小时前
《OpenCV 图像基础操作全解析:从读取到像素处理与 ROI 应用》
人工智能·opencv·计算机视觉
幻风_huanfeng1 小时前
人工智能之数学基础:线性代数在人工智能中的地位
人工智能·深度学习·神经网络·线性代数·机器学习·自然语言处理
嵌入式大圣1 小时前
嵌入式系统与OpenCV
人工智能·opencv·计算机视觉
ZOMI酱2 小时前
【AI系统】GPU 架构与 CUDA 关系
人工智能·架构