文献阅读:Training language models to follow instructions with human feedback

1. 文献工作简介

这篇文章是OpenAI在上年提出的一篇对于GPT3的改进文章,提出了InstructGPT。

其主体的思路应该是借鉴了Google的Flan。Google的Flan这个工作中提出,使用标注数据对预训练模型进行Finetune,即使对于标注数据没有涉及的新的领域任务,模型的效果也是可以提升的,也就是说,对于大模型而言,使用标注数据进行finetune可以进一步提升模型的泛化性。

另外,在InstructGPT当中,除了引入了标注数据进行finetune之外,文中还加入了强化学习的方式,使用人工数据来对模型进行了进一步的优化。

而关于模型的实际效果,除了文中给出的这些结果之外,另外一个相关的工作大概会更为广为人知,即ChatGPT。

这个牛逼的模型基本就是按照InstructGPT的方式进行训练然后放出端口的,其效果就无需赘述了,委实是有点牛逼了。

2. 模型优化设计

下面,我们来看一下文中具体给出的模型优化方案。

如前所述,InstructGPT模型的主要优化点包括了以下一些内容:

  1. 加入了多种任务的标注数据进行了finetune;
  2. 在Prompt的基础上加入了Instruct部分,进一步固化生成方向;
  3. 使用人工交互数据进行了强化学习;

整体的训练步骤如下图所示:

在这里插入图片描述

可以看到,整体上模型训练可以分为三部分:

  1. 使用监督数据进行finetune;
  2. 使用人类行为数据进行RM模型训练;
  3. 使用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,让子弹再飞一会吧……

### 如何通过人类反馈训练语言模型以遵循指令 通过人类反馈训练语言模型以使其能够更好地遵循指令是一个复杂的过程,涉及多个阶段和技术方法。以下是对此过程的详细介绍: #### 数据收集与准备 为了使模型具备理解并执行指令的能力,数据的质量至关重要。最初的数据来源于互联网文本,这些数据用于预训练大型语言模型的基础架构[^2]。然而,这种基础模型的目标仅仅是预测下一个单词,并未针对特定的任务优化。 在项目初期,由于缺乏现成的支持指令交互的模型,研究人员采用了人工生成的方式获取高质量的输入-输出对。具体来说,OpenAI 雇佣了承包商来手动创建三类提示及其对应的理想响应[^3]。这种方法虽然劳动密集型较高,但它为后续更高效的自动化流程奠定了坚实的基础。 #### 微调 (Fine-tuning) 一旦积累了足够的高质量样本集之后,则可以利用它们进一步微调预先存在的大体量参数化神经网络结构。此步骤旨在调整原有通用性较强的语言建模能力向更加专注于理解和回应各种形式的具体指示方向转变。即让机器学习如何依据给定条件产生恰当的结果而不是单纯依赖统计规律推测可能延续的内容片段[^1]。 #### 基于偏好排序的学习机制引入 除了传统的监督式教学外,在本案例里还特别强调了一种新颖的技术手段—基于偏好的强化学习(RLHF, Reinforcement Learning from Human Feedback) 。它的工作原理大致如下:先由真人审阅若干候选答案版本;接着根据其主观判断给出相对优劣评价等级作为奖励信号反馈至算法内部;最后借助这些累积起来的经验指导系统逐步改进直至达到预期效果为止。 ```python def train_with_human_feedback(model, dataset): """ A simplified pseudo-code representation of training a model using human feedback. Args: model: Pretrained language model instance. dataset: Dataset containing input-output pairs along with preference rankings. Returns: Trained model that better follows instructions based on human preferences. """ for epoch in range(num_epochs): for batch in dataset: outputs = model(batch['input']) # Obtain human-generated ranking or direct labels as rewards reward_signal = get_reward_from_humans(outputs) # Update model parameters via reinforcement learning techniques update_model_parameters(model, reward_signal) return model ``` 上述伪代码展示了如何结合人类反馈来进行模型训练的一个简化框架。其中`get_reward_from_humans()`函数代表从真实用户处获得关于不同输出选项之间比较的信息源流转换操作序列集合体实例对象列表数组等等概念术语定义说明文档链接地址引用标记.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值