instructGPT

训练语言模型使他们能服从人类的一些指示。

语言模型只能输出训练时出现过的东西。模型的行为很大程度上取决于文本的收集和训练。但会出现几个问题,比如想让模型做的事情没有在训练的时候见过。还有模型可能会输出有风险的内容。

概要

把语言模型变大不代表它会更好的按照用户的意愿做事情。语言模型可能会生成不真实的,有毒的,我帮助的内容。这并不是学术问题而是偏向工程问题。比如谷歌有的时候把黑人识别成gorillas。其实谷歌把gorillas直接删掉了。还有微软的小冰发出有歧视性的语言。都引起了非常大的争议和社会波动。

文章将会展示将语言模型和人类想法做对齐。具体的做法是写了很多的prompt。在生产环境收集到的问题,然后对GPT3进行微调。此外做了一个人工标记模型哪个输出更好的数据集。使用强化学习进行学习,这个模型叫做instructGPT。发现instructGPT1.3B的参数效果要好过175B参数的GPT。instructGPT会降低有毒答案的出现,在公开的数据集上没有变差。但是instructGPT仍然会犯一些简单的错误。

介绍

大语言模型经常捏造事实,生成有偏见的输出。这是因为语言模型的目标函数是预测下一个词。这个目标函数和想让做的事情还是很大的。作者希望语言模型更有帮助性,更加真诚,无害实事求是。

使用了基于人类反馈的强化学习(RLHF)。open ai是做强化学习起家的。instructgpt是从gpt3训练出来的。

  1. 首先收集演示数据用于无监督训练。(从用户向GPT提交的问题中进行筛选)这个数据被用来微调GPT3这个微调后的模型叫做learning。
  2. 收集对比数据训练reawrd 模型.生成多个答案让人类标记哪个好哪个坏。让人类进行排序。接着训练一个奖励模型,使得对答案的分数,可以满足排序的关系。(这一部可以更快的得到更多的标注信息,是平衡成本。)
  3. 针对奖励的模型优化策略:继续微调前面训练好的FST。让训练好的分数更高。

主要如何训练一个强化学习的模型,由了强化学习模型如何进行强化学习。

  • 标注人员认为instructGPT的答案明显比GPT3的答案好很多。
  • instructGPT在真实性上比GPT3好
  • 对有毒输出进行了改善,但是对于偏见没有改善。
  • 做微调的时候对某个目标函数做微调,会让其他的目标函数性能会下降。
  • 在结果上进行评估instructgpt比gpt3要来的好
  • 公开的数据集不反应我们语言模型的好用程度。
  • 模型可以根据部分问题的标注的先验知识泛化到其他知识。
  • 模型还是会犯一些简单错误。

方法和实验细节

方法使用了之前的Ziegler和Stiennon论文中的方法。(都是open ai的工作)

数据集

prompt数据

  • 标注人员去写了很多的问题
  • 标注人员写指令
  • 用户提出的问题

然后训练之后给用户进行内测,在内测之后的数据集上继续拿prompt进行训练。这样进行反复迭代。

因此产生了三份数据集

  • 标注人员直接写答案 13k
  • 需要进行排序的数据集 33k
  • 训练强化模型也计算最终的instructGPT(PPO) 31k

在附录中给出了各种相似的例子。

open ai还对标注工进行了筛选。希望将真实性等优先。并且标注工之间的一致性比较高。

模型

一共有三个模型

  1. SFT有监督微调。把标注好的prompt进行重新训练。对13000个数据扫了16次。
  2. reward model(RM)奖励模型。对于原来模型做了一些强化学习的改造。准备了专用于强化学习微调的数据集。以提升GPT3的对话性能。

有监督微调如下

取出prompt和一对和它的答案。prompt是x,较高排序的是yw,较低的是yl。将问题和回答放到奖励模型中算对应的分数,用yw-yl排名越高分数越高,我们希望对应的奖励越大越好。然后使用了logistic loss。对应每个prompt有9个答案,选2就可以有36对。

$$ \text{loss}(\theta) = -\frac{1}{\left(\frac{K}{2}\right)} \mathbb{E}_{(x, y_w, y_l) \sim D} \left[ \log \left( \sigma \left( r_{\theta}(x, y_w) - r_{\theta}(x, y_l) \right) \right) \right] $$

最小化这个loss等于最大化俩个奖励分想见。9个答案可能相比于4个答案只多花百分之三四十的时间,因为读题目还需要时间。

强化学习如下

$$ \text{objective}(\phi) = \mathbb{E}_{(x, y) \sim D_{\pi_{\phi}^{\text{RL}}}} \left[ r_\theta(x, y) - \beta \log \left( \frac{\pi_{\phi}^{\text{RL}}(y \mid x)}{\pi^{\text{SFT}}(y \mid x)} \right) \right] + \gamma \mathbb{E}_{x \sim D_{\text{pretrain}}} \left[ \log (\pi_{\phi}^{\text{RL}}(x)) \right] $$

使用强化学习的主要目的是,强化学习的样本获取代价更小。

实验结果

讨论

后面三个模型训练代价比较低。而且数据都知识40个标记员出来的,而且90%是英语的。在模型上面并不是完全的安全。

Last modification:November 14, 2024
如果觉得我的文章对你有用,请随意赞赏