节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。
合集在这里:《大模型面试宝典》(2024版) 正式发布!
喜欢本文记得收藏、关注、点赞,文末提供技术、面试交流群。
GPT-3 虽然在各大 NLP 任务以及文本生成的能力上令人惊艳,但是它仍然还是会生成一些带有偏见的,不真实的,有害的造成负面社会影响的信息,而且很多时候,他并不按人类喜欢的表达方式去说话。
在这个背景下,OpenAI 提出了一个 “Alignment” 概念,意思是模型输出与人类真实意图对齐,符合人类偏好。因此,为了让模型输出与用户意图更加 “align”,就有了 InstructGPT 这个工作。
InstructGPT 提出了一个理想化语言模型的 3H 目标:
-
Helpful: 能帮助用户解决问题
-
Honest: 不能捏造事实,不能误导用户
-
Harmless: 不能对用户或环境造成物理、精神、社会层面的伤害
从做研究的角度来讲,其实很多时候人们并不在意 “Alignment”问题,只要一个模型在评估的数据集上表现好,那基本就可以说是一个好模型。
但是对于工业界来说,一个产品的安全性就显得尤为重要,历史上也出现过不止一次因为某个负面 case,引发社会争议,从而导致整个产品下线的例子,特别是对于大公司来讲,出现一次负面 case 通常是比较严重的。比如之前 google 和 facebook 就都出现过把照片中的黑人识别成黑猩猩的事件,然后随之而来的就是产品的整改,公关道歉之类的。所以从这个角度来讲,OpenAI 做 InstructGPT 的出发点是非常合理且重要的。
关于 InstructGPT 的技术方案,原文分为了三个步骤:有监督微调,奖励模型训练,强化学习训练;实际上可以把它拆分成两种技术方案,一个是有监督微调(SFT),一个是基于人类反馈的强化学习(RLHF),下面我来概要介绍一下这两种技术方案,更多细节可以去阅读原始论文和文末推荐的解读文章。
有监督微调(SFT)
有监督微调(SFT: Supervised Fine-Tuning)过程如下图所示:
本质上来说,SFT 可以理解为人工标注了一批数据,然后去微调 GPT-3。 但是值得一提的是,这里标注的数据与 GPT-3 之前用来做下游任务使用的 few-shot 格式,有非常本质的区别。
GPT-3 中的 few-shot 对于同一个下游任务,通常采用固定的任务描述方式,而且需要人去探索哪一种任务表述方式更好。显然这种模式与真实场景下用户的使用方式存在较大的 gap,用户在向 GPT-3 提问时才不会采用某种固定的任务表述,而是随心所欲地以自己的说话习惯去表达某个需求。
InstructGPT 在 SFT 中标注的数据,正是为了消除这种模型预测与用户表达习惯之间的 gap。在标注过程中,他们从 GPT-3 的用户真实请求中采样大量下游任务的描述,然后让标注人员对任务描述进行续写,从而得到该问题的高质量回答。这里用户真实请求又被称为某个任务的指令(Instruct)****,即 InstructGPT 的核心思想“基于人类反馈的指令微调”。
基于人类反馈的强化学习(RLHF)
基于 SFT 得到的模型被用于接下来的 RLHF 做进一步的模型优化,流程如下:
如上图所示,以摘要生成任务为例,详细展示了如何基于人类反馈进行强化学习,最终训练完成得到 InstructGPT 模型。主要分为三步:
-
收集人类反馈: 使用初始化模型对一个样本生成多个不同摘要,人工对多个摘要按效果进行排序,得到一批排好序的摘要样本;
-
训练奖励模型: 使用第1步得到的样本集,训练一个模型,该模型输入为一篇文章和对应的一个摘要,模型输出为该摘要的得分;
-
训练策略模型: 使用初始化的策略模型生成一篇文章的摘要,然后使用奖励模型对该摘要打分,再使用打分值借助 PPO (Proximal Policy Optimization,近端策略优化)算法重新优化策略模型。
整体流程
InstructGPT 整体训练流程如下图三步所示:
而 ChatGPT 的训练流程如下图所示:
我们不能说很像,只能说是一模一样了,所以这就是为什么说 InstructGPT 是强大但闭源的 ChatGPT 的内核的由来,也是所有 LLMer 必须研读的工作了。
InstructGPT 总结
总的来说,InstructGPT 相对于之前的 GPT 系列,有以下几点值得注意:
解决 GPT-3 的输出与人类意图之间的 Align 问题;
让具备丰富世界知识的大模型,学习“人类偏好”;
标注人员明显感觉 InstructGPT 的输出比 GPT-3 的输出更好,更可靠;
InstructGPT 在真实性,丰富度上表现更好;
InstructGPT 对有害结果的生成控制的更好,但是对于“偏见”没有明显改善;
基于指令微调后,在公开任务测试集上的表现仍然良好;
InstructGPT 有令人意外的泛化性,在缺乏人类指令数据的任务上也表现很好。
最后一点讨论
从 InstructGPT 到 ChatGPT,我们是不是本质上还是回到“人工”智能那条路?像 GPT-2 和 GPT-3 那种完全的无监督还是行不通,最终不还是需要人工干预去标数据?
这个观点个人还是比较赞同的:不太倾向于这种悲观态度,人工智能目前最重要的还是要找到人工和智能之间的平衡点,而不是一味的去追求完全的无监督,无人工代价。
技术交流群
前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~
我们建了算法岗技术与面试交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2040。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。
方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2040,备注:技术交流
用通俗易懂方式讲解系列
- 《大模型面试宝典》(2024版) 正式发布!
- 《大模型实战宝典》(2024版)正式发布!
- 大模型面试准备(一):LLM主流结构和训练目标、构建流程
- 大模型面试准备(二):LLM容易被忽略的Tokenizer与Embedding
- 大模型面试准备(三):聊一聊大模型的幻觉问题
- 大模型面试准备(四):大模型面试必会的位置编码(绝对位置编码sinusoidal,旋转位置编码RoPE,以及相对位置编码ALiBi)
相关文章和阅读推荐:
[1] InstructGPT:Training language models to follow instructions with human feedback
[2] https://zhuanlan.zhihu.com/p/609716668
[3] https://zhuanlan.zhihu.com/p/590311003
[4] https://zhuanlan.zhihu.com/p/639252063
[5] https://zhuanlan.zhihu.com/p/637419868
[6] https://zhuanlan.zhihu.com/p/595891945
[7] https://zhuanlan.zhihu.com/p/622134699