ChatGPT/InstructGPT详解( 二 )


  • 有用的(Helpful);
  • 可信的(Honest);
  • 无害的(Harmless) 。
OpenAI的GPT系列模型并没有开源,但是它们提供了模型的试用网站,有条件的同学可以自行试用 。
1.2 指示学习(Instruct Learning)和提示(Prompt Learning)学习指示学习是谷歌Deepmind的Quoc V.Le团队在2021年的一篇名为《F.NETuned Language Models Are Zero-Shot Learners》[5]文章中提出的思想 。指示学习和提示学习的目的都是去挖掘语言模型本身具备的知识 。不同的是Prompt是激发语言模型的补全能力,例如根据上半句生成下半句,或是完形填空等 。Instruct是激发语言模型的理解能力,它通过给出更明显的指令,让模型去做出正确的行动 。我们可以通过下面的例子来理解这两个不同的学习方式:
  1. 提示学习:给女朋友买了这个项链,她很喜欢,这个项链太____了 。
  2. 指示学习:判断这句话的情感:给女朋友买了这个项链,她很喜欢 。选项:A=好;B=一般;C=差 。
指示学习的优点是它经过多任务的微调后,也能够在其他任务上做zero-shot,而提示学习都是针对一个任务的 。泛化能力不如指示学习 。我们可以通过图2来理解微调,提示学习和指示学习 。
ChatGPT/InstructGPT详解

文章插图
图2:模型微调,提示学习,指示学习三者的异同
1.3 人工反馈的强化学习因为训练得到的模型并不是非常可控的,模型可以看做对训练集分布的一个拟合 。那么反馈到生成模型中,训练数据的分布便是影响生成内容的质量最重要的一个因素 。有时候我们希望模型并不仅仅只受训练数据的影响,而是人为可控的,从而保证生成数据的有用性,真实性和无害性 。论文中多次提到了对齐(Alignment)问题,我们可以理解为模型的输出内容和人类喜欢的输出内容的对齐,人类喜欢的不止包括生成内容的流畅性和语法的正确性,还包括生成内容的有用性、真实性和无害性 。
我们知道强化学习通过奖励(Reward)机制来指导模型训练,奖励机制可以看做传统模训练机制的损失函数 。奖励的计算要比损失函数更灵活和多样(AlphaGO的奖励是对局的胜负),这带来的代价是奖励的计算是不可导的,因此不能直接拿来做反向传播 。强化学习的思路是通过对奖励的大量采样来拟合损失函数,从而实现模型的训练 。同样人类反馈也是不可导的,那么我们也可以将人工反馈作为强化学习的奖励,基于人工反馈的强化学习便应运而生 。
RLHF最早可以追溯到google在2017年发表的《Deep Reinforcement Learning from Human Preferences》[6],它通过人工标注作为反馈,提升了强化学习在模拟机器人以及雅达利游戏上的表现效果 。
ChatGPT/InstructGPT详解

文章插图
图3:人工反馈的强化学习的基本原理
InstructGPT/ChatGPT中还用到了强化学习中一个经典的算法:OpenAI提出的最近策略优化(Proximal Policy Optimization,PPO)[7] 。PPO算法是一种新型的Policy Gradient算法,Policy Gradient算法对步长十分敏感,但是又难以选择合适的步长,在训练过程中新旧策略的的变化差异如果过大则不利于学习 。PPO提出了新的目标函数可以在多个训练步骤实现小批量的更新,解决了Policy Gradient算法中步长难以确定的问题 。其实TRPO也是为了解决这个思想但是相比于TRPO算法PPO算法更容易求解 。
2. InstructGPT/ChatGPT原理解读有了上面这些基础知识,我们再去了解InstructGPT和ChatGPT就会简单很多 。简单来说,InstructGPT/ChatGPT都是采用了GPT-3的网络结构,通过指示学习构建训练样本来训练一个反应预测内容效果的奖励模型(RM),最后通过这个奖励模型的打分来指导强化学习模型的训练 。InstructGPT/ChatGPT的训练流程如图4所示 。
ChatGPT/InstructGPT详解

文章插图
图4:InstructGPT的计算流程:(1)有监督微调(SFT);(2)奖励模型(RM)训练;(3)通过PPO根据奖励模型进行强化学习 。
从图4中我们可以看出,InstructGPT/ChatGPT的训练可以分成3步,其中第2步和第3步是的奖励模型和强化学习的SFT模型可以反复迭代优化 。
  1. 根据采集的SFT数据集对GPT-3进行有监督的微调(Supervised FineTune,SFT);


    推荐阅读