合集 ChatGPT 通过图形化的方式来理解 Transformer 架构
- 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一
- 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二
- 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习三
- 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习四
- 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习五
- 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习六
Generative Pre-trained Transformer (生成式预训练Transformer)
GPT 是 Generative Pre-trained Transformer 的缩写。
前面的词比较直白,它们是指能生成新文本的机器人。
"Pre-trained"指的是模型已经经历了从大量数据中学习的过程,暗示着模型在特定任务上还有进一步训练和微调的潜力。
然而,最后一个词才是真正重要的部分。
Transformer(Transformer)是一种特定类型的神经网络,一种机器学习模型,它是当今人工智能快速发展的核心。
通过这个视频和接下来的章节,我希望能以一种易于理解的方式解释Transformer内部究竟发生了什么。
我们将一步步探索其中的数据流。
你可以用Transformer构建许多不同类型的模型。
有些模型接受音频输入并生成文本。
这句话来自一个反向的模型,它只需要文本输入就能生成人工语音。
所有那些在2022年席卷全球的工具,例如DALL-E和MidJourney,它们能够将文本描述转换为图像,这些都是基于Transformer的。
即使我无法让它完全理解什么是"π生物",我仍然对这样的事情能够发生感到惊讶。
最初的Transformer由谷歌在2017年推出,
主要用于将文本从一种语言翻译成另一种语言。
但我们将重点关注的版本,也就是像ChatGPT这样的工具所依赖的类型,将是一个接受一段文本(可能伴随一些图像或声音)然后预测接下来会出现什么文章的模型。
这个预测以概率分布的形式呈现,涵盖了大量可能出现的下一个文本片段。
乍一看,你可能会认为预测下一个词似乎与生成新词相去甚远。
但当你有了这样一个预测模型,你就可以尝试通过给它一个初始片段,然后从你刚刚生成的概率分布中随机抽取一个样本,将该样本附加到文本中,然后再进行一轮预测,这次是基于所有新生成的文本。
我不知道你怎么想,但我真的不认为这种方法会很有效。
例如,在这个动画中,我在笔记本电脑上运行GPT-2,让它不断预测和抽样下一段文本,试图根据一个开始的文本片段生成一个故事。
结果是,这个故事基本上没有任何逻辑。
但如果我切换到GPT-3的API调用,这是相同的基本模型,只是规模大得多,突然之间就像魔术一样,我们不仅得到了一个有逻辑的故事,甚至还暗示了一个π生物如何栖息在一个充满数学和计算的世界里。
这个过程就是通过反复预测和选择来生成文本,这正是你在使用ChatGPT或其他大型语言模型时所体验到的,它们逐字生成文本。
实际上,我希望有一个功能,可以让我看到它为每个新选择的词所基于的潜在概率分布。
让我们从宏观层面看看数据如何在Transformer模型中流动。
接下来,我们将详细探索、解释和扩展每一步。
但总的来说,当聊天机器人生成一个特定的词时,它是这样工作的。
首先,输入被分割成许多小片段。这些小片段被称为标记(token)。
对于文本,这些标记通常是单词、单词的小部分或其他常见的字符组合。
如果是图像或声音,一个标记可能代表图像的一小块区域或声音的一小段片段。
然后,每个标记都对应一个向量,即一串数字,其目的是以某种方式传达该片段的含义。
如果你把这些向量看作高维空间中的坐标,那么具有相似含义的词往往位于彼此接近的向量上。
这些向量序列
然后经过一个称为"注意力块"(attention blocks)的过程,允许向量相互"交谈",并根据彼此的信息更新自己的值。
例如,"model"这个词在"fashion model"中的含义与在其他上下文中不同。
注意力模块的目的是确定上下文中的哪些词与更新其他词的含义相关,以及这些含义应该如何精确地更新。
每当我说"含义"这个词时,都是指向量中的数字。
之后,这些向量经过另一个过程,根据数据的不同,可能被称为多层感知器(multilayer perceptron)或前馈层(feedforward layer)。
在这个阶段,向量不再相互"交流",而是并行地经历相同的过程。
虽然这一步有点难以理解,我们稍后会讨论,它有点像为每个向量提出一系列问题,然后根据这些问题的答案更新向量。
这两个处理阶段本质上都是大量的矩阵乘法,我们要学习的是如何解释其背后的矩阵。
在解释中,我省略了一些中间步骤的归一化细节,毕竟这只是一个宏观概述。
接下来,这个过程基本上会重复。
你需要不断在注意力模块和多层感知器(MLP)模块之间切换,直到结束,我们期望以某种方式,文章的核心含义已经完全整合到序列的最后一个向量中。
然后,这个最后的向量经过一个特定的操作,产生一个概率分布,涵盖了所有可能出现的下一个标记,代表任何可能出现的小文本片段。
就像我说的,一旦你有了一个根据一小段文本预测下一步的工具,你就可以给它一些初始文本,让它不断预测下一步,从概率分布中抽样,添加到现有文本中,
然后一遍又一遍地重复这个过程。
了解这一点的人可能会回想起,早在ChatGPT出现之前,GPT-3的早期演示就是这样,根据一段起始文本自动完成故事和文章。
将这样一个工具转变为聊天机器人的一个简单方法是准备一段文本,
设定一个用户与有用的AI助手互动的场景,称为系统提示(system prompt)。
然后,你可以用用户的初始问题或提示开始对话,
然后让AI开始预测有用的AI助手将如何回应。
为了让这个过程更好地工作,还有额外的训练步骤,但总的来说,这就是基本思路。
参考
https://youtu.be/wjZofJX0v4M?si=DujTHghH5dYM3KpZ