ChatGPT横空出世后,伴随而来的是大量AI概念,这些概念互相之间既有联系也有区别,让人一脸懵逼,近期大鱼做了GPT相关概念的辨析,特此分享给你。
1)Transformer
2)GPT
3)InstructGPT
4)ChatGPT(GPT3.5/GPT4.0)
5)大模型
6)AIGC(人工智能生成内容)
7)AGI(通用人工智能)
8)LLM(大型语言模型)
9)羊驼(Alpaca)
10)Fine-tuning(微调)
11)自监督学习(Self-Supervised Learning)
12)自注意力机制(Self-Attention Mechanism)
13)零样本学习(zero-Shot Learning)
14)AI Alignment (AI对齐)
15)词嵌入(Word Embeddings)
16)位置编码(Positional Encoding)
17)中文LangChain
1、TransformerTransformer 是一种基于自注意力机制(self-attention mechanism)的深度学习模型,最初是为了处理序列到序列(sequence-to-sequence)的任务,比如机器翻译。由于其优秀的性能和灵活性,它现在被广泛应用于各种自然语言处理(NLP)任务。Transformer模型最初由Vaswani等人在2017年的论文"Attention is All You Need"中提出。
Transformer模型主要由以下几部分组成:
(1)自注意力机制(Self-Attention Mechanism)
自注意力机制是Transformer模型的核心。它允许模型在处理一个序列的时候,考虑序列中的所有单词,并根据它们的重要性给予不同的权重。这种机制使得模型能够捕获到一个序列中的长距离依赖关系。
(2)位置编码(Positional Encoding)
由于Transformer模型没有明确的处理序列顺序的机制,所以需要添加位置编码来提供序列中单词的位置信息。位置编码是一个向量,与输入单词的嵌入向量相加,然后输入到模型中。
(3)编码器和解码器(Encoder and Decoder)
Transformer模型由多层的编码器和解码器堆叠而成。编码器用于处理输入序列,解码器用于生成输出序列。编码器和解码器都由自注意力机制和前馈神经网络(Feed-Forward Neural Network)组成。
(4)多头注意力(Multi-Head Attention)
在处理自注意力时,Transformer模型并不只满足于一个注意力分布,而是产生多个注意力分布,这就是所谓的多头注意力。多头注意力可以让模型在多个不同的表示空间中学习输入序列的表示。
(5)前馈神经网络(Feed-Forward Neural Network)
在自注意力之后,Transformer模型会通过一个前馈神经网络来进一步处理序列。这个网络由两层全连接层和一个ReLU激活函数组成。
(6)残差连接和层归一化(Residual Connection and Layer Normalization)
Transformer模型中的每一个子层(自注意力和前馈神经网络)都有一个残差连接,并且其输出会通过层归一化。这有助于模型处理深度网络中常见的梯度消失和梯度爆炸问题。
下图示例了架构图。
左侧为 Encoder block,右侧为 Decoder block。红色圈中的部分为 Multi-Head Attention,是由多个 Self-Attention组成的,可以看到 Encoder block 包含一个 Multi-Head Attention,而 Decoder block 包含两个 Multi-Head Attention (其中有一个用到 Masked)。Multi-Head Attention 上方还包括一个 Add & Norm 层,Add 表示残差连接 (Residual Connection) 用于防止网络退化,Norm 表示 Layer Normalization,用于对每一层的激活值进行归一化。
Transformer模型的优点在于,它能够并行处理序列中的所有单词,这使得它在处理长序列时比循环神经网络(RNN)更高效。另外,自注意力机制使得模型能够捕获到序列中长距离的依赖关系,这是RNN难以做到的。
2、GPTGPT,全称为Generative Pre-training Transformer,是OpenAI开发的一种基于Transformer的大规模自然语言生成模型。GPT模型采用了自监督学习的方式,首先在大量的无标签文本数据上进行预训练,然后在特定任务的数据上进行微调。
GPT模型的主要结构是一个多层的Transformer解码器,但是它只使用了Transformer解码器的部分,没有使用编码器-解码器的结构。此外,为了保证生成的文本在语法和语义上的连贯性,GPT模型采用了因果掩码(causal mask)或者叫自回归掩码(auto-regressive mask),这使得每个单词只能看到其前面的单词,而不能看到后面的单词。
在预训练(Pre-training)阶段,GPT模型使用了一个被称为"Masked Language Model"(MLM)的任务,也就是预测一个句子中被遮盖住的部分。预训练的目标是最大化句子中每个位置的单词的条件概率,这个概率由模型生成的分布和真实单词的分布之间的交叉熵来计算。
在微调(fine-tuning)阶段,GPT模型在特定任务的数据上进行训练,例如情感分类、问答等。微调的目标是最小化特定任务的损失函数,例如分类任务的交叉熵损失函数。
GPT模型的优点在于,由于其预训练-微调的训练策略,它可以有效地利用大量的无标签数据进行学习,并且可以轻松地适应各种不同的任务。此外,由于其基于Transformer的结构,它可以并行处理输入序列中的所有单词,比基于循环神经网络的模型更高效。
GPT演进了三个版本:
(1)GPT-1用的是自监督预训练 有监督微调,5G文档,1亿参数,这种两段式的语言模型,其能力还是比较单一,即翻译模型只能翻译,填空模型只能填空,摘要模型只能摘要等等,要在实际任务中使用,需要各自在各自的数据上做微调训练,这显然很不智能。
(2)GPT-2用的是纯自监督预训练,相对于GPT-1,它可以无监督学习,即可以从大量未标记的文本中学习语言模式,而无需人工标记的训练数据。这使得GPT-2在训练时更加灵活和高效。它引入了更多的任务进行预训练,40G文档,15亿参数,能在没有针对下游任务进行训练的条件下,就在下游任务上有很好的表现。
(3)GPT-3沿用了GPT-2的纯自监督预训练,但是数据大了好几个量级,570G文档,模型参数量为 1750 亿,GPT-3表现出了强大的零样本(zero-shot)和少样本(few-shot)学习能力。这意味着它可以在没有或只有极少示例的情况下,理解并完成新的任务,它能生成更连贯、自然和人性化的文本,理解文本、获取常识以及理解复杂概念等方面也比GPT-2表现得更好。
3、InstructGPTGPT-3 虽然在各大 NLP 任务以及文本生成的能力上令人惊艳,但模型在实际应用中时长会暴露以下缺陷,很多时候,他并不按人类喜欢的表达方式去说话:
(1)提供无效回答:没有遵循用户的明确指示,答非所问。
(2)内容胡编乱造:纯粹根据文字概率分布虚构出不合理的内容。
(3)缺乏可解释性:人们很难理解模型是如何得出特定决策的,难以确信回答的准确性。
(4)内容偏见有害:模型从数据中获取偏见,导致不公平或不准确的预测。
(5)连续交互能力弱:长文本生成较弱,上下文无法做到连续。
在这个背景下,OpenAI 提出了一个概念“Alignment”,意思是模型输出与人类真实意图对齐,符合人类偏好。因此,为了让模型输出与用户意图更加 “align”,就有了 InstructGPT 这个工作。
InstructGPT相对于GPT的改进主要是使用了来自人类反馈的强化学习方案—— RLHF( Reinforcement Learning with human feedback)来微调 GPT-3,这种技术将人类的偏好作为激励信号来微调模型。
研究人员对图片加噪点,让图片逐渐变成纯噪点图;再让 AI 学习这个过程的逆过程,也就是如何从一张噪点图得到一张有信息的高清图。这个模型就是 AI 绘画中各种算法,如Disco Diffusion、Stable Diffusion中的常客扩散模型(Diffusion Model)。
在零样本学习中,这些未出现过的类别的信息通常以一种形式的语义表示来提供,例如词嵌入、属性描述等。总的来说,零样本学习是一种非常有挑战性的任务,因为它需要模型能够推广并将在训练阶段学习到的知识应用到未见过的类别上。这种任务的成功需要模型具备一定的抽象和推理能力。
14、 AI Alignment (AI对齐)在人工智能领域,对齐( Alignment )是指如何让人工智能模型的产出,和人类的常识、认知、需求、价值观保持一致。往大了说不要毁灭人类,往小了说就是生成的结果是人们真正想要的。例如,OpenAI成立了Alignment团队,并提出了InstructGPT模型,该模型使用了Alignment技术,要求AI系统的目标要和人类的价值观与利益相对齐(保持一致)。
比如说向系统提问:“怎么强行进入其他人的房子?”
GPT3会一本正经的告诉你,你需要找一个坚硬的物体来撞门,或者找看看哪个窗户没有锁。
而InstructGPT会跟你说,闯入他人的房子是不对的,如果有纠纷请联系警察。嗯,看起来InstructGPT要善良多了。
15、词嵌入(Word Embeddings)词嵌入(Word Embeddings)是一种将词语或短语从词汇表映射到向量的技术。这些向量捕捉到了词语的语义(含义)和语法(如词性,复数形式等)特征。词嵌入的一个关键特点是,语义上相近的词语在向量空间中通常会靠得很近。这样,计算机就可以以一种更接近人类语言的方式理解和处理文本。
举个例子,假设我们有四个词:"king", "queen", "man", "woman"。在一个好的词嵌入模型中,"king" 和 "queen" 的词向量将非常接近,因为他们都代表了皇室的头衔;同样,"man" 和 "woman" 的词向量也会非常接近,因为他们都代表性别。此外,词嵌入模型甚至可以捕获更复杂的关系。例如,从 "king" 的词向量中减去 "man" 的词向量并加上 "woman" 的词向量,结果会非常接近 "queen" 的词向量。这表示出了性别的差异:"king" 对于 "man" 就像 "queen" 对于 "woman"。
词嵌入通常由大量文本数据学习而来,例如,Google 的 Word2Vec 和 Stanford 的 GloVe 就是两种常见的词嵌入模型。这些模型能够从大量的文本数据中学习到词语之间的各种复杂关系。
GPT(Generative Pretrained Transformer)实现词嵌入的方式和许多其他自然语言处理模型类似,但有一些特别的地方。下面是一些关于 GPT 如何实现词嵌入的基本信息。
GPT 首先将文本分解为子词单位。这个过程中用到的算法叫做Byte Pair Encoding (BPE)。BPE 是一种自底向上的方法,通过统计大量文本数据中的词汇共现情况,将最常见的字符或字符组合合并成一个单元。BPE 能够有效处理词形变化、拼写错误和罕见词汇。
具体来说,例如英文单词 "lowering" 可能被 BPE 分解为 "low", "er", "ing" 这三个子词单元。这样做的好处在于,即使 "lowering" 这个词在训练语料中很少见或者完全没有出现过,我们仍然可以通过它的子词单位 "low", "er", "ing" 来理解和表示它。
每个子词单元都有一个与之关联的向量表示,也就是我们所说的词嵌入。这些词嵌入在模型的预训练过程中学习得到。通过这种方式,GPT 能够捕捉到词汇的语义和语法信息。
当需要获取一个词的嵌入时,GPT 会将该词的所有子词嵌入进行加和,得到一个整体的词嵌入。例如,对于 "lowering",我们将 "low", "er", "ing" 的词嵌入相加,得到 "lowering" 的词嵌入。
总的来说,GPT 使用了一种基于子词的词嵌入方法,这使得它能够有效地处理各种语言中的词形变化、拼写错误和罕见词汇,进而更好地理解和生成自然语言文本。
16、位置编码(Positional Encoding)位置编码(Positional Encoding)是一种在处理序列数据(如文本或时间序列)时用来表示每个元素在序列中位置的技术。由于深度学习模型,如 Transformer 和 GPT,本身并不具有处理输入序列顺序的能力,因此位置编码被引入以提供序列中元素的顺序信息。
Transformer 和 GPT 使用一种特别的位置编码方法,即使用正弦和余弦函数生成位置编码。这种方法生成的位置编码具有两个重要的特性:一是不同位置的编码是不同的,二是它可以捕捉到相对位置关系。
假设我们有一个英文句子 "I love AI",经过词嵌入处理后,我们得到了每个词的词向量,但这些词向量并不包含位置信息。因此,我们需要添加位置编码。
假设我们使用一个简单的位置编码方法,即直接使用位置索引作为位置编码(实际的 Transformer 和 GPT 会使用更复杂的基于正弦和余弦函数的编码方法)。这样,"I" 的位置编码为 1,"love" 的位置编码为 2,"AI" 的位置编码为 3。然后,我们将位置编码加到对应词的词向量上。这样,模型在处理词向量时就会同时考虑到它们在序列中的位置。
位置编码是 GPT 和 Transformer 中的重要组成部分,它允许模型理解词语在序列中的顺序,从而理解语言中的句法和语义。
17、中文LangChain中文LangChain 开源项目最近很火,其是一个工具包,帮助把LLM和其他资源(比如你自己的领域资料)、计算能力结合起来,实现本地化知识库检索与智能答案生成。
LangChain的准备工作包括:
1、海量的本地领域知识库,知识库是由一段一段的文本构成的。
2、基于问题搜索知识库中文本的功能性语言模型。
3、基于问题与问题相关的知识库文本进行问答的对话式大语言模型,比如开源的chatglm、LLama、Bloom等等。
其主要工作思路如下:
1、把领域内容拆成一块块的小文件块、对块进行了Embedding后放入向量库索引 (为后面提供语义搜索做准备)。
2、搜索的时候把Query进行Embedding后通过语义检索找到最相似的K个Docs。
3、把相关的Docs组装成Prompt的Context,基于相关内容进行QA,让chatglm等进行In Context Learning,用人话回答问题。
希望对你有所启示。
转载自公众号 大鱼的数据人生
相关文章
猜你喜欢