1. 文献工作简介
这篇文章是OpenAI在上年提出的一篇对于GPT3的改进文章,提出了InstructGPT。
其主体的思路应该是借鉴了Google的Flan。Google的Flan这个工作中提出,使用标注数据对预训练模型进行Finetune,即使对于标注数据没有涉及的新的领域任务,模型的效果也是可以提升的,也就是说,对于大模型而言,使用标注数据进行finetune可以进一步提升模型的泛化性。
另外,在InstructGPT当中,除了引入了标注数据进行finetune之外,文中还加入了强化学习的方式,使用人工数据来对模型进行了进一步的优化。
而关于模型的实际效果,除了文中给出的这些结果之外,另外一个相关的工作大概会更为广为人知,即ChatGPT。
这个牛逼的模型基本就是按照InstructGPT的方式进行训练然后放出端口的,其效果就无需赘述了,委实是有点牛逼了。
2. 模型优化设计
下面,我们来看一下文中具体给出的模型优化方案。
如前所述,InstructGPT模型的主要优化点包括了以下一些内容:
- 加入了多种任务的标注数据进行了finetune;
- 在Prompt的基础上加入了Instruct部分,进一步固化生成方向;
- 使用人工交互数据进行了强化学习;
整体的训练步骤如下图所示:
可以看到,整体上模型训练可以分为三部分:
- 使用监督数据进行finetune;
- 使用人类行为数据进行RM模型训练;
- 使用2中的RM模型对莫i选哪个进行强化学习优化;
而关于模型训练使用的数据,具体如下:
其中,表1是不同类型的数据分布,表2是使用的prompt样例。
3. 实验结果
下面,我们来看一下文中给出的实验结果。
首先,我们来看一下整体的人工评测效果如下:
可以看到:
- Prompt、Finetune以及RL对于模型均表达为正向的效果。
然后,我们来看一下模型在公开数据集上的效果表达:
文中同样对不同的Prompt的效果进行了考察,得到结果如下:
最后,文中给出了一些具体的case对比如下:
可以看到:
- 整体来看,InstructGPT对于具体任务的返回的返回结果表达上是是全面优于GPT3的。
4. 总结 & 思考
整体上来说,InstructGPT较之原版的GPT3在生成任务的指向性上更加明确,生成结果的正确性也更高,但即便如此,碍于GPT模型LLM的本质,它依然无法避免的可能会生成错误的结果,这方面很难彻底规避。
但即便如此,InstructGPT,或者说ChatGPT的效果确实毋庸置疑的,毕竟都让Google感觉惊慌了,我司也打算大规模加入到Edge以及Office软件当中,未来LLM的前景基本是没啥好质疑的了,虽然现阶段的LLM到底能否经得起使用,这方面我倒是暂时呈观望态度,虽然有点唱反调,但是毕竟做过生成任务,这方面对于LLM结果的可靠度实在是没有那么自信……
Anyway,让子弹再飞一会吧……