Transformers, the tech behind LLMs | Deep Learning Chapter 5

Transformers, the tech behind LLMs | Deep Learning Chapter 5

简要概述

本视频深入探讨了生成式预训练Transformer(GPT)的工作原理,这是当前人工智能繁荣的核心技术。视频通过可视化方式解释了Transformer的内部运作,包括数据如何流动、如何进行预测和采样,以及如何通过词嵌入和注意力机制理解上下文。

  • Transformer是一种神经网络,是当前AI繁荣的核心。
  • 通过预测和采样,模型可以生成连贯的文本。
  • 词嵌入将词语转化为高维空间中的向量,相似含义的词语在空间中位置接近。
  • 注意力机制使模型能够理解上下文中不同词语之间的关系。

预测、采样、重复

GPT代表生成式预训练Transformer,是一种生成新文本的机器人。模型通过从大量数据中学习,并可以针对特定任务进行微调。Transformer是一种特定的神经网络,也是当前人工智能繁荣的核心技术。本视频旨在通过可视化方式解释Transformer的内部运作,逐步展示数据如何在其中流动。许多模型都使用Transformer,例如将音频转换为文本、根据文本生成语音,以及根据文本描述生成图像(如DALL-E和Midjourney)。最初的Transformer由Google于2017年推出,用于将文本从一种语言翻译成另一种语言。本视频重点关注的模型类型是ChatGPT的基础,它接受一段文本(可能伴随图像或声音),并预测接下来会出现什么内容。预测的形式是各种可能的文本块的概率分布。通过给模型一个初始片段,让它重复预测和采样下一个文本块,可以将这种预测模型用于生成更长的文本。

Transformer内部

数据在Transformer中的流动过程可以概括为:首先,输入被分解成称为token的小块,对于文本来说,这些token通常是单词或单词片段。每个token都与一个向量相关联,该向量旨在编码该片段的含义。这些向量可以被视为在高维空间中的坐标,含义相似的词语倾向于落在彼此接近的向量上。然后,向量序列通过一个称为注意力块的操作,允许向量相互通信并传递信息以更新它们的值。例如,“机器学习模型”中的“模型”与“时装模特”中的“模型”含义不同。注意力块负责确定上下文中哪些词语与更新哪些其他词语的含义相关,以及这些含义应该如何更新。这些向量随后通过另一种操作,称为多层感知器或前馈层。在这里,向量不相互通信,而是并行地通过相同的操作。这个步骤类似于询问关于每个向量的一长串问题,然后根据这些问题的答案更新它们。所有这些操作都类似于大量的矩阵乘法。这个过程会重复进行,在注意力块和多层感知器块之间来回切换,直到最后,段落的所有基本含义都被烘焙到序列中的最后一个向量中。然后,对最后一个向量执行特定操作,以生成所有可能的token(即可能出现的下一个文本块)的概率分布。

章节布局

本章将详细介绍网络开始和结束时发生的事情,并回顾一些重要的背景知识,这些知识对于机器学习工程师来说是理所当然的。如果你对这些背景知识很熟悉,可以直接跳到下一章,该章将重点介绍注意力块,这通常被认为是Transformer的核心。之后,将讨论多层感知器块、训练方式以及其他一些细节。这些视频是对深度学习迷你系列的补充,即使你没有看过之前的视频也可以理解。

深度学习的前提

深度学习是一种机器学习方法,它使用数据来确定模型的行为。例如,你可能需要一个函数,该函数接收图像并生成描述它的标签,或者预测给定文本段落中的下一个单词,或者执行任何其他似乎需要某种直觉和模式识别的任务。机器学习的思想是,与其明确定义如何在代码中执行该任务的过程(这是早期人工智能的做法),不如设置一个具有可调参数的非常灵活的结构,然后使用大量示例来调整这些参数的值,以模仿这种行为。例如,最简单的机器学习形式可能是线性回归,其中输入和输出都是单个数字,例如房屋的平方英尺及其价格,而你想要找到一条最适合这些数据的线,以预测未来的房价。这条线由两个连续参数(例如斜率和y轴截距)描述,线性回归的目标是确定这些参数以紧密匹配数据。深度学习模型要复杂得多。例如,GPT-3有1750亿个参数。深度学习描述了一类模型,这些模型在过去几十年中已被证明可以很好地扩展。它们都使用相同的训练算法,称为反向传播。为了使这种训练算法能够大规模地良好工作,这些模型必须遵循某种特定的格式。

词嵌入

文本处理的第一个步骤是将输入分解成小块,并将这些小块转换成向量。这些小块被称为token,可能是单词或标点符号。模型有一个预定义的词汇表,其中包含所有可能的单词列表,比如50,000个。遇到的第一个矩阵,称为嵌入矩阵,每个单词都有一列。这些列决定了每个单词在第一步中转换成的向量。将单词转换成向量在Transformer出现之前在机器学习中很常见。这种嵌入单词的做法,可以被认为是将这些向量看作是高维空间中的点。GPT-3中的词嵌入有12,288维,在高维空间中工作非常重要。模型在训练过程中调整其权重,以确定如何将单词嵌入为向量,它倾向于确定一组嵌入,其中空间中的方向具有某种语义含义。例如,如果搜索所有嵌入最接近“tower”的单词,你会注意到它们都给出了非常相似的塔式氛围。一个经典的例子是,如果你取女人和男人向量之间的差,它与国王和女王之间的差非常相似。如果在训练过程中,模型发现选择嵌入是有利的,那么这个空间中的一个方向编码了性别信息。另一个例子是,如果你取意大利的嵌入,减去德国的嵌入,然后将其添加到希特勒的嵌入中,你会得到非常接近墨索里尼的嵌入。模型似乎学会将某些方向与意大利性联系起来,而另一些方向与二战轴心国领导人联系起来。点积可以被认为是一种衡量向量对齐程度的方法。点积在计算上涉及将所有对应的分量相乘,然后将结果相加。几何上,当向量指向相似的方向时,点积为正;当它们垂直时,点积为零;当它们指向相反的方向时,点积为负。嵌入矩阵的列告诉我们每个单词会发生什么,这是模型中的第一堆权重。GPT-3的词汇量为50,257,嵌入维度为12,288,这意味着它包含约6.17亿个权重。

