这就是GPT

233 阅读17分钟

由于近期在读《这就是GPT》这本书,本着费曼学习法,最近在公司的内部分享

Stephen Wolfram 是一位著名的计算机科学家、物理学家和企业家。

他是 Mathematica 软件和 Wolfram Alpha 搜索引擎的创始人,同时也是 Wolfram Research 的首席执行官。

Wolfram 在科学计算和理论物理领域有着深远的影响,他的工作涵盖了从粒子物理到复杂系统和计算理论的广泛领域,Wolfram 在加州理工学院(Caltech)的物理小组工作期间,曾与 Feynman 一起参与咨询,并在波士顿的一家公司——Thinking Machines Corporation——共事。

01 | LLM的进化过程

进化树

现代语言模型的进化树追溯了近年来语言模型的发展,并强调了一些最著名的模型。同一分支上的模型关系更近。

基于Transformer的模型显示为非灰色颜色:

仅解码器模型显示为蓝色分支

仅编码器模型显示为粉红色分支

而编码器-解码器模型显示为绿色分支。

时间轴上模型的垂直位置代表其发布日期。

开源模型由实心方块表示,而闭源模型由空心方块表示

右下角的堆叠条形图显示来自各公司和机构的模型数量。

02 | 编码器 解码器

自2018年后,各种语言大模型层出不穷,这些语言模型主要分为三类:

一是“仅编码器”,该类语言模型擅长文本理解,因为它们允许信息在文本的两个方向上流动;

二是“仅解码器”,该类语言模型擅长文本生成,因为信息只能从文本的左侧向右侧流动,并以自回归方式有效生成新词汇;

三“编码器-解码器”组,该类语言模型对上述两种模型进行了结合,用于完成需要理解输入并生成输出的任务,例如翻译。

我来用比较白话的方式来解释一下,

有3个学生,分别是CNN(卷积神经网络)、RNN(循环神经网络)、Transformer(变换器),都很聪明,不用睡觉,且学习潜力很大,不会厌学,但是大脑结构不一样

自然语言处理的不同任务是不同的题型,而训练的过程就是教会神经网络怎么做题。不同的学生因为大脑结构(网络结构)的不同导致它们的擅长的地方不一样。

CNN擅长图像处理,RNN擅长处理序列数据,而Transformer则因其独特的注意力机制

这些学生的学习模式是针对特定的任务使用对应的数据集进行训练,比如翻译任务,我们给它一段原文和译文,让它自己去做题和对答案,它对完答案后就会不断模仿正确答案去修改自己的思路(即网络参数)。

在做过上个成千上万道题后,它就能回答个八九不离十了。

但是这种训练方式的问题也很明显,就是你练哪种题型,神经网络就只会哪种题型。比如一个在翻译任务上效果非常好的网络,对于分类任务的效果说不定就很差。

然后是预训练出来了,预训练的思想提出来之后,训练的方式进行了革命性的颠覆。

现在我们不再只是教神经网络做某种特定的题,而是教它们从源头上学会单词的意思以及语法内容。我们希望它们去“读书”

让学生通过阅读大量的书籍来学习语言的基本元素,如单词和语法,而不是直接跳到解题阶段。这种方法的核心在于,通过让模型学习大量的语言材料,模型能够建立起一个强大的语言理解基础。

互联网上的海量文本中进行学习

BERT(双向编码器表示变换器)模型中,它的教法是让学生们对课本内容做完形填空。

比如一个句子: “Steve Jobs was the co-founder, chairman, and CEO of Apple.” 老师将其中的CEO这个单词遮住,变成 “Steve Jobs was the co-founder, chairman, and of Apple.” 学生需要在被遮住位置填出正确的单词。

当学生对于绝大部分题目中被遮住的位置都能填上合理的单词后,就认为学生已经学会了各个单词的含义了。

GPT(Generative Pre-trained Transformer)采用的预训练方法与BERT中的掩码语言模型不同。GPT使用的是自回归语言模型,这意味着它在预训练阶段通过预测句子中下一个单词来进行学习。这种方法依赖于句子中之前的单词来生成下一个单词,从而训练模型理解和生成语言。

