目录
1 ChatGPT概述
1.1 what is chatGPT
ChatGPT (Generative Pre-Trained Transformer) 是由OpenAI团队与2022年11月基于GPT-3.5 (目前已经开放基于GPT-4的ChatGPT模型)开发出来的一个大语言聊天机器人模型。GPT基于Transformer模型结构,ChatGPT通过对输入的指令 (prompt) 来生成文本,更适应聊天机器人,客服等这类型对话应用。模型基于大量的对话语料进行训练,包括网站,书籍,社交媒体等文本语料,目前ChatGPT支持理解生成多种语言的文本,包括英语,中文,法语,德语等。
1.2 How does ChatGPT work
要了解ChatGPT是怎么工作的,首先我们需要来看下ChatGPT是怎么训练出来的,ChatGPT工作阶段主要有如下几个过程:
-
预训练 (Pre-training) 阶段
在预训练阶段,ChatGPT使用了来自互联网上的大规模的文本数据集进行训练,这些数据包含了广泛的内容:新闻,维基百科,书籍,网络文本信息等。预训练的目标是让ChatGPT学习自然语言的语法,语义以及常识知识。ChatGPT采样的是Transformer结构作为模型的基础,通过采用自注意力机制 (self-attention) 来捕捉输入序列中单词之间的关系,通过预训练过程,ChatGPT学会了上下文的理解以及句子结构等。在预训练过程中,ChatGPT通过自回归 (autoregressive) 的方式进行训练,通过将输入序列中的一部分作为上下文,预测下一个单词或者标记,通过这种方式,模型逐渐学习到了语言的统计规律和潜在的语义含义。 -
微调 (Fine-tuning) 阶段
在预训练完成后,ChatGPT需要经过微调来适应特定的任务或应用场景。微调阶段需要特定的对话数据集,这些数据集用于模型进行监督训练。在微调阶段,模型可以学习如何根据上下文生成连贯和有意义的回复,在微调的过程中通常会使用一些技术来引导模型的生成,比如加权重要性采样 (weighted importance sampling) 或使用特定的响应样本作为模型输出的参考。这些技术可以帮助改善模型生成的质量和准确性。 -
预测 (predict) 阶段
一旦ChatGPT完成了训练过程,输入一个指令或者一个问题,ChatGPT就可以生成像人类一样的回答。ChatGPT主要基于学到的知识以及对语言的理解进行生成回答,通过给定的上下文输入,ChatGPT从模型中的词汇概率分布中采用生成。ChatGPT可以提供有帮助的有信息的回答,但是毕竟是AI模型,还是可能存在生成不准确或者不可靠的信息。所以有时候需要从可靠的资源信息里确认模型生成的信息是否可靠。
1.3 The applications of ChatGPT
ChatGPT在许多领域有很多的应用,其中最常见的应用可以归纳如下:
- 客服问答:ChatGPT可以用来充当各种客服支持,与用户交互,帮助解决用户关于产品或者服务等相关问题。
- 个性化推荐:ChatGPT可以分析用户的偏好以及过去的一些交互来提供产品,电影,书籍或者音乐等个性化推荐。
- 语言翻译:ChatGPT可以提供实时的语言翻译,使得用户可以与说不同语言的人进行交流,打破语言障碍。
- 内容生成:ChatGPT可以协助产生各种不同目的的文本内容,比如写一篇文章,产品描述,社交媒体内容等,也可以产生有创意的建议,主题想法等帮助用户克服书写障碍。
- 教育协助:ChatGPT可以扮演一个虚拟的导师或者教育者助理,回答学生的问题,解释概念,提供各科的指导。
- 虚拟个人助理:ChatGPT可以扮演一个虚拟的个人助理,帮助用户管理他们的行程,设置提醒,做预订,找信息等。
- 心理健康支持:ChatGPT可以提供个人心理健康问题的一些指导和支持,可以提供信息,方案以及富有同情心的协助用户处理压力,焦虑或者沮丧情绪。但是,ChatGPT并不能代替专业的心理健康咨询师。
上面只是大概举出了一些常见的应用,ChatGPT可以在很多场景中发挥作用。在使用ChatGPT,我们可能需要监控ChatGPT的偏见,保护用户的隐私以及确保透明度等问题。
1.3 The limitations of ChatGPT
ChatGPT有很多益处和应用,但是它也有一些限制,如下是目前ChatGPT的一些问题:
- 缺乏真实世界的知识:ChatGPT对实时信息以及知识是没法获取的,它的知识受限于训练数据,所以导致对最新的一些事件,新闻等信息是没有感知的。
- 没有校验信息的能力:ChatGPT可以提供信息以及回复,但是它没有能力去校验它产生信息的真实性和准确性。所以在一些关键或者敏感信息,要是从模型中获取,进行事实性的校验是很重要的。
- 信息冗余:ChatGPT有时候会产生较长的或者过于详细的细节内容,这样的回答并不是总是有必要,有时候会导致不那么相关或者有必要。ChatGPT并不总是优先考虑简明扼要的回答。
- 缺乏长期的上下文和记忆信息:在一定程度上,ChatGPT不会保持之前较长时间的对话信息。ChatGPT将用户的每个query当做独立的,所以并不会记得之前的对话详细的信息。这样会导致不连贯以及重复回答的问题。
- 对输入的短语或者prompt敏感:问问题的方式或者prompt如何构造的都会对ChatGPT的回答结果影响较大。即使对相似的query只是短语构成或者prompt稍微不一样,ChatGPT可能产生不一样的回答。
- 偏见问题:由于ChatGPT是语言模型,从之前的训练数据学习知识,若训练数据本身存在偏见问题,ChatGPT产生的答案有时候也会带来偏见。
所以,我们可以把ChatGPT当做一个提供信息和协助的工具,能够意识到ChatGPT的局限性,对ChatGPT提供的回答需要做严格的评估。
2 算法原理
2.1 GPT-1
Improving Language Understanding by Generative Pre-Training
2018年发表,训练数据40GB,模型参数大小1.3B。
2.1.1 Unsupervised pre-training
基于大量的语料进行无监督学习,无监督学习建模目标如下:
给定无监督语料的上下文tokens U = { u 1 , u 2 , . . . , u n } U=\{u_1,u_2,...,u_n\} U={
u1,u2,...,un},使用标准的语言模型目标函数是最大化如下似然函数:
L 1 ( U ) = ∑ i log P ( u i ∣ u i − k , . . . , u i − 1 ; θ ) L_1(U) = \sum_i \log P(u_i|u_{i-k},...,u_{i-1};\theta) L1(U)=i∑logP(ui∣ui−k,...,ui−1;θ)
其中 k k k表示的是文本窗口大小,条件概率 P P P是一般是由参数为 θ \theta θ的神经网络建模预测得到。而在GPT-1算法里,使用的是多层Transformer decoder 作为语言模型,这个模型对输入的上下文tokens通过使用multi-head的self-attention产生目标tokens的向量表征:
h 0 = U W e + W p h_0 = UW_e + W_p h