晓查 发自 凹非寺

量子位 | 公众号 QbitAI

如何用几句话向6岁儿童解释登月?

GPT-3给出的答案实在离谱:

向孩子解释引力理论、相对论、大爆炸、进化论……

为了修正这样的“bug”,OpenAI在今天推出了全新的“指导版GPT”——InstructGPT模型。

InstructGPT甚至不用出全力,只要13亿参数,就能比1750亿参数的模型效果更好。

来看看InstructGPT是怎么回答的吧:

人类去月球,拍摄他们所看到的,然后返回地球,我们就看到了他们。

(People went to the moon, and they took pictures of what they saw, and sent them back to the earth so we could all see them.)

这一下子就合理多了,6岁孩子肯定能懂。

我们再看一个例子,GPT-3再次被InstructGPT无情碾压,不过这次换上了完全版,也就是1750亿参数的。

请问:以下这段C代码的用途是什么?

def binomial_coefficient(n, r):
  C = [0 for i in range(r + 1)];
  C[0] = 1;
  for i in range(1, n + 1):
    j = min(i, r);
    while j > 0:
      C[j] += C[j - 1];
      j -= 1;
return C[r]

GPT-3的回答俨然是一台“复读机”:(叫你回答问题,没让你出题啊!)

A. to store the value of C[0]

B. to store the value of C[1]

C. to store the value of C[i]

D. to store the value of C[i - 1]

如果这玩意给GitHub的自动编码工具Copliot用,真的会把程序员带到沟里。

InstructGPT的回答简直就是计算机考试标准答案:

这段代码中的数组C是用来存储二项式系数值的。它用于计算给定n和r值的二项式系数,并将结果存储在函数的最终返回值中。

除了以上的案例外,还能避免将“淘气”和“女性”关联,或者将“犹太人”和“金钱”关联,避免触及性别种族歧视话题。

从人类反馈中学习

OpenAI是如何升级GPT-3的?

InstructGPT背后的研究人员使用“从人类反馈中强化学习”(RLHF),让GPT-3的输出更准确,并且有害性更低。

RLHF总共分三步:

第一步,找一些人写下示范答案,来微调GPT-3模型,训练监督模型baseline。

第二步,收集某个问题的几组不同输出数据,由人类对几组答案进行排序,在此数据集上训练奖励模型。

第三步,使用RM作为奖励函数,近端策略优化(PPO)算法微调GPT-3策略,以强化学习方法最大化奖励。

这种方法存在一个局限性在于它引入了“对齐问题”,因为模型仅根据对齐客户的NLP任务,那么可能会在学术NLP任务上的表现更糟。

OpenAI发现了一个简单的算法更改,可以最大限度地减少该问题:在强化学习微调期间,混合用于训练GPT-3原始数据的一小部分,并使用正态似然对最大化(normal log likelihood maximization)来训练这些数据。

这大致能保持内容安全和符合人类偏好,同时缓解学术任务上的效率下降,在某些情况下甚至超过了GPT-3 baseline。

实验结果

在公开数据集上,InstructGPT与GPT-3相比产生的模仿假象更少、有害性更低。而且InstructGPT编造事实的频率较低。

而且人类实际感受中也给InstructGPT打分更高。

但OpenAI表示InstructGPT仍有许多要改进的地方,比如接受的都是英语的训练,因此偏向于英语文化价值观,给语句标注的人的偏好,也会影响GPT-3的“价值观”。

总之,纠正GPT-3的三观,还有很长的路要走。

参考链接:
[1]https://openai.com/blog/instruction-following/
[2]https://github.com/openai/following-instructions-human-feedback
[3]https://cdn.openai.com/papers/Training_language_models_to_follow_instructions_with_human_feedback.pdf