假设我们有这样一个句子:“The quick brown fox jumps over the lazy dog.” 在GPT的预训练过程中,模型会尝试预测句子中每个单词的下一个单词,基于它已经看到的单词序列。这个过程可以这样进行:

  1. 输入: <|startoftext|>(一个特殊的起始标记) 预测: “The”
  2. 输入: <|startoftext|> The 预测: “quick”
  3. 输入: <|startoftext|> The quick 预测: “brown”
  4. 输入: <|startoftext|> The quick brown 预测: “fox”
  5. 输入: <|startoftext|> The quick brown fox 预测: “jumps”

直到整个句子被完整地生成。在这个过程中,GPT学习如何根据前文来预测下一个最可能的单词,从而逐步构建出语义连贯且语法正确的句子。这种类型的训练使得GPT非常擅长生成文本,因为它不仅学习了单词的意义和用法,还学习了如何将单词组织成有意义的语句和段落。

通过这种方式,GPT能够在没有明确任务指导的情况下,从大量文本数据中学习语言模式,建立起强大的语言生成能力。在预训练之后,GPT可以被用于各种不同的下游任务,如文本生成、摘要、对话系统等,通常只需要少量的任务特定数据进行微调。

当预训练完成后,我们就可以认为它已经具备了基本的语言理解能力。这时候针对具体的任务,如文本分类,再用特定的数据集对模型进行微调训练(即再微调一下模型的参数),就相当于对于一个已经学会基本语义和语法的学生再教他做具体的题目,那么效果就会比直接用具体任务来训练好得多。这就是预训练的意义所在。

预训练数据量极大,相对应需要的算力也就极大

资源太贵了,只能可着一个来,总要选一个厉害的,就是Transformer

使用了Transformer的网络结构作为预训练模型的基本框架结构

Transformer

Transformer模型是自然语言处理(NLP)领域的一项革命性技术,自2017年由Google的研究者提出以来,它已经成为了大型语言模型(LLM)的核心架构。

Transformer的主要贡献是彻底抛弃了之前CNN、RNN等网络结构,而提出了只使用自注意力机制来搭建网络。

Transformer模型的核心特点是其利用自注意力(Self-Attention)机制来处理序列数据,这一机制使得模型能够在处理文本时考虑到序列中各个元素之间的全局依赖关系,从而显著提高了处理效率和效果。

Transformer模型的基本结构包括编码器(Encoder)和解码器(Decoder)两部分。编码器用于处理输入序列,解码器则用于生成输出序列。每个编码器和解码器都是由多个相同的层堆叠而成,每一层都包含了多头注意力(Multi-Head Attention)机制和前馈神经网络(Feed-Forward Neural Network)。这种设计使得Transformer能够并行处理序列中的所有元素,大大加快了训练和推理速度。

自注意力机制

自注意力机制是Transformer模型的核心,它允许模型在处理一个元素时,考虑到序列中所有其他元素的信息。这种机制通过计算序列中每个元素对其他所有元素的注意力分数来实现,然后根据这些分数对所有元素的表示进行加权求和,从而获得每个元素的上下文表示。多头注意力机制进一步扩展了这一概念,通过并行地执行多个自注意力操作,并将它们的输出合并,从而能够让模型同时从不同的表示子空间捕获信息。

解码器 Decoder

想象一下,你正在玩一个接龙游戏,游戏的规则是这样的:每个人说一个词,这个词必须是根据前面所有人说过的词来决定的,而且要让整个句子通顺有意义。

在这个游戏中,你的大脑就像是一个“解码器”,它需要根据前面的词来“解码”出下一个合适的词。

编码器 Encoder

想象一下,你有一条秘密信息,你想通过无线电波发送给远方的朋友,但你不希望途中的任何人都能听懂。

这时候,你就需要一个encoder来帮助你。这个encoder会把你的信息转换成一种只有你和你的朋友能理解的特殊代码。当这条加密后的信息到达你朋友那里时,只有他有对应的decoder才能把这些特殊代码转换回原来的信息。

