探索ChatGPT模型的人工智能语言模型

人工智能

635人已加入

描述

作者:陈珍 伍雅乐

背景

2022年11月30日,OpenAI发布了一款具有多种能力的通用大模型ChatGPT,开启了人工智能新时代的序幕。

2023年7月,OpenAI发布公告称给ChatGPT加了一个名为Custom instructions的新功能,使机器人更具有个性化特色的同时,更好地贴近使用者的需求。同时,安卓版ChatGPT也于7月25日正式上线。

2023年11月,OpenAI前总裁兼董事长Greg Brockman宣布,所有用户均可使用其语音功能ChatGPT Voice。2024年4月1日,OpenAI宣布,将允许用户直接使用ChatGPT,而无需注册该项服务。

ChatGPT:我是什么?

ChatGPT是一款由OpenAI公司开发的人工智能技术驱动的自然语言处理工具。它建立在先进的深度学习模型之上,特别是Transformer模型,采用了自注意力机制来捕捉输入文本中的长距离依赖关系,并通过多层编码器-解码器结构来实现输入到输出的映射,使得模型能够逐步捕捉和理解输入序列中的复杂关系,并生成更加准确和自然的回复。ChatGPT不仅能够回答各种问题,还能进还能进行流畅的对话交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务。

多层编码器-解码器结构:Transformer模型的核心组件,它模拟了大脑理解自然语言的过程。

编码器(Encoder):将输入序列(如用户的提问或对话内容)映射到一组中间表示,这个过程可以理解为将语言转化为大脑能够理解和记忆的内容。在ChatGPT中,编码器由多层的注意力模块和前馈神经网络模块组成,其中自注意力模块能够学习序列中不同位置之间的依赖关系。这种机制使得模型能够有效地处理长距离依赖关系,从而更好地理解输入的上下文信息。

解码器(Decoder):将这些中间表示转换为目标序列,即生成连贯、合理的回复。在ChatGPT中,解码器同样由多层的注意力模块和前馈神经网络模块组成。解码器在生成回复时,会考虑之前生成的内容以及编码器提供的上下文信息,从而模拟人类的对话方式。

  Transformer模型:

编码器

ChatGPT:我与GPT系列模型是一样吗?

ChatGPT与GPT系列模型是不一样的ChatGPT专门针对对话式交互任务进行了优化,可以生成具有上下文感知和连贯性的自然语言回复。与其它GPT系列模型相比:

1.最大的区别ChatGPT是通过对话数据进行预训练,而不仅仅是通过单一的句子进行预训练,这使得ChatGPT能够更好地理解对话的上下文,并进行连贯的回复。

2.ChatGPT还使用了一种叫做Dialog Response Ranking(DRR)的训练方法,该方法通过给定正样本对话和负样本对话,强调了正确回答的重要性,提高了模型的表现。

快看工作原理和代码!

ChatGPT的核心方法就是引入“人工标注数据+强化学习”来不断微调预训练语言模型。训练ChatGPT主要分为以下三个阶段:

第一阶段,使用标准数据(提示和对应的回答)进行微调,也就是有监督微调(Supervised Fine-Tuning, SFT)。为了让ChatGPT能够理解用户提出的问题中所包含的意图,首先需要从用户提交的问题中随机抽取一部分,由专业的标注人员给出相应的高质量答案,然后用这些人工标注好的<提示, 答案> 数据来微调 GPT-3模型。微调技术是ChatGPT实现对话生成的关键技术之一,它可以通过在有标注数据上进行有监督训练,从而使模型适应特定任务和场景。微调技术通常采用基于梯度下降的优化算法,不断地调整模型的权重和偏置,以最小化损失函数,从而提高模型的表现能力。

第二阶段,训练奖励模型(Reward Model, RM)。给定提示(大约3万左右),使用微调后的模型生成多个回答,人工对多个答案进行排序,然后使用成对学习(pair-wise learning)来训练奖励模型,也就是学习人工标注的顺序(人工对模型输出的多个答案按优劣进行排序)。目的是用人工标注数据来训练奖励模型(Reward Model, RM)。

第三阶段,使用强化学习,微调预训练语言模型。利用奖励模型的打分结果来更新模型参数,从而使模型更加符合用户的期望。

编码器

编码器

编码器

代码:

import torchimport torch.nn.functional as Ffrom transformers import GPT2LMHeadModel, GPT2Tokenize

# 加载预训练模型和分词器:使用 GPT2LMHeadModel.from_pretrained() 和 GPT2Tokenizer.from_pretrained() 函数加载预训练的 GPT 模型和分词器        model=GPT2LMHeadModel.from_pretrained('gpt2') 

# 加载预训练模型  

tokenizer=GPT2Tokenizer.from_pretrained('gpt2') 

# 加载分词器# 定义对话生成函数:使用模型和分词器生成对话文本。输入参数包括模型 model、分词器 tokenizer、对话前缀 prompt、生成文本的最大长度max_length 和温度 temperature。首先使用分词器将对话前缀转换为输入张量 input_ids,并将其移动到 GPU 上。然后使用模型的 generate() 方法生成文本,并将输出张量转换为文本返回

