ChatGPT的相关原理概念介绍

您所在的位置:网站首页 面粉做什么面食好吃 ChatGPT的相关原理概念介绍

ChatGPT的相关原理概念介绍

2023-04-05 04:30| 来源: 网络整理| 查看: 265

Prompt tuningPrompt简介

Prompt,也就是提示,是研究者们为了下游任务设计出来的一种输入形式或模板,将下游的预测等任务转化为语言模型(Language Model)任务,它能够帮助模型“回忆”起自己在预训练时“学习”到的东西,并将语言模型的预测结果转化为原本下游任务的预测结果。

在实际的研究中,prompts应该有空位置来填充答案,这个位置一般在句中或者句末。如果在句中,一般称这种prompt为cloze prompt完形提示;如果在句末,一般称这种prompt为prefix prompt前缀提示。

cloze prompt:填充答案的位置在句中;

prefix promp:填充答案的位置在句末。

Translate English to French: /* task description */

sea otter => loutre de mer /* example */

cheese => ___ /* prompt */

Prompt Tuning VS Fine Tuning

提示学习的灵感源于GPT-3. 所谓Prompt Tuning,就是在Prompt中插入一段task-specific的可以tune的prompt token。由于这个token对于每个任务都是不同的,所以可以帮助机器识别任务到底是什么。又因为机器自己学习(tune)这个prompt token,所以这个token对于机器会有非常好的效果。Prompt Tuning要求输入输出在模板里面,就不可避免地需要对原来的任务进行格式重构(Reformat),从而能够达到最佳性能。

Prompt Tuning的本质是改变任务格式,从而迎合大模型的性能。换句话说,Prompt Tuning的前提是预训练模型的性能已经非常好了,我们只需要在推断的时候进行任务格式转换即可获得很好的性能;而Fine-tuning是改变模型,去适应下游任务。

Instruct tuningInstruct tuning简介

指示学习是Google Deepmind团队在2021年的一篇名为《Finetuned Language Models Are Zero-Shot Learners》文章中提出的思想。他们这些论文标题都很有意思,openAI在2020年GPT-3那篇论文叫做《Language Models are Few-Shot Learners》。Google发现像GPT-3这样的大规模语言模型可以非常好地学习few-shot,但它在zero-shot上却不那么成功。例如,当时GPT-3在阅读理解、问题回答和自然语言推理等任务上的表现很一般,Google认为一个潜在的原因是,如果没有少量示例的也就是zero-shot的条件下,模型很难在与训练前数据格式(主要是prompts格式)维持一致。

既然如此,那么为什么不直接用自然语言指令做输入呢?所以这篇论文提出一种基于instruction-tuning的方法叫做FLAN(Finetuned LAnguage Net)。对所有的NLP task,根据其任务类型和目标划分若干个簇,随机挑选一个簇内的所有task作为评估,其他所有簇的task用于instruction-tuning。

模型可以先在常识推理、机器翻译、情感分析等任务上先进行微调,这些任务都可以变为instruct的形式,利用大模型进行学习。在这种方式下,而当一个unseen task进入时,比如自然语言推断natural language inference任务,就可以通过理解其自然语言语义可以轻松实现zero-shot的扩展。

Instruct Tuning VS Prompt Tuning

指示学习和提示学习的异同点:他们的目的都是去挖掘语言模型本身具备的知识。不同的是Prompt是激发语言模型的补全能力,例如根据上半句生成下半句,或是完形填空等。Instruct是激发语言模型的理解能力,它通过给出更明显的指令,让模型去做出正确的行动。

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

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

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

指示学习的优点是它经过多任务的微调后,能够在其他任务上做zero-shot,而提示学习都是针对一个任务,泛化能力不如指示学习,InstructGPT和ChatGPT用到的都是指令微调了。

In-context learning

In-context Learning简称ICL,也叫作类比学习或者情境学习。最开始应该是在GPT3中提出的。它避免了对大模型本身的修改,通过增加example(sentence1,answer1)的方式诱导GPT生成更优的结果。

北京大学的一篇综述A Survey for In-context Learning,认为In Context Learning(ICL)的关键思想是从类比中学习。

上图给出了一个语言模型如何使用ICL进行情感分析的例子。首先,ICL需要一些示例来形成一个演示上下文。这些示例通常是用自然语言模板编写的。然后ICL将查询的问题(即需要预测标签的input)和一个上下文演示(一些相关的cases)连接在一起,形成带有提示的输入,并将其输入到语言模型中进行预测。值得注意的是,与需要使用反向梯度更新模型参数的训练阶段的监督学习不同,ICL不需要参数更新,并直接对预先训练好的语言模型进行预测(这是与prompt,传统demonstration learning不同的地方,ICL不需要在下游Prompt-tuning或Fine-tuning)。我们希望该模型学习隐藏在上下文演示中的模式,并据此做出正确的预测。

