一脉相通!聊聊 ChatGPT 发展路线

news/2024/11/22 7:46:32/

format,png

作者 | 上衫翔二 

整理 | NewBeeNLP

大家好,这里是 NewBeeNLP。

首页最近被chatGPT刷屏,但翔二博主左看右看发现很多想法似乎都是一脉相通的,于是连夜从存档中找了一些文章尝试理一理它的理论路线。

  • 具身智能综述和应用(Embodied AI)[1]

  • 多模态中的指令控制[2]

同时想到今年在智源人工智能前沿报告(2021-2022年度)[3]中其实就有说道:

“未来三年,基于虚拟世界、实时时空环境训练的具身模型会取得较大的发展,如自动驾驶、机器人、游戏中数字人等······未来五到十年,超大规模预训练模型(信息模型)和具身模型将会结合,成为‘数字超人’,在知识能力以及跟环境的互动程度上,将比以往的人类都要强······具身模型和机器人也将结合,在物理世界出现能力比人类还要强的无人系统,即‘具身超人’。乐观估计,在未来三十年,数字超人和具身超人可能会结合,最终诞生超级人工智能。”

测了测chatGPT的性能后,好像这一切来的稍快了一点?

博主个人理解,它以更为embodied AI形式的指令作为输入,以训练/微调大规模的信息模型,并基于强化学习与真实世界做持续交互,已经很接近此处所提到的“数字超人”了。
25c9310ea4e151389b155d5141c2b1d7.png

关于chatGPT的基础介绍和使用本文不做过多介绍,可以参考各种报道文和知乎等等,此处推荐几份解读。

  • 视频讲解chatGPT[4]

  • 张俊林大佬的理解

本篇博文先简要整理一下跟chatGPT相关Instruction Tuning的几篇论文。

FLAN

  • paper:Finetuned Language Models Are Zero-Shot Learners

  • link:https://arxiv.org/pdf/2109.01652.pdf

  • code:https://github.com/google-research/flan

首先是ICLR22的FLAN模型,这篇文章明确提出 Instruction Tuning(指令微调)的技术,它的本质目的是想将 NLP 任务转换为自然语言指令,再将其投入模型进行训练,通过给模型提供指令和选项的方式,使其能够提升Zero-Shot任务的性能表现。

Motivation在于大规模的语言模型如GPT-3可以非常好地学习few-shot,但它在zero-shot上却不那么成功。

例如, GPT-3在阅读理解、问题回答和自然语言推理等任务上的表现很一般,作者认为一个潜在的原因是,如果没有少量示例的zero-shot条件下,模型很难在与训练前数据格式(主要是prompts)维持一致。

既然如此,那么为什么不直接用自然语言指令做输入呢?如下图所示,不管是commonsense reasoning任务还是machine translation任务,都可以变为instruct的形式,然后利用大模型进行学习。

在这种方式下,而当一个unseen task进入时,通过理解其自然语言语义可以轻松实现zero-shot的扩展,如natural language inference任务。7524e10a40ff4f3016a3d66eb5eebc62.png

Instruction-tuning、Fine-tuning、Prompt-Tuning的区别在哪?

  • Fine-tuning:先在大规模语料上进行预训练,然后再在某个下游任务上进行微调,如BERT、T5;

  • Prompt-tuning:先选择某个通用的大规模预训练模型,然后为具体的任务生成一个prompt模板以适应大模型进行微调,如GPT-3;

  • Instruction-tuning:仍然在预训练语言模型的基础上,先在多个已知任务上进行微调(通过自然语言的形式),然后再推理某个新任务上进行zero-shot。48585cd838db9ce0b0f9b0fd6dcb7654.png

具体来说,作者提出的Finetuned LAnguage Net(FLAN)模型将62个NLP task分为12 cluster,同一个cluster内是相同的任务类型,如下图所示。ae03313a4632f02b5a4c9ed3cd1b0ba6.png

对于每个task,将为其手动构建10个独特template,作为以自然语言描述该任务的instructions。为了增加多样性,对于每个数据集,还包括最多三个“turned the task around”的模板(例如,对于情感分类,要求其生成电影评论的模板)。所有数据集的混合将用于后续预训练语言模型做instruction tuning,其中每个数据集的template都是随机选取的。

如下图所示,Premise、Hypothesis、Options会被填充到不同的template中作为训练数据。6dccb855d75faec66985f47763f7eb84.png

然后基于LaMDA-PT模型进行微调。LaMDA-PT是一个包含137B参数的自回归语言模型,这个模型在web文档(包括代码)、对话数据和维基百科上进行了预训练,同时有大约10%的数据是非英语数据。然后FLAN混合了所有构造的数据集在128核的TPUv3上微调60个小时。

