在访问ChatGPT网站时会看到一个空白的对话框,我们可以在这个对话框中输入任想说的内容。比如,可以输入各种句子、问题,或者任何文字,且文字的内容或形式没有任何限制。
一旦输入完成并提交,ChatGPT立刻开始工作。它会自动分析我们输入的内容,并尝试理解要表达的意思,然后在几秒钟的时间内生成一个回复。如果我们不太满意这个回复,可以随时输入新的内容让它继续给出回复。
所以和ChatGPT交互的关键就是一问一答的交流。我们问什么它就回复什么,然后根据它的回复我们再提出新的问题,如此循环往复。在这个交互的过程中,ChatGPT不断学习和提高,越来越准确地理解我们的意图和上下文,并产生加高质量的回复。
虽然和ChatGPT的交互看起来非常简单,我们只需要专注于表达自己的想法,它就会主动响应和回复,就像和真人聊天一样自然。但是,在这个简单的交互过程的背后,ChatGPT使用了复杂的人工智能技术和大量的语言数据进行训练,才得以模拟出人类级别的交互体验。
ChatGPT使用了Transformer模型。Transformer 模型是一种基于自注意力(Self-Attention)机制的序列到序列(Sequence to Sequence,Seq2Seq)模型,如图1-21所示。它就像一位翻译官,可以实现人类的语言和机器语言的转换。
图1-21 Transformer模型
Transformer由一堆编码器(encoder)和一堆相同数量的解码器(decoder)构成,如图1-22所示。当我们输入一段文本时,这段文本首先进入Transformer模型中的“编码器”进行编码。编码完成后的文本会送入“解码器”,解码后就得到了我们可以理解的输出文本。
图1-22 Transformer的构成
下面详细介绍一下Transformer 模型是如何将人类的提示输入转为输出的。具体涉及以下几个环节。
首先,我们需要将输入的文字转换成计算机可以理解的形式。ChatGPT 使用的词典就像是一本超大型的词典,里面收集了很多词和短语。为了能让计算机处理这些词汇,将每个单词或符号转换为一个向量(一组数字),这个过程称为“词嵌入”。这个向量代表了该词的基本含义,以及它在句子中该如何使用、其所具备的语法特征等。所有这些信息都包含在这个向量中。
来看一个简单的例子:
词语:play
向量:<意思:玩耍,娱乐活动 >< 词性:动词><时态:进行时态><单复数:单数/复数>
根据这个向量(见图1-23),ChatGPT就知道play是一个表示玩耍和娱乐的动词,可以有进行时态和单复数两种形式。所以,无论在什么句子和上下文中出现这个词,ChatGPT都可以正确理解其含义和用法,然后产生语义恰当的输出。
图1-23 向量
接下来,为了让Transformer模型理解单词在句子中的位置信息,我们会给每个向量添加一个特殊的“位置编码”,如图1-24所示。当ChatGPT接收到输入的“Your name is”这一串字符时,它就会根据每个Token的位置编码,取出相应的向量。
图1-24 位置编码
一个编码器中包含一个自注意力(self-attention)机制和一个前馈(feed forward)神经网络,如图1-25所示。其中,自注意力机制是Transformer 模型的核心部分,它可以帮助模型关注输入序列中的每个单词与其他单词之间的关系。在这个过程中,每个单词都会生成三个向量:查询向量(Q)、键向量(K)和值向量(V)。通过计算Q、K、V之间的相似度,可以得到一个权重矩阵,它表示了输入序列中单词之间的关系。
图1-25 编码器的组成
想象一下,你正参加一个生日聚会,每个人都在交谈。在这个过程中,每个人都扮演着不同的角色(查询向量Q、键向量K和值向量V)。自注意力机制就像是一个“社交牛人”,可以了解每个人在聚会中的角色和关系。
● 查询向量(Q) :查询向量就像是每个人的“提问者”角色,他们会提出问题,了解别人在聚会中的角色和地位。
● 键向量(K) :键向量就像是每个人的“回答者”角色,他们会回答别人的问题,提供自己在聚会中的角色和地位的信息。
● 值向量(V) :值向量就像是每个人的“贡献者”角色,他们会根据自己在聚会中的角色和地位,为聚会带来不同的价值。
通过计算每个人(单词)在三个角色之间的互动,“社交牛人”(自注意力机制)就可以了解每个人在聚会中的关系和重要性。这样,就能了解每个人之间的相互关系,并提供可以搞活整个聚会氛围的信息。
为了捕捉输入序列中不同层次的信息,Transformer 模型使用了多个自注意力层,这被称为“多头自注意力”。这些自注意力层可以在多个不同的表示空间中捕获单词之间的关系,从而增强模型的表达能力。
想象一下,在这个生日聚会上,有几位“社交牛人”(多头自注意力)同时在场。每位“社交牛人”关注着不同的主题或者八卦,以便更全面地了解聚会上的互动信息。
● “社交牛人”1 :专注于了解谁是谁的好朋友,从而挖掘出聚会上人际关系的信息。
● “社交牛人”2 :关注的是谁在生日礼物赠与方面最慷慨,从而揭示出与礼物相关的信息。
● “社交牛人”3 :旨在寻找聚会上最有趣的人,以了解谁为聚会带来了最多的欢笑。
通过这几位“社交牛人”在不同主题上的观察,可以共同为我们提供更丰富、更全面的关于聚会氛围的信息。
在多头自注意力中,每个“头”就像是一位“社交牛人”,关注着不同方面的信息。通过结合这些“社交牛人”的观察,Transformer 模型能够更全面地了解输入序列中的单词之间的关系,从而提高翻译的准确性和表达能力。
多头自注意力的输出会经过一层前馈神经网络,以进一步整合信息并生成最终的输出序列。
想象一下,聚会上的几位“社交牛人”(多头自注意力)已经完成了各自的观察,现在需要将这些观察整合在一起,以形成一个全面的关于聚会的总结。这时,聚会组织者(前馈神经网络)登场了。
聚会组织者会听取每位“社交牛人”的观察和建议,然后将这些信息融合在一起,形成一个完整的关于聚会的总结。这个过程包括以下步骤。
● 收集信息 :聚会组织者会从每位“社交牛人”那里收集关于聚会的观察信息,例如人际关系、礼物和幽默等方面的信息。
● 整合信息 :聚会组织者将观察到的这些信息进行整合,找出其中的共性和差异,以便更好地了解整个聚会的氛围。
● 形成总结 :最后,聚会组织者会根据整合后的信息形成一个关于聚会的总结,这个总结将包含聚会各个方面的信息。
在Transformer 模型中,前馈神经网络就是这个聚会组织者,负责整合多头自注意力的输出,从而进一步提炼信息并生成最终的输出序列。通过这个生日聚会的场景,我们可以更容易地理解前馈神经网络在Transformer模型中的作用。
在输出阶段,模型会将前馈神经网络的输出逐个解码,生成最终的输出序列。这个过程可能涉及概率和搜索算法,以确保生成最佳的输出序列。
在聚会结束后,聚会组织者(前馈神经网络)已经为我们提供了一个关于聚会的详细总结。现在,我们需要将这个总结转化为一份有趣、引人入胜的聚会报告。这时,聚会撰稿人(解码器)就派上用场了。
● 筛选信息 :聚会撰稿人首先仔细阅读聚会组织者提供的总结,筛选出最重要、最有趣的信息。这类似于模型中的概率计算,用于挑选最可能的输出。
● 组织结构 :聚会撰稿人根据筛选出的信息,以有趣的方式组织文本结构。这类似于模型中的搜索算法,可以确保生成的文本结构符合要求。
● 生成报告 :聚会撰稿人根据组织好的结构,逐个编写文本内容,生成一份引人入胜的聚会报告。这类似于解码器逐个生成最终的输出序列。
在 Transformer 模型中,解码器就是这个聚会撰稿人,负责将前馈神经网络的输出逐个解码,生成有趣、引人入胜的输出序列。