输入文本(即要翻译的句子)首先被分词为单独的单词词元,然后通过嵌入层对这些词元进行编码,完成后进入编码器部分。

接下来,在每个嵌入的单词上添加位置编码向量,之后,这些嵌入会通过多头自注意力层。

多头注意力层之后会进行残差与层归一化(Add & normalize),它进行了一层标准化操作,并通过跳跃连接(skip connection,也称为残差连接或快捷连接)添加原始嵌入。

最后,进入“全连接层”(它是由两个全连接层(全连接层之间有一个非线性激活函数)组成的小型多层感知器)之后,输出会被再次"残差与层归一化",然后再将输出传递到解码器模块的多头自注意力层。

03 | GPT vs. BERT

Bert:就是在做填字游戏

BERT(Bidirectional Encoder Representations from Transformers)是 Google 在 2018 年创建的一种预训练语言表示模型,用于微调 NLP 应用程序。与其他使用单向注意力流的 NLP 模型不同,BERT 使用双向流的Transformer架构,使用多层的自注意力机制和前馈网络,双向训练策略,即同时考虑左侧和右侧的上下文信息来理解每个单词的含义,这使得它可以使用来自上下文的上下文加工过程中的两个方向。

BERT的主要优势在于其深入的语言理解能力,它能够有效地处理复杂的自然语言理解任务,提供精准的文本分类、情感分析、命名实体识别以及优化搜索引擎查询结果等功能

非常适合用于自然语言理解(NLU)任务,如提高搜索引擎的查询理解、文本分类、情感分析、问答系统和命名实体识别等

GPT:就是在做成语接龙

GPT(Generative Pre-trained Transformer)是由OpenAI开发的一种预训练语言生成模型。GPT使用单向的Transformer架构(Decoder),这意味着它在生成文本时只考虑之前的上下文(左侧上下文),而不像BERT那样同时考虑前后上下文。

GPT的主要优势在于其生成能力,它能够自动完成文本、生成连贯的文章、对话文本以及执行其他多种语言生成任务

非常适合于聊天机器人、自动内容创作、语言翻译和教育辅助等

Difference

  1. 结构上的区别:

    1. Transformer:采用了编码器-解码器(Encoder-Decoder)的结构,这种结构支持输入和输出的序列处理,适用于机器翻译等任务.
    2. BERT:仅使用了Transformer的编码器部分。它专注于生成上下文相关的词嵌入,而不是直接进行序列到序列的转换.
  2. 训练方式的区别:

    1. Transformer:在训练时,通常采用从左到右的方式处理输入序列,并逐步生成输出。这种方式使得每个位置的隐藏表示只能依赖于之前的位置.
    2. BERT:采用双向训练方式,通过遮蔽一部分输入的词(Masked Language Model, MLM)并预测这些词的上下文,从而使模型能够同时考虑到词的左右两侧的上下文信息.
  3. 应用目的的区别:

    1. Transformer:设计初衷是处理如机器翻译等复杂的序列到序列的任务,其输出层通常使用Softmax函数进行概率分布的计算,适用于分类任务1.

    2. BERT:主要用于生成上下文相关的词嵌入,这些嵌入可以被用于各种下游NLP任务,如情感分析、问答系统等,而不是直接在输出层进行分类1.

04 | Focus On GPT

ChatGPT从根本上始终要做的是,针对它得到的任 何文本产生“合理的延续”。这里所说的“合理” 是指,“人们在看 到诸如数十亿个网页上的内容后,可能期待别人会这样写”。

当ChatGPT在写一篇文章时,它实际上只是一遍又一遍地问自己:“在已有的文本基础上,下一个词应该是什么?“

ChatGPT总是根据概率选择下一个词 , 但是这些概率是从何而来的呢?

ChatGPT”吃“下去很多文本内容,从这些文本中将发现了各个词之间的关系,做了这个统计