词嵌入之外

在Transformer中,应该将嵌入空间中的向量视为不仅代表单个单词,还应该将它们视为具有吸收上下文的能力。例如,一个最初是“king”的嵌入的向量,可能会逐渐被网络中的各种块拉动,因此最终指向一个更具体和细微的方向,该方向以某种方式编码了它是一位住在苏格兰的国王,他在谋杀了前任国王后获得了他的职位,并且正在用莎士比亚的语言描述。单词的含义显然受到周围环境的影响,有时包括来自远距离的上下文,因此在构建一个能够预测下一个单词的模型时,目标是以某种方式使其能够有效地整合上下文。在第一步中,当基于输入文本创建向量数组时,每个向量都只是从嵌入矩阵中提取出来的,因此最初每个向量只能编码单个单词的含义,而没有任何来自周围环境的输入。网络一次只能处理固定数量的向量,这被称为其上下文大小。对于GPT-3,它接受了2048的上下文大小的训练,因此通过网络的数据始终看起来像这个2048列的数组,每列有12,000个维度。上下文大小限制了Transformer在预测下一个单词时可以合并多少文本。这就是为什么与某些聊天机器人的长时间对话(例如早期版本的ChatGPT)通常会让人感觉机器人在你继续太长时间时会失去对话的线索。

Unembedding

所需的输出是所有可能出现的token的概率分布。例如,如果最后一个词是“Professor”,并且上下文包括“Harry Potter”这样的词,并且紧接之前我们看到“least favorite teacher”,那么一个训练有素的网络,已经建立了关于哈利波特的知识,可能会给“Snape”这个词分配一个很高的数字。这涉及两个不同的步骤。第一步是使用另一个矩阵将上下文中最后一个向量映射到包含50,000个值的列表,每个值对应词汇表中的一个token。然后有一个函数将这个列表归一化为概率分布,它被称为softmax。只使用最后一个嵌入来进行预测似乎有点奇怪,因为在最后一步中,该层中还有数千个其他向量,它们都有自己的上下文丰富的含义。这与训练过程中的一个事实有关,即如果你使用最后一层中的每个向量同时预测紧随其后的内容,那么训练过程会更有效率。这个矩阵被称为Unembedding矩阵。这个Unembedding矩阵的每一行对应词汇表中的一个单词,并且每一行包含的元素数量与嵌入维度相同。它与嵌入矩阵非常相似,只是顺序颠倒了,因此它为网络增加了另外6.17亿个参数。

Softmax与温度

如果希望一系列数字充当概率分布(例如,所有可能的下一个单词的分布),那么每个值必须介于0和1之间,并且所有值的总和也必须为1。但是,如果你正在玩深度学习游戏,其中你所做的一切看起来都像矩阵向量乘法,那么你默认获得的输出根本不遵守这一点。这些值通常为负数,或远大于1,并且它们几乎肯定不会加起来为1。Softmax是将任意数字列表转换为有效分布的标准方法,这样最大的值最终最接近1,而较小的值最终非常接近0。它的工作方式是首先将e提高到每个数字的幂,这意味着你现在有一个正值列表,然后你可以取所有这些正值的总和,并将每个项除以该总和,这会将其归一化为加起来为1的列表。如果在输入中有一个数字明显大于其余数字,那么在输出中,相应的项将主导分布,因此如果你从中采样,你几乎肯定只会选择最大化输入。但它比仅仅选择最大值更柔和,因为当其他值同样大时,它们也会在分布中获得有意义的权重,并且当你连续改变输入时,一切都会连续变化。在某些情况下,比如ChatGPT使用此分布来创建下一个单词时,可以通过在此函数中添加一个常数T来增加一些额外的乐趣,该常数T被抛入这些指数的分母中。我们称之为温度,因为它模糊地类似于温度在某些热力学方程中的作用,其效果是当T较大时,你会给较低的值更多的权重,这意味着分布会更均匀一些,如果T较小,那么较大的值将更积极地占主导地位,在极端情况下,将T设置为零意味着所有权重都将分配给最大值。温度为零意味着它总是使用最可预测的单词,并且你最终得到的是Goldilocks的陈词滥调的衍生品。较高的温度使其有机会选择不太可能的单词,但它伴随着风险。在这种情况下,故事的开头更具原创性,讲述了一位来自韩国的年轻网络艺术家,但它很快就变成了无稽之谈。从技术上讲,API实际上不允许你选择大于2的温度。这没有数学上的原因,这只是为了防止他们的工具被视为生成过于荒谬的东西而施加的任意约束。

接下来

本章的很多目标是为理解注意力机制奠定基础。如果你对词嵌入、softmax、点积如何衡量相似性以及大多数计算必须看起来像具有可调参数的矩阵的矩阵乘法的基本前提有很强的直觉,那么理解注意力机制(这是整个人工智能现代繁荣的基石)应该相对顺利。

Share

Summarize Anything ! Download Summ App

Download on the Apple Store
Get it on Google Play
© 2024 Summ