当时GPT3在GPT2已有的zero-shot的基础上,提出了In-Context Learning的概念,有one-shot和few-shot两种方案,对应不同的增强Prompt的构建方式。随着模型参数量级的提升,few-shot,one-shot带来的效果提升更加显著。

在ChatGPT中也可以用这种方式和它交流,告诉它几个例子,让它学习例子给出答复。

Chain-of-Thought

前面提到的提示学习和指示学习,虽然使得然大模型语言建模方面表现很好,但是在逻辑推理和数值计算领域(称其为第二类任务,system-2 task),即使是当时最大的模型也难以处理某些推理任务,如数学单词问题、符号操作和常识性推理。哪怕是现在的ChatGPT,它可以和你聊20分钟的现代物理学历史,但是面对最基础的小学奥数,从第四行开始就出错了。那么如何提升大模型的推理能力呢,思维链就这么被提出了。

思维链概念的开山之作《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》。这篇文章是现任谷歌大脑研究员的Jason Wei在22年1月放到arxiv上面的文章。简单来说,思维链算是一种离散式提示学习。更具体地,就是在刚刚讲的传统的上下文学习中,思维链多了中间的一些絮絮叨叨的推理过程。

那这样的效果如何呢。这篇文章在算数推理、常识推理,还有符号推理的数据集上做了实验。

数据集及模型:

dataset(Arithmetic Reasoning): GSM8K, SVAMP, ASDiv, AQuA, MAWPS

dataset(Commonsense Reasoning): CSQA, StrategyQA, Date, Sports, SayCan

baseline: standard prompting

LLM:基于5个LLM(GPT-3, LaMDA, PaLM, UL2 20B, Codex)

实验结论:

(1)chain-of-thought对大规模模型有帮助,但小规模模型会产生通顺但不合逻辑的推理链,从而使得效果差于standard prompting;

(2)问题越复杂,chain-of-thought提升效果越好;

(3)一些数据集的结果是state-of-the-art的。

(4)随机抽取最终答案正确的样本进行人工检验,推理链几乎都是正确的;对于最终答案错误的样本,推理链大多也只有一些小细节错误。

消融实验

这一部分对思维链进行了三种变式,检验chain-of-thought成功的原因。

(1)Equation only:prompt只包含数学公式,没有自然语言。对于复杂问题效果差,简单问题(只有一步或两步)效果好。说明了自然语言表述的必要性。

(2)Variable only:prompt只包含一个dot序列(…),与最终答案的计算所需的字符数相等。表现与baseline(standard prompting)相同。同样说明了自然语言表述的必要性。

(3)Reasoning after answer:将推理过程放在answer之后,检验推理链是不是通过帮助模型在预训练中提取相关的信息得到最终答案。表现与baseline(standard prompting)相同,说明推理链和答案的顺序很重要,答案是基于推理链得出的。

InstructGPT & ChatGPT

InstructGPT/ChatGPT的训练分成3步,每一步需要的数据也有些许差异,下面我们分别介绍它们。

InstructGPT

从一个预训练的语言模型开始,应用以下三个步骤。

步骤1:监督微调SFT:收集演示数据,训练一个受监督的策略。我们的标签器提供了输入提示分布上所需行为的演示。然后,我们使用监督学习在这些数据上对预训练的GPT-3模型进行微调。

第二步:奖励模型Reward Model训练。收集比较数据,训练一个奖励模型。我们收集了一个模型输出之间比较的数据集,其中标签者表示他们更喜欢给定输入的哪个输出。然后我们训练一个奖励模型来预测人类偏好的输出。

步骤3:通过奖励模型上的近端策略优化(PPO)强化学习:使用RM的输出作为标量奖励。我们使用PPO算法对监督策略进行微调,以优化该奖励。

步骤2和步骤3可以连续迭代;在当前最优策略上收集更多的比较数据,这些数据用于训练一个新的RM,然后是一个新的策略。

前两步的prompts,来自于OpenAI的在线API上的用户使用数据,以及雇佣的标注者手写的。最后一步则全都是从API数据中采样的,InstructGPT的具体数据:

