【跟李牧学AI】 ChatGPT是什么?--先看看InstructGPT

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

最近OpenAI公司的ChatGPT非常火爆虽然正式的论文还没有发布但是按照OpenAI一贯的工作思路基于前期工作进行相应的改造我们可以跟着沐神一起来看看InstructGPT也算法对了解ChatGPT有个前期的知识储备。

instructGPT论文地址

Training language models to follow instructions with human feedback

沐神视频链接InstructGPT 论文精读【论文精读·48】

目录

摘要

介绍

数据集

模型

1SFT

2RM

RM损失函数

3Reinforcement learningRL

RL损失函数


摘要

大型的语言模型效果虽然很好但是会产生很多对用户不真实的带有种族歧视的甚至是有害的言论。而InstructGPT则是基于GPT3在人工反馈的数据上训练了一版有监督的模型。效果是1.3B 参数的 InstructGPT优于175B 参数的GPT-3可以证明通过人工反馈进行fine-tune是个有前景的方向。

介绍

instructGPT是如何工作的呢

step1:

挑一些prompt让标注者写答案基于这部分数据使用GPT-3进行fine-tune得到模型SFTsupervised fine-tune

step2:

第一步可以得到一个还不错的模型但是成本高也无法穷尽所有答案所以第二步则是由SFT模型对问题采样出几个答案GPT-3得到词的概率再通过beam search采样出4个答案再由人工判断这几个答案的优劣然后训练出一个奖励模型RMreward model

step3:

使用强化学习的框架优化得到输出的策略使用RM模型计算reward并用PPO后面会讲来更新策略。

数据集

 那么prompt是如何生成的呢

1/Plain 让标注人员自己想---确保问题的多样性

2/Few-shot 让标注人员写指令以及指令的答案。比如找出这段代码的错误。

3/User-based 标注人员根据用户让OpenAI回答的问题构建一部分prompt

用户问题分布

基于这些数据划分成了3个数据集

1/ SFT标注人员直接写答案13k样本API+人工标注

2/ RM标注人员打分33k样本API+人工标注

3/PPO31k样本只有API的结果

然后开放在OpenAI的playground中让用户使用再根据用户ID收集一部分的问题一个用户最多200个。用户可能会针对一个问题用不同的句子提问所以根据用户ID划分不同的数据集避免一个用户的问题同时出现在多个数据集中污染结果。

这样就可以持续对模型进行迭代。

模型

InstructGPT中一共用到了3个模型

1SFT

SET的训练比较简单就是标注数据fine-tune13k样本较少结果会过拟合但这个模型只是为了初始化后面的模型后续发现过拟合反而对后续的训练反而是有帮助的。

2RM

的话输入是prompt和回答输出是一个reward。用前面的SFT的模型去除掉最后的softmax层转而使用一个线性投影层得到一个输出为1的标量这个标量就可以视作是RM中的reward。

RM损失函数

是一个比较常见的pair-wise ranking loss。

 这里的K取的是9每个prompt产出9个回答9个回答两两匹配中生成36个pair对在损失函数中第一项的分母中除以pair对数为了就是平衡掉不同K值带来的影响。

注意OpenAI之前的工作中用的K=4这里用的是K=9好处有

  • 标注资源增长较少

        对于同一个问题标注9个答案仅仅比4个多出了一些时间因为节约了读题和理解题目的时间我不是很认可啊排序我觉得还挺麻烦的

  • 6倍的训练数据

        9个答案能产生36个pair对而4个答案却只能产生6个pair对训练数据量增加了6倍。

  • 节约时间

      最费时间的是r_{\theta } (x,y_{w})的计算9个回答只需要计算9次但是能产出36个标量相当于节省了4倍的时间。

相当于是标注资源增加不多的情况下训练数据量变多同时时间没有增加很多。

同时前作是4个里面选最好的一个会有过拟合的情况这里改为全排序的话帮助缓解过拟合。

3Reinforcement learningRL

在强化学习的框架内随着模型的更新每次采样到的y是不一样的相当于是强化学习的环境变了那相应的获得的奖励也变了。

RL损失函数

{\pi _{\phi }}^{RL}就是强化学习学到的结果

\pi ^{SFT}就是SFT学习到的结果

第一项对于每个prompt丢进RL模型中产生一个y使用第二步的RM模型来计算r_{\theta } (x,y)这里的RM模型是模拟人类对每个y给出一个实时反馈。

第二项而RM训练时产生的y是来自于\pi ^{SFT}为了减小更新模型导致的数据分布不一致所以第二项中使用了KL散度使得模型学出来的结果和SFT的不要相差太多

最后一项GPT-3原始的目标函数使得整个模型能生成更有效回答的情况下其他任务的性能不要下降太多。

前2项就是ppo模型加上最后一项就是ppo-ptx模型。

沐神给了些其他建议

1.大模型模型不稳定的话使用小模型

2.与其使用不稳定的RL不如在数据集上多下点功夫多找人标注些数据集效果也未必不好。

ps论文中间还提到了如何挑选标注人员这个真的蛮重要的低质的标注人员真的非常拖累整个项目进程。。。这个还有专门的论文讲这个事情感兴趣的可以自己搜搜看

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: ChatGPT

“【跟李牧学AI】 ChatGPT是什么?--先看看InstructGPT” 的相关文章