def generate(model, tokenizer, prompt, max_length=30, temperature=1.0):

# 将对话前缀转换为输入张量

input_ids= tokenizer.encode(prompt, add_special_tokens=False, return_tensors='pt')input_ids = input_ids.cuda() 

# 将输入张量移动到 GPU 上

# 使用模型生成文本 

output=model.generate(input_ids,max_length=max_length,temperature=temperature)

# 将输出张量转换为文本并返回

return       tokenizer.decode(output[0],skip_special_tokens=True)

# 微调对话数据:首先定义对话数据 conversation,然后将其拼接成一个字符串 text,其中奇数句子末尾添加 eos 标记。然后使用分词器将对话数据转换为输入张量 input_ids,并将其移动到 GPU 上。接着使用模型计算损失并反向传播,以微调模型。我们使用 model.train() 将模型设置为训练模式,并使用 optimizer.step() 和 optimizer.zero_grad() 分别执行参数更新和梯度清零操作

conversation = [

"你好,我是小明。",

"你好,我是小红。",

"你喜欢什么运动?",

"我喜欢打篮球。",

"你呢?",

"我喜欢跑步。"]

text = "

"for  i, sentence in enumerate(conversation):    text += sentence

if i % 2 == 0:  text +=tokenizer.eos_token  # 在奇数句子末尾添加 eos 标记

model.train()

# 设置模型为训练模式

for epoch in range(3):

# 将对话数据转换为输入张量

input_ids = tokenizer.encode(text,add_special_tokens=True,return_tensors='pt')

input_ids = input_ids.cuda() 

# 将输入张量移动到 GPU 上 

# 使用模型计算损失并反向传播 

output = model(input_ids, labels=input_ids)  loss =output.loss

loss.backward()

optimizer.step()

optimizer.zero_grad()

# 测试对话生成函数:使用 generate() 函数生成对话文本,并将其打印出来

prompt = "你喜欢什么运动?"

response = generate(model, tokenizer, prompt, max_length=20, temperature=0.7)print(response)

GhatGPT:我的优点太多啦

1.ChatGPT的模型架构主要基于Transformer结构,与传统的基于RNN(循环神经网络)的结构不同。这种基于Transformer的结构能够更好地捕捉文本中的长距离依赖关系,从而提高了模型的性能。具体来说,Transformer结构通过使用自注意力机制(Self-Attention Mechanism)来计算输入序列中每个位置的表示,这使得模型能够更好地理解文本的上下文信息。

2.ChatGPT还采用了生成式AI技术,可以生成连贯且符合语法的文本。这种技术使得ChatGPT能够为人们提供各种问答和文本生成服务,如智能客服、智能助手等。同时,ChatGPT还具备人机交互的能力,可以与用户进行交互,根据用户的输入和反馈生成个性化的回答和回复。

3.ChatGPT模型在大量的文本数据上进行预训练,这使得模型能够更好地学习到语言的特征和规律。在训练过程中,ChatGPT使用了大量的语料库,包括网页文本、书籍、文章等,从而保证了模型的通用性和泛化能力。

 GhatGPT:我也有缺点

1.在生成文本时可能会出现一些不符合实际或常识的错误,或者在某些情况下无法准确地理解用户的意图。

2.由于ChatGPT是在大量的文本数据上进行预训练的,因此其可能会包含一些不适当或冒犯性的内容。因此,在使用ChatGPT时需要注意其生成的文本内容是否合适和准确。

3.中文训练语料库比英文训练语料库要少,所以中文知识也少。

4.无法给出这个信息提供的来源,这就跟百度和Google有本质的不同,在搜索引擎中,我们知道文章是谁写的,所以ChatGPT只能使用它训练的知识。

5.无法获取最新的数据,只能获取训练时间节点的数据来提供知识。

使用注意事项

简单的说,其实就是一句话,提出好的问题,对于ChatGPT来说,问题比答案更重要,因为GPT模型本身就是基于提示(Prompt)来起作用的,它的回答,取决于你给他的提示的内容和质量,那么怎么才能提出好的问题呢?

1.增加细节(增加提示的细节和要求)。

2.不断追问(基于ChatGPT生成的内容不断追问)。

3.心存疑问(对于ChatGPT的回答不能盲目相信)。

ChatGPT的未来与应用

ChatGPT的发展趋势:更加智能化、多模态交互、知识图谱的融合、个性化定制、隐私和安全性。

ChatGPT的挑战(在多模态交互上):数据获取和标注、跨模态理解和融合、计算资源和效率、隐私和安全性。

ChatGPT的应用:客户服务与智能助手、社交媒体与聊天应用、在线教育与培训、金融与投资.医疗健康、内容创作与生成、信息检索与问答系统、虚拟角色和游戏NPC等领域。随着技术的不断发展,ChatGPT在更多领域的应用也将不断拓展。

审核编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分