SFT数据集SFT数据集是用来训练第1步有监督的模型,即使用采集的新数据,按照GPT-3的训练方式对GPT-3进行微调。因为GPT-3是一个基于提示学习的生成模型,因此SFT数据集也是由提示-答复对组成的样本。SFT数据一部分来自使用OpenAI的PlayGround的用户,另一部分来自OpenAI雇佣的40名标注工(labeler)。并且他们对labeler进行了培训。在这个数据集中,标注工的工作是根据内容自己编写指示。RM数据集RM数据集用来训练第2步的奖励模型,我们也需要为InstructGPT/ChatGPT的训练设置一个奖励目标。这个奖励目标不必可导,但是一定要尽可能全面且真实的对齐我们需要模型生成的内容。很自然的,我们可以通过人工标注的方式来提供这个奖励,通过人工对可以给那些涉及偏见的生成内容更低的分从而鼓励模型不去生成这些人类不喜欢的内容。InstructGPT/ChatGPT的做法是先让模型生成一批候选文本,让后通过labeler根据生成数据的质量对这些生成内容进行排序。PPO数据集

InstructGPT的PPO数据没有进行标注,它均来自GPT-3的API的用户。既又不同用户提供的不同种类的生成任务,其中占比最高的包括生成任务(45.6%),QA(12.4%),头脑风暴(11.2%),对话(8.4%)等。

ChatGPT

我们先关注GPT3.5系列,这是ChatGPT的基石。code-davinci-002和text-davinci-002这两兄弟是第一版的 GPT3.5 模型,一个用于代码,另一个用于文本。它们表现出了四种重要能力与初代 GPT-3 不同的能力:

1、响应人类指令:以前,GPT-3 的输出主要训练集中常见的句子。现在的模型会针对指令 / 提示词生成更合理的答案(而不是相关但无用的句子)。

2、泛化到没有见过的任务:当用于调整模型的指令数量超过一定的规模时,模型就可以自动在从没见过的新指令上也能生成有效的回答。 这种能力对于上线部署至关重要,因为用户总会提新的问题,模型得答得出来才行。

3、代码生成和代码理解:这个能力很显然,因为模型用代码训练过。

4、利用思维链 (chain-of-thought) 进行复杂推理:初代 GPT3 的模型思维链推理的能力很弱甚至没有。 code-davinci-002 和 text-davinci-002 是两个拥有足够强的思维链推理能力的模型。

ChatGPT从训练方式上讲和InstructGPT几乎完全相同,不同点在于InstructGPT以GPT-3为基础,而ChatGPT以GPT-3.5为基础,同时二者的训练数据也略有不同。

总的来说:初代GPT-3模型通过预训练获得生成能力和in-context learning;然后通过instruction tuning的模型分支获得了遵循指令和能泛化到没有见过的任务的能力;经过代码训练的分支模型则获得了代码理解的能力;利用思维链,模型获得了复杂推理的能力;通过牺牲上下文学习的能力换取建模对话历史的能力。

结合这些能力,code-davinci-002似乎是具有所有强大能力的最强GPT-3.5模型。接下来通过有监督的instruction tuning和 RLHF通过牺牲模型能力换取与人类对齐。RLHF 使模型能够生成更翔实和公正的答案,同时拒绝其知识范围之外的问题,使得ChatGPT以良好的体验名声大噪。

Reference

[1] Ouyang L, Wu J, Jiang X, et al. Training language models to follow instructions with human feedback[J]. arXiv preprint arXiv:2203.02155, 2022.

[2] Qngxiu D, Lei L, Damai D, et al. A Survey for In-context Learningk[J]. arXiv preprint arXiv:2301.00234 , 2023.

[3] Or Honovich, Thomas Scialom, Omer Levy, Timo Schick. Unnatural Instructions: Tuning Language Models with (Almost) No Human Labor[J]. arXiv preprint arXiv:2212.09689 , 2022.

[4] Brown T B , Mann B , Ryder N , et al. Language Models are Few-Shot Learners[J]. arXiv preprint arXiv: 2005.14165, 2021.

[5] Jason W, Maarten B, Vincent Y, et al. Finetuned Language Models Are Zero-Shot Learners[J]. arXiv preprint arXiv: 2109.01652, 2021.

[6] OpenAI是如何“魔鬼调教” GPT的?——InstructGPT论文解读 https://cloud.tencent.com/developer/news/979148

[7] In-Context Learning(上下文学习)相关分享 https://zhuanlan.zhihu.com/p/603650082

[8] Instruction-Tuning论文列表:https://github.com/SinclairCoder/Instruction-Tuning-Papers

[9] Chain-of-Thought论文列表:https://github.com/Timothyxxx/Chain-of-ThoughtsPapers

[10] Prompt专栏-概述篇 https://zhuanlan.zhihu.com/p/464825153



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3