RLHF:Fine-Tuning Language Models from Human Preferences

  • paper:Fine-Tuning Language Models from Human Preferences

  • link:https://arxiv.org/abs/1909.08593

  • code:https://github.com/openai/lm-human-preferences

在介绍instructGPT和chatGPT前,还有两份比较重要的前置工作,即Reinforcement Learning from Human Feedback (RLHF),如何从用户的明确需要中学习。

这份工作是将大模型往人类偏好进行结合的一次尝试,其使用强化学习PPO而不是监督学习来微调语言模型GPT-2。

为了弄清人类偏好,首先需要从预训练好的GPT-2 开始,并通过询问人工标注者四个生成样本中哪个样本最好来收集数据集。

基于收集的数据集,尝试基于强化学习微调GPT,简要模型结构如下图,其需要训练两个模块一个是GPT模型(policy),一个是奖励模型(reward model),其中奖励模型用于模拟人类对四个样本的打分以代表其选择偏好。5c998ddd011375b0c7f78a59efddcf6b.png

整体的训练过程是:

  • 从数据集中采样context x,并使用policy网络得到4种句子,即(x、y0、y1、y2、y3),其中y的下标表示让人类的优先级排序。

  • 训练policy网络。从人类标注数据中进行训练,其中r是奖励模型的分数,该loss尝试让人类更喜欢的句子得分更高,从而来微调policy生成更符合人类偏好的句子。

92ff748f9e150144b41fdab12417dfa2.png

  • 训练奖励模型, 其中为了分布变化太远,会额外添加一个带有期望KL惩罚。

a2c15d1ba70f6d3b1c6b619a8fbd9b34.png

  • 在online模式中,可以继续收集额外的样本,并定期重新训练奖励模型r。

这篇论文的主要启发在于,人类偏好的约束、使用PPO的训练方法可以使模型在online的过程中持续学习。

RLHF:Learning to Summarize with Human Feedback

  • paper:Fine-Tuning Language Models from Human Preferences

  • link:https://arxiv.org/abs/1909.08593

  • code:https://github.com/openai/lm-human-preferences

随后的这份工作会更为贴近instructGPT和chatGPT,其提出主要按照人类偏好的summarization场景中。

其模型框架架构如下图所示,和instructGPT类似,主要分为三步:先收集人类在成对摘要上偏好的数据集,然后通过监督学习训练一个奖励模型(RM)来预测人类偏好的摘要。最后,利用奖励模型RM给出的分数去微调生成摘要的大模型,以上模型都基于GPT-3进行微调。c610fec4b7ae1f770360a479e99ad1c0.png

  • Collect human feedback 。来自reddit.com的300万篇不同主题的文章以及由原海报撰写的文章摘要,然后由人工标注摘要的顺序。

  • Train reward model 。奖励函数预测摘要之间谁更好,因此利用成对损失函数进行监督训练即可。

68627b48ab27689bc5072ac74968767a.pngTrain policy with PPO 。和前一篇文章一样,利用奖励模型得到一种偏好策略以产生更高质量的摘要结果。

65c7306394098ff0f980a09b95f0bab1.png

其中KL惩罚由两个作用,一是阻止模型崩溃为单一模式。其次,它确保了模型不会因为太追求学习偏好而偏离原本的摘要模型太远。

这份工作虽然局限于摘要,但在训练框架是为后续的instructGPT打下了基础,即人工标注+强化学习。

instructGPT

  • paper:Training language models to follow instructions with human feedback

  • link:https://arxiv.org/abs/2203.02155

instructGPT从模型结构上与上一篇文章几乎一摸一样,但它通向了更为宽广的领域。通过收集带有更多人类instruct的自然语言文本句子,使其可以完成各种nlp任务,正式进化为一个全能模型。

94e18597ecb8eaca7737db71a434d3dd.png

实现上仍然分为三个步骤,

  • 监督学习 。收集人工编写的期望模型如何输出的数据集,并使用其来训练GPT3。

  • 奖励模型 。收集人工标注的模型多个输出之间的排序数据集。并训练一个奖励模型,以预测用户更喜欢哪个模型输出。

bbbffe532a6477ca1902800e90750bef.png

  • 微调GPT3 。使用这个奖励模型作为奖励函数,以PPO的方式,微调监督学习得到的GPT3。

2c1bcd3eb28184c02294bc12c9472e64.png

