欢迎访问chatgpt中文教程网,学习chatgpt相关知识,以下是正文内容:
全文基于OpenAI研发人员Andrej Karpathy在微软公开大会上的演讲“State of GPT”总结而成
几个概念
GPT
"Generative Pre-trained Transformer"(GPT)是一种自然语言处理模型,采用了Transformer架构。GPT模型使用了预训练Pre-trained和微调Finetune的两个阶段,通过学习语言模式和结构,能generate有连贯性和语义的文本输出。
OpenAI发布了GPT不同的版本,包括
GPT-1: 这是OpenAI最早发布的GPT模型,它具有较少的参数和规模相对较小.
GPT-2: GPT-2是GPT系列的第二个版本,于2019年发布。它是一个具有大规模参数的预训练模型,拥有比GPT-1更高的性能和生成能力。
GPT-3: GPT-3是GPT系列的最新版本,于2020年发布。它是目前为止最大、最强大的GPT模型,拥有1750亿个参数。GPT-3在自然语言处理任务中取得了令人瞩目的成就,能够生成高质量的文本,并在各种任务上展现出色的性能。
ChatGPT
首先介绍GPT-3.5
而GPT-3.5 是由GPT-3 微调出来的版本,其中GPT-3.5 使用与GPT-3 不同的训练方式,所产生出来不同的模型,比起GPT-3 来的更强大。
而chatgpt,则是在GPT-3.5上演变出来的, GPT-3.5 的衍化版本有两种,一种更擅长上下文学习,如text-davinci-003,一种更擅长对话,如ChatGPT。
LLM
"LLM"可以是"Large Language Model"的缩写,即大型语言模型。大型语言模型是指具有大规模参数和强大语言处理能力的模型,GPT是其中一种,还有Meta的LLaMa等。(本身是非官方说法)
GPT模型训练
核心逻辑-先吃饱,再吃好
模型训练四个阶段
1. 预训练阶段-目标:先利用无监督学习训练一个基础模型
1.1 训练数据收集
这里列举了Meta的大模型LLaMa用的数据集,大部分是网上公开爬取的数据,还有一些其他的专业数据集(Github, Wiki, ArXiv都是高质量数据集)
充分说明英文世界的数据集/语料库的质量高真的会让在LLM训练上很占优势,中文世界里能想到的高质量数据集只有中文维基百科。。。(high quantity, low quality)
1.2 文字Token化
将这些原始数据集(文本)进行分词处理,将单词token化(1token=0.75 words),由于中文字符的复杂性,一个标记(token)通常会对应多个字符。具体而言,一个标记(token)通常对应两个或更多个中文字符。
这里,他对比了GPT3和LLaMa两种模型,可以看到后者虽然他的参数只有前者的一半,但他因为训练集更大(1.4T tokens compared to 300B tokens), 所以实际的效果更好,可见,模型强不强大,不能只看参数多少。
1.3 Trasformer训出一个base model
Transfomer基于某个Token的上文预测他的下一个Token, 用这个操作去遍历所有数据(可以看作是通过基于训练集的无监督学习来调整Transfomer的参数, 不断重复iterations来降低损失函数的输出,模型预测的更加精确, 从而得到一个基础模型)
这也是大模型带给深度学习算法的质的改变,
以前,基于单个task, 要单独训练一个模型(比如情感分析的NLP模型)
现在,先利用无监督学习,暴力训练一个通用大模型,再,针对特定任务在特定数据集上进行监督学习的fine-tuning。
综上,就训练出了一个基础大模型
目前主流的一些基础大模型,可以看到,百度文心一言(ERNIE)是唯一上榜的中国厂商。
OK,那是是不是有了基础大模型就够去做各种任务了呢?
No
从原理上就可以看出,Base Model只会去预测下文(去autocomplete) . 他还不能去回答问题。
比如,你提一个问题,他可能会尝试去给出更多的问题。
OK, 既然BM不能当作合格的个人助理,那接下来怎么办呢?这就到了第二个阶段-基于监督学习的微调。
2. 有监督学习的微调-目标:得出一个还不错的模型,用于后续RLHF。
监督学习的数据集,来自人工标注员,他们需要提供大量的Prompt和对应的回答,而且这些标注员需要根据一定的规则进行回答,而且回答的质量还很高,但这部分的数据量并不大(相对于上一步)
通过这一步,就可以得到一个SFT model(SFT dataset是指"Single-Field Text"(单字段文本)数据集。这类数据集通常包含仅有一个字段或属性的文本数据,例如一段单一的句子、一篇新闻标题、一组产品评论等。)
通过有监督微调,预训练模型可以通过在特定任务上的有标签数据上进行训练,提高其在特定任务上的性能和适应能力。
3. RLHF-基于人类反馈的强化学习
直接用SFT模型就完了,干嘛还要做RLHF(人类反馈)?
解决模糊性和不确定性:在对话中,人类反馈可以帮助模型更好地理解模糊的或多义的语句,并在生成响应时减少不确定性。人类反馈可以提供更明确的指导,帮助模型产生更准确、连贯和有意义的回复。
提高响应质量:通过引入RLHF,可以根据人类的反馈对生成的回复进行评估,并使用这些评估来改进模型的训练。这有助于模型学习避免产生无意义、模棱两可或不恰当的回复,提高生成的响应质量。
RLHF这一步的本质是 比较 这个动作
给出一个prompt, 让第二步的SFT model给出多个回答,然后让人给答案按照质量排序(这步其实挺人工耗时的),并基于此训练一个奖励函数,奖励那些高质量的回答。
有了奖励函数,可以针对任何的prompt给出的回答进行质量打分,通过奖励函数给出的打分结果,利用人工标注员给出的prompts数据,反向去boost或者decrease对应token生成的概率,不断强化学习这个过程。
为什么是强化学习的思路呢?因为高质量的语料库,或者是高质量的QA,人工去生产的挑战很大。但是从多个QA中通过人工主观判断出一个好的答案却是比较容易的。Judging is easier than generating...
经过RLHF微调后的模型vsBase Model,BaseModel的墒很大,能generate更丰富多彩的结果(相比RLHF)
补充:
关于SFT和RLHF,如果是后者其实是比较有挑战性的,前者只需要有标签的数据集然后经过算法工程师不断训练调优就好,本质还是在做Language modeling... 而后者相对更加复杂, 需要基于奖励函数不断去强化学习。
GPT线上服务(模型的使用和应用)
首先介绍一个人类进行逻辑思考的例子,在这个例子里,人们为了回答这个问题,会有推理,有计算,有查询,有反思一系列不同的动作和逻辑行为....
再来看GPT的运作模式,
模型只能看到对应的tokens, 然后不断去计算下一个token是什么, 他并没有人类的这一系列内心动作。。。
思维链
ChatGPT 是基于神经网络的语言模型,它通过学习大量的文本数据来生成自然语言的回应。
当给定一个输入时,模型会根据其之前的训练经验和上下文来生成下一个最有可能的词语或短语。在生成回应的过程中,模型会建立一条思维链,将前面的文本作为参考,并依次生成下一个词语,以保持逻辑和语义的连贯性。
思维链在 ChatGPT 的生成过程中起到重要作用,它帮助模型维持对话的连贯性,并使生成的回应更加自然和可理解。
然而,由于模型是基于统计模式学习的,并没有真正的理解或意识,因此有时可能会出现逻辑上不一致或不完整的回答。
所以,通过多轮prompt对话将复杂问题分解成多步,然后一步步的让模型推理,从而建立思考链,是很重要的。
Prompt
基于上文,Prompt是很重要的。要记住,GPT只会去imitate训练的数据,在生成答案的过程中,他不会像人一样,说我一定要把这个问题回答对。。。。始终要记住,它只是一个语言模型,语言!!!所以,在prompt的时候,如果能加上限定的条件(vs不加上限定条件),
例如,
Let's think this step by step(不加上限定条件)
Vs
Let's work this out step by step to be sure we have the right answer(加上限定条件)
后者的效果会更好~
所以,给GPT“心理暗示“,说你的IQ有120,确实是有用的。(从某种意义上,一个可定制化的,更Personalize的AI assistant也因此成为现实,同时,一些基础的能力大家都能拉到一个水平线上)
使用场景
尽管理论上它可以被用来计算数学题,搜索信息,生成程序,等,但要记住的是,GPT本身它并不知道自己擅长什么,不擅长什么,他就是一个大语言模型。
也就是说,与其让GPT基于Token做一道心算题,不如直接拿起计算器...
所以GPT更适合的使用场景是:
一些重复性的低风险的任务(比如客服,广告投放)但需要人工的监督。
作为获取一些创意/建议的来源(比如Midjourney, 法律助手,金融顾问)
相当于自动驾驶领域的L3/4但不是L5,还是需要和一位好的司机配合一起使用。