举个例子:我们把维基百科搜索”猫“,把前100篇英文文章进行字母统计,得到a后面各单词的概率、b后面各单词的概率……统计后你可以看到如下这样一个字母对的概率表(”2-gram“):

根据这个表,我们可以看到,r、s、t和n几个字母后面,a出现的概率都极高,回想”今晚我想和你一起“之后的概率,我们应该可以知道概率是怎么来的了。

但是字母的统计是没有用的,我们至少要把最小颗粒度变成单词,单词一个个联想才有意义。

英文中目前有4万个单词,如果像上面的字母一样进行单词的二元组合的话,可以得到16亿个结果,如果是三元就是60亿个结果….如果是20个单词的文章片段呢?可能数量已经超过了宇宙中所有的粒子数量。那怎么办呢?

人类的归纳能力:模型

ChatGPT-3.5的模型参数高达1750亿个,那么这1750亿的参数是怎么调整出来的?

用计算机自动调整的,这里面就需要引入机器学习和神经网络了

神经网络发明于20世纪40年代——它在当时的形式与今天非 常接 近—— 可以视作对大脑工作机制的简单理想化。

人类大脑有大约1000亿个神经元(神经细胞),每个神经元都能 够产生电脉冲,最高可达每秒约1000次。这些神经元连接成复杂的网络,每个神经元都有树枝状的分支,从而能够向其他数干个神 经元传递电信号。

粗略地说,任意一个神经元在某个时刻是否产生 电脉冲,取决于它从其他神经元接收到的电脉冲,而且神经元不同 的连接方式会有不同的“权重” 贡献。

神经网络,至少以目前的设置来说,基本上是基于数的。因此,如果要用它来处理像文本这样的东西,我们需要一种用数表示文本的方法,这就要引入“ 嵌入 ”(embedding)的思想。 可以将嵌入视为一种尝试通过数的数组来表示某些东西“本质” 的 方法,其特性是“相近的事物” 由相近的数表示

05 | 中国的大大模型

Kimi Chat

是基于大规模预训练模型训练的,充分利用了 GPU 资源池,实现了每天数千卡规模的常态稳定训练34. 它通过创新的网络结构和工程优化,在千亿参数下实现了无损的长程注意力机制,不依赖于滑动窗口、降采样、小模型等对性能损害较大的“捷径”方案34. 这表明 Kimi Chat 使用了 Transformer 架构的变体,特别是在处理长文本和实现长程注意力方面进行了优化

文心一言

百度开发的大模型,基于ERNIE和PLATO系列模型进一步研发而来1. 它采用了自回归的训练方式,这种方式允许模型的输出作为其输入的下一部分,通过这种自我训练,模型学习了文本的概率分布,能够预测后续单词或短语16. 此外,文心一言还利用了深度学习框架如Transformer,这种架构能有效处理序列数据,对长距离依赖关系有良好的捕捉能力

腾讯混元

腾讯混元大模型是腾讯公司推出的,基于Transformer架构的预训练语言模型,拥有超千亿参数规模3512. 这个模型利用了大规模数据集进行预训练,使得模型具备更强大的语义理解和推理能力5. 腾讯混元的技术架构在2023年升级为混合专家模型(MoE)架构,这种架构提高了模型的参数量和处理复杂场景的能力617.

通义千问

通义千问是阿里巴巴集团开发的大模型,同样基于Transformer架构, 这个模型从M6项目发展而来,M6项目是阿里巴巴达摩院启动并推出的一个超大规模多模态预训练模型项目,M6-OFA 采用了 Transformer Encoder-Decoder + ResNet Blocks 架构,经历了从亿级参数到万亿级参数的扩展,最终达到了10万亿参数规模,成为全球首个达到这一规模的多模态大模型2. 通义千问的开发重点在于支持多模态输入(如图像、文本等),并且在预训练阶段覆盖了广泛的数据类型,包括大量网络文本、专业书籍、代码等

06 | 资料

  1. github.com/Mooler0410/LLMsPracticalGuide
  2. Understanding Encoder And Decoder LLMs
  3. 动手学习大模型
  4. Attention Is All You Need