KL惩罚仍然是为了对减轻奖励模型的过度优化。此外还会将训练前的梯度混合到PPO梯度中,以维持模型在更多通用NLP任务上的性能。

更多细节可以见开头的讲解视频[5]

chatGPT

目前只知道chatGPT基于instructGPT进行训练,但具体细节没有更多的披露,但是从以上几份工作中,可以窥见一些技术路线。

如chatGPT可以轻轻松松根据人类的语言完成从对话、写诗、编故事、写代码等等等等等各种任务,大概率就是基于FLAN模型这种迁移任务的方式,从而能够满足各位用户老爷们的奇怪需要。而instructGPT则应该是chatGPT用于训练的主要架构,包括数据集构建、模型框架和训练目标等等。

最后想再放一次这张图,博主也需要再好好悟一悟。
6674a3a27fa5e8bac11cada997833b1d.png

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)

format,png

本文参考资料

[1]

具身智能综述和应用(Embodied AI): https://blog.csdn.net/qq_39388410/article/details/128264098

[2]

多模态中的指令控制: https://blog.csdn.net/qq_39388410/article/details/128249922

[3]

智源人工智能前沿报告(2021-2022年度): http://lib.ia.ac.cn:8003/ContentDelivery/20220120/智源人工智能前沿报告(BAAI AI Frontiers)_71DC14922FAFCFBF907D4844BF892292.pdf

[4]

视频讲解chatGPT: https://www.bilibili.com/video/BV1BG4y137SH/

[5]

讲解视频: https://www.bilibili.com/video/BV1BG4y137SH/

2228036ed79ec6708fc142995e0f4d23.gif


http://www.ppmy.cn/news/965503.html

相关文章

AI是超越还是桎梏?从ChatGPT到5G+AI,我们在聊什么?

从家常里短聊到科技创新,从人文故事探讨到物理科学,诞生2个月用户即破亿的ChatGPT正成为火爆全球的AI应用工具,其强大的能力超乎人们想象。这款几乎博学多识的聊天机器人能运用AI系统进行简洁的交流,完成各种指令信息的表达。面对…

桥梁监测需要哪些设备?

随着我国经济的发展,我国桥梁建设也迈上了新的台阶。截至2022年底,我国的公路桥梁总数达到了103.32万座。然而,随着在役桥梁使用时间的增长,承载能力受到荷载、环境以及结构退化等因素的影响,桥梁安全问题日益凸显。桥…

剑指offer练习_动态规划_连续子数组的最大和

解决方案: class Solution:def FindGreatestSumOfSubArray(self , array: List[int]) -> int:# write code heredp[0]*len(array)dp[0]array[0]max_array[0]for i in range(1,len(array)):dp[i]max(dp[i-1]array[i],array[i])max_max(max_,dp[i])return max_思路…

尝试通过图灵测试

好的,我会用中文回答你的问题。在这里,你可以随便问我任何问题,我会尽力回答你。你可以问我有关技术、学术、文化、历史等各方面的问题。请告诉我,你想问我什么?

Flink 启动就报错,但exception没提示。其中一个task failure 该怎么办?

文章目录 前言一、排查二、解决 前言 最近我在生产又遇到一个问题,就是消费着一段时间之后,忽然就不再消费了,但也不报错。观察了几次,我发现时间基本是停留在上下班高峰期数据量最大的时候。我主观猜测可能是同时间进来的数据过…

分享fred的kamailio脚本

## 来源:https://github.com/fredposner/scripts/blob/master/kamailio/mid-registrar.cfg#!KAMAILIO # # Edge proxy configuration # mid-registrar example ##!substdef "!REGISTRAR_IP!a.b.c.d!g" #!substdef "!REGISTRAR_PORT!5060!g" #!s…

公开信发起人Tegmark:中国得天独厚,为AI安全和治理做贡献丨2023智源大会回顾...

导读 近日,MIT教授、「暂停大型AI实验」公开信的发起人之一Max Tegmark发表了题为「如何掌控 AI」的精彩演说,介绍了发展可控 AI 的重要意义,提出了通过「机械可解释性」实现可控 AI 的技术路线,同时也肯定了中国在 AI 安全领域的…

跨越AI大门,一本翻译蓝皮书、一场人机共译比赛投射出怎样的未来?

大语言模型LLM是这几个月热度最高的全球明星。目前看来,AI逐渐走向复杂专业的白领型岗位,已经是必然的趋势。 OpenAI刚刚发布的35页论文中,提到了最容易受到LLM影响的职业中译员和笔译员排名第二。 以前机器翻译就是出国旅游时拍拍路标、看看…