这一章节提供了对生成式人工智能(AI)的快速介绍,重点放在了注意力机制上,这是转换器架构的关键组成部分。您还将了解一些在AI领域具有影响力的公司。 本章的第一部分向您介绍了生成式AI,包括其最重要的特征和技术。您还将了解对话式AI与生成式AI之间的区别。 本章的第二部分以简要介绍几家在人工智能和自然语言处理(NLP)领域做出重大贡献的公司开始。如果您计划从事NLP领域的职业,您将对这些公司非常熟悉。 本章的第三部分介绍了LLM(大型语言模型)的概念,这对本书中的所有章节都是相关的。 本章的第四部分介绍了注意力的概念,注意力是一种强大的机制,用于生成包含句子中单词的上下文特定信息的词嵌入。向量的内积概念是注意力的主要原理,也是word2vec和支持向量机(即所谓的“核技巧”)的基础。
什么是生成式人工智能?
生成式人工智能指的是一类人工智能模型和技术的子集,旨在生成与给定输入数据集的性质相似的新数据样本。其目标是产生原始训练集中不存在但在语境上连贯、相关,并符合相同风格或结构的内容或数据。 生成式人工智能在创造和创新方面独具优势,与仅仅进行分析或分类的方法不同。这一领域的进展已经带来了在创意领域和实际应用中的突破,使其成为人工智能研究和开发的前沿领域。
生成式人工智能的关键特征
以下是生成式人工智能的最重要特征列表,每一项后面都附有简要描述:
• 数据生成
• 合成
• 学习分布
数据生成指的是能够创建新的数据点,这些数据点不属于训练数据,但与之相似。这可以包括文本、图像、音乐、视频或任何其他形式的数据。
合成意味着生成式模型可以混合各种输入,以生成包含每个输入特征的输出,例如合并两幅图像的风格。
学习分布意味着生成式人工智能模型的目标是学习训练数据的概率分布,以便它们可以从该分布生成新的样本。
生成式人工智能中的流行技术
生成对抗网络(GANs)包括两个网络,一个生成器和一个判别器,它们同时进行训练。生成器试图生成伪造数据,而判别器试图区分真实数据和伪造数据。随着时间的推移,生成器在生成逼真数据方面变得更加优秀。
变分自编码器(VAEs)是概率模型,它们学会对数据进行编码和解码,以便可以使用编码表示来生成新的数据样本。
循环神经网络(RNNs)主要用于序列生成,比如文本或音乐。
生成式人工智能的独特之处
创造与分类:尽管大多数传统人工智能模型的目标是将输入数据分类到预定义的类别中,生成模型的目标是创建新的数据。
无监督学习:许多生成模型,特别是GANs和VAEs,以非监督方式操作,意味着它们在训练中不需要标记的数据。
多样化的输出:生成模型可以基于学到的分布产生各种各样的输出,使其非常适用于艺术生成和风格转移等任务。
挑战:生成式人工智能面临独特的挑战,比如GANs中的模式崩溃或确保生成内容的连贯性等。
生成式人工智能应用涉及众多领域,以下是其中一些:
• 艺术和音乐创作
• 数据增强
• 风格转移
• 文本生成
• 图像合成
• 药物发现
艺术和音乐创作包括生成绘画、音乐或其他形式的艺术。数据增强涉及为训练模型创建额外的数据,尤其是当原始数据集有限时。风格转移是将一幅图像的风格应用到另一幅图像的内容上。文本生成涉及创建连贯且语境相关的文本。图像合成涉及生成逼真的图像、人脸,甚至为视频游戏创建场景。药物发现涉及为新型潜在药物生成分子结构。
对话式人工智能与生成式人工智能的区别
对话式人工智能和生成式人工智能都是人工智能更广泛领域中突出的子领域。然而,这两个子领域在它们的主要目标、使用的技术和应用方面存在不同的关注点。有关更多信息,请参考以下网址:medium.com/@social_651…
这两个子领域之间的主要差异包括以下几点:
• 主要目标
• 应用领域
• 使用的技术
• 训练与交互
• 评估
• 数据需求
主要目标
对话式人工智能的主要目标是促进机器与人类之间类似人类对话的交互。这包括聊天机器人、虚拟助手以及其他与用户进行对话的系统。
生成式人工智能的主要目标是创造新的内容或数据,这些内容在训练集中并不存在,但在结构和风格上相似。这可以涵盖从生成图像、音乐和文本到更复杂的任务,比如视频合成。
应用领域
对话式人工智能的常见应用包括客户支持聊天机器人、语音操作的虚拟助手(如Siri或Alexa)以及交互式语音应答(IVR)系统。
生成式人工智能有许多应用,例如用于创作艺术或音乐、生成逼真的视频游戏环境、合成语音,以及产生逼真的图像或深度伪造。
使用的技术
对话式人工智能通常依赖自然语言处理(NLP)技术来理解和生成人类语言。这包括意图识别、实体提取和对话管理。
生成式人工智能通常利用生成对抗网络(GANs)、变分自编码器(VAEs)和其他生成模型来产生新的内容,例如ChatGPT和GPT-4。
训练与交互
尽管训练可以是监督式、半监督式或无监督式的,但对话式人工智能的主要交互模式是通过来回的对话或交流。
生成式人工智能的训练过程,特别是对于像GANs这样的模型,涉及迭代过程,模型通过试图欺骗鉴别器,使其相信生成的数据是真实的,从而学习生成数据的过程。
评估
对话式人工智能的评估指标通常围绕着理解和响应准确性、用户满意度以及生成响应的流畅性展开。
对于像GANs这样的生成式人工智能模型,评估指标可能具有挑战性,可能需要使用定量指标和人工判断的结合来评估生成内容的质量。
数据需求
对于对话式人工智能,通常需要对话数据,其中包括人与人之间或人与机器人之间的对话。对于AI应该生成的内容(如图像、文本和音乐)的这种类型的大型数据集是必要的。
尽管对话式人工智能和生成式人工智能都涉及生成输出,但它们的主要目标、应用和方法可能存在显著差异。对话式人工智能旨在与用户进行互动式通信,而生成式人工智能则专注于生成新的、原创的内容。
DALL-E是生成式人工智能的一部分吗?
DALL-E以及类似的从文本生成图像的工具确实是生成式人工智能的例子。事实上,DALL-E是图像合成领域中最突出的生成式人工智能的例子之一。
以下是DALL-E的生成特征列表,以及每个项目的简要描述:
• 图像生成
• 学习分布
• 创新组合
• 广泛应用
• 转换器架构
图像生成是DALL-E的一个关键特征,它旨在基于文本描述生成图像。给定一个像“一只双头火烈鸟”这样的提示,DALL-E可以生成与描述相匹配的新颖图像,即使这样的图像在其训练数据中并不存在。
学习分布:与其他生成模型一样,DALL-E学习其训练数据的概率分布。当它生成图像时,它从这个学到的分布中抽样,以产生在其训练基础上合理的视觉效果。
创新组合:DALL-E可以生成代表新颖或抽象概念的图像,展示了它以创新的方式组合和重新组合学到元素的能力。
除了图像合成,DALL-E在艺术生成、风格混合以及创建具有特定属性或主题的图像等领域提供了广泛的应用支持,突显了它作为生成工具的多功能性。DALL-E利用了变种的转换器架构,类似于GPT-3等模型,但经过调整以适应图像生成任务。
其他根据输入数据(无论是文本、另一张图像还是其他形式的数据)生成图形、艺术或任何形式的视觉内容,并能够生成其训练数据中未明确存在的输出的工具也被视为生成式人工智能。它们展示了AI模型不仅能够分析和分类,还能够创造和创新的能力。
ChatGPT-3和GPT-4都属于生成式人工智能吗?
ChatGPT-3和GPT-4都是大型语言模型(LLMs),是生成式人工智能的典型例子。它们属于一类被称为“变压器”(transformer)的模型,这些模型在处理文本相关任务等数据序列方面表现得特别出色。
以下列表提供了这些LLMs被视为生成式的原因,以及每一项的简要描述:
• 文本生成
• 学习分布
• 广泛应用
• 无监督学习
文本生成:这些模型能够基于给定提示生成连贯、语境相关且通常非常复杂的文本序列。它们生成的响应在训练数据中并不存在,但是根据它们在训练期间学到的模式和结构进行构建。
学习分布:GPT-3、GPT-4和类似的模型学习它们训练数据的概率分布。在生成文本时,它们实际上是从这个学到的分布中抽样,以产生基于它们的训练可能性的序列。
广泛应用:除了仅限于文本聊天或对话,这些模型还可以用于各种生成式任务,如写故事、生成代码、创作诗歌以及以特定风格或模仿某些作者的方式创建内容,展示了它们的生成能力。
无监督学习:尽管它们可以使用特定数据集进行微调,但像GPT-3这样的模型主要是以无监督方式在大量文本上进行训练的,学会在不需要每个可能响应的明确标记数据的情况下生成内容。
ChatGPT-3、GPT-4以及OpenAI的类似模型实质上是自然语言处理和生成领域中生成式人工智能的典型例子。
接下来的几个部分简要介绍了在人工智能领域中具有强大存在的一些公司。
DEEPMIND
DeepMind在人工智能领域取得了显著的贡献,包括创建了各种人工智能系统。DeepMind成立于2010年,于2014年成为Google的子公司。其主页是deepmind.com/。
DeepMind创建了280GB的语言模型Gopher,明显优于其竞争对手,包括GPT-3、J1-Jumbo和MT-NLG。DeepMind还开发了AlphaFold,在30分钟内解决了一个研究人员苦苦探索了十年的蛋白质折叠任务。DeepMind于2021年7月免费提供了AlphaFold给所有人使用。DeepMind在AI游戏系统的开发方面取得了显著的成就,其中一些将在下一部分讨论。
DeepMind和游戏
DeepMind是AI系统AlphaStar(在《星际争霸》中进行游戏)和AlphaGo(在围棋中击败了最优秀的人类选手)背后的推动力。这些游戏提供了“完全信息”,而具有“不完全信息”的游戏(如扑克)对机器学习(ML)模型提出了挑战。
AlphaGo Zero(AlphaGo的继任者)通过自我对弈在更短的时间内以及更少的计算资源中掌握了这个游戏。AlphaGo Zero表现出色,以100比0战胜了AlphaGo。另一个强大的系统是AlphaZero,它也使用了自我对弈技术来玩围棋、国际象棋和将棋;该系统取得了SOTA(“State Of The Art”)的性能结果。
相比之下,使用树搜索的ML模型非常适用于具有完全信息的游戏。相反,具有不完全信息的游戏(如扑克)涉及隐藏的信息,可以利用这些信息来制定对抗对手策略的对抗策略。特别是,AlphaStar能够与《星际争霸II》最优秀的玩家对战,并成为第一个在“不完全信息环境中需要战略能力”的游戏中取得SOTA结果的AI。
游戏玩家
在谷歌的DeepMind团队设计的通用PoG(Player of Games)算法基于以下技术:
• CFR(counterfactual regret minimization,反事实遗憾最小化)
• CVPN(counterfactual value-and-policy network,反事实值和策略网络)
• GT-CFR(growing tree CFR,增长树CFR)
• CVPN
反事实值和策略网络(CVPN)是一个神经网络,用于计算游戏中每个状态信念的反事实。这对于在任何给定时间评估游戏的不同变体至关重要。
增长树CFR(GT-CFR)是CFR的一种变体,它经过优化,适用于随时间增长的游戏树。GT-CFR基于两个基本阶段,详情可在以下链接中找到更多信息:
OPENAI
OpenAI是一家在人工智能领域取得重大贡献的研究公司,其中包括DALL-E和ChatGPT。其官方网站是openai.com/api/。
OpenAI由埃隆·马斯克(Elon Musk)和萨姆·奥尔特曼(Sam Altman)等人在旧金山创立,其宣称的目标之一是开发造福人类的人工智能。考虑到微软对该组织的巨额投资和深厚合作关系,OpenAI可能被视为微软的一部分。OpenAI是LLMs GPT-x系列和ChatGPT的创建者,后者于2022年11月30日发布。
OpenAI通过API以每字计费的方式商业化推出了GPT-3(详见第7章)。GPT-3于2020年7月宣布,并通过测试版计划提供。然后,在2021年11月,OpenAI向所有人开放了GPT-3。有关更多详细信息,请参阅在线链接:openai.com/blog/api-no…
此外,OpenAI开发了DALL-E,它能够从文本生成图像。最初,OpenAI不允许用户上传包含逼真面孔的图像。后来,OpenAI改变了政策,允许用户将面孔上传到其在线系统中(有关更多详细信息,请查阅OpenAI网站)。顺便说一下,扩散模型(见第10章)已经超越了DALL-E的基准。
OpenAI发布了Embeddings的公共测试版,这是一种适用于各种机器学习任务的数据格式,具体描述请参阅在线链接:beta.openai.com/docs/guides…
OpenAI是Codex的创建者,该系统提供了一组在自然语言处理(NLP)上进行训练的模型。Codex的首次发布是在私人测试版中进行的,更多信息请参阅在线链接:beta.openai.com/docs/engine…
OpenAI提供了四个统称为“Instruct Models”的模型,支持GPT-3生成自然语言的能力。这些模型将于2024年初被弃用,并被GPT-3、ChatGPT和GPT-4的更新版本替代,详见第7章。
如果您想了解OpenAI提供的功能和服务的更多信息,请访问以下链接:platform.openai.com/overview。
COHERE
Cohere是一家初创公司,是OpenAI的竞争对手;其官方网站是cohere.ai/。
Cohere开发先进的自然语言处理(NLP)技术,可在多个行业商业化应用。Cohere专注于执行文本分析的模型,而不是用于文本生成的模型(例如基于GPT的模型)。Cohere的创始团队令人印象深刻:首席执行官Aidan Gomez是变压器架构的共同发明人之一,首席技术官Nick Frosst是Geoff Hinton的学徒。
HUGGING FACE
Hugging Face是一个流行的基于社区的开源自然语言处理(NLP)技术仓库;其官方网站是github.com/huggingface…
与OpenAI或Cohere不同,Hugging Face不构建自己的NLP模型。相反,Hugging Face是一个平台,管理着大量的开源NLP模型,客户可以对其进行微调,然后部署这些微调的模型。事实上,Hugging Face已成为人们协作开发NLP模型的杰出地点,有时被描述为“面向机器学习和NLP的GitHub”。
Hugging Face的库
Hugging Face提供三个重要的库:datasets、tokenizers和transformers(在第3章中讨论)。Accelerate库支持PyTorch模型。datasets库提供了各种用于NLP的库。tokenizers库使您能够将文本数据转换为数字值。也许最令人印象深刻的库是transformers库,它提供了一个庞大的预训练基于BERT的模型集合(在第5章中讨论),用于执行各种NLP任务。GitHub存储库位于github.com/huggingface…
Hugging Face模型中心
Hugging Face提供了一个模型中心,其中包含大量可在线访问的模型。此外,该网站支持对其模型进行在线测试,包括以下任务: • 使用BERT进行屏蔽词完成 • 使用Electra进行命名实体识别 • 使用RoBERTa进行自然语言推断 • 使用DistilBERT进行问答 • 使用BART进行摘要 • 使用GPT-2进行文本生成 • 使用T5进行翻译 请访问以下链接以查看“write with transformer”文本生成功能:transformer.huggingface.co。
在随后的章节中,您将看到Python代码示例,演示如何列出所有可用的Hugging Face数据集以及如何加载特定数据集。
AI21
AI21是一家通过API提供专有大型语言模型以支持客户应用的公司。AI21目前的SOTA模型被称为Jurassic-1(大小大致与GPT-3相同),AI21还在Jurassic-1和其他模型的基础上创建了自己的应用程序。AI21目前的应用套件涉及能够增强阅读和写作的工具。
Primer是这个领域的一家较早的竞争对手,成立于变压器技术发明两年前。该公司主要为政府和国防客户提供服务。
INFLECTIONAI
在人工智能领域中的一家较新公司是InflectionAI,其令人印象深刻的创始团队包括:
- 雷德·霍夫曼(LinkedIn创始人)
- DeepMind联合创始人穆斯塔法·苏莱曼
- DeepMind研究员卡伦·西蒙扬
InflectionAI致力于一项具有挑战性的任务:使人类能够以与人类相互沟通的方式与计算机进行交互。
ANTHROPIC
Anthropic是由OpenAI的前员工于2021年创建的,其官方网站是www.anthropic.com/。
Anthropic得到了来自多家公司的重要财务支持,包括Google和Salesforce。截至本书印刷时,Anthropic发布了Claude 2,作为ChatGPT的竞争对手。预计Anthropic将在2023年第四季度提供其API。
Claude 2能够总结多达75,000字的基于文本的内容,而ChatGPT目前的限制是3,000字。此外,Claude 2在法学院入学考试的某些部分获得了76.5%的分数,并在Python编码测试中获得了71%的分数。相比之下,Claude 2在向用户提供“干净”回答方面也比ChatGPT更高效。
这结束了关于在人工智能领域做出重要贡献的AI公司的章节。下一部分提供了对大型语言模型的高级介绍。
什么是LLMS?
大型语言模型(LLMs)基于变压器(transformer)架构。有许多不同规模的LLMs,其中许多比基于BERT的模型更大(在第5章和第6章中讨论)。因此,本节对LLM领域进行了非常简要的概述。
LLMs以其庞大的规模而闻名,通常至少包含100亿个参数(BERT仅有“仅有” 15亿个参数)。此外,它们在训练步骤中涉及非常庞大的数据集,可能需要数周的训练时间,成本达数百万美元。不幸的是,这伴随着环境成本。根据以下文章,训练GPT-3的碳足迹可与汽车往返月球一次相媲美: www.theregister.com/2020/11/04/…
除了BERT和BERT家族之外,也许引起巨大关注的最知名的LLM之一是GPT-3。GPT-3由1750亿参数组成,几乎比BERT大120倍。然而,还有更大的模型:Switch使用了5400亿参数,DAO使用了超过1.2万亿参数。更近期(2022年11月),ChatGPT在公众中引起了轰动(两个月内有1亿注册用户),这在第9章中有所讨论。
模型大小与训练集大小
尽管纯粹的大小可能是最重要的因素,但训练数据集的大小更为重要。这个说法与Kaplan及其团队研究的训练集大小与模型大小的结果相悖。 (这是一个重要观点,将在第9章中更详细地讨论。)让我们简要看一下一些已经开发的LLM。
DeepMind的Chinchilla LLM由700亿参数组成,能够胜过GPT-3、Jurassic-1(1780亿)和Megatron-Turing(5300亿),因为它的训练数据集比其他LLM的训练数据集大五倍。
尽管LLMs的表现令人印象深刻,人们对GPT-4的高度期望(于2023年3月14日发布)也很高,但LLMs并不具备像人类那样理解语言的能力。一个实体能够做出类似于人类的智能选择,并不意味着该实体真正理解这些选择的原因与人类相同。
LLMs是否理解语言?
作为一个异想天开且部分相关的类比,考虑以下涉及两位国际象棋大师、一个自信的人和一位12岁男孩的故事,它们在20世纪初乘坐横渡大西洋的船上。
当船离目的地还有几个小时时,自信的人打赌说,在两小时内,他可以训练这个小男孩下棋,使比赛结果要么平局,要么小男孩获胜。然而,国际象棋大师和男孩被要求在一个像衣帽间一样的隐蔽区域下棋,三名参与者不能以任何方式与对方交流。
国际象棋大师接受了挑战,期望他们将利用他们的丰富知识压倒年轻的对手。然而,随着比赛的进行,国际象棋大师们对男孩的棋步的速度和复杂性感到震惊。他们的信心很快被关切所取代,然后是绝望。最终,一位国际象棋大师提出平局,另一位国际象棋大师认输。
欺骗非常简单:每当一个国际象棋大师走一步时,男孩就会对另一个国际象棋大师走同样的一步,这实际上意味着国际象棋大师们在互相竞争。幸运的是,自信的人成功地在船到达目的地之前收集了奖励和男孩,然后在国际象棋大师意识到他们被欺骗之前就下船了。
前述故事的要点是,男孩下了极具智慧的棋步,但不一定理解背后的逻辑。因此,如果一个人不理解某个行动背后的逻辑,这表明LLM更不可能具有类似于人类的对其建议原因的理解水平。
关于LLMs的注意事项
尽管LLMs能够取得令人印象深刻的结果,请记住以下几点:
- 较小的模型在某些任务中可能胜过较大的模型。
- 模型会生成错误的结果(“幻觉”)。
- 一些模型处理长文档,而另一些更适合进行对话。
- 向量数据库的日益重要性。
- 大多数模型未在最新的数据集上进行训练(只能到某个时间点)。 例如,ChatGPT是在2021年9月之前的数据上进行训练的。两个变得越来越重要的特性是:
- 保持以前对话的历史记录的能力。
- 能够即时在互联网上搜索信息。
此外,值得比较开源模型和闭源模型的特性。事实上,据说Yann LeCunn曾表示“开源最终将赢得AI竞赛”。
损失函数
深度学习模型包括基于变压器架构的模型。这类模型依赖于损失函数进行训练。具体而言,损失函数是一个可微函数,用于确定给定模型的预测引起的误差。
在模型的每个反向传播(称为“反向误差传播”或“反传”)过程中,损失函数计算模型参数的梯度(即偏导数的矢量),以更新参数的权重,以提高模型的准确性。
在训练过程中,关于模型准确性的数字序列并不总是一组单调递增的数字:有些迭代比它们的直接前身表现得更差,有时根本没有改进。
什么是AI DRIFT?
术语“AI漂移”指的是LLMs对输入做出意外响应的情形。AI漂移可能与“幻觉”不同:前者涉及常规或一致出现的意外行为,而后者可能是随机发生的,但不一定具有一致的模式。实际上,当你调用Completion.create()
方法(请参见第8章中的Python示例)并将温度参数设置为大于1.0的值时,甚至可以“诱导”类似于幻觉的行为。
AI漂移的一个潜在原因可能是改进LLMs的一个方面的意外结果,这可能会在LLMs的其他方面导致性能下降。
漂移的另一个潜在原因涉及模型漂移,当生产数据与训练数据有实质性差异时可能发生。在这种情况下,要监控生产数据和训练数据以及预测。
AI漂移的后果可能是显著的。例如,你的决策过程容易受到AI漂移的影响,这可能导致基于不正确假设形成的决策。这反过来可能导致预测和建议质量降低,同时对客户满意度产生不利影响。
Optional: 机器学习与漂移
在机器学习术语中,”漂移”指的是一段时间内分布发生的任何变化。模型漂移指的是模型预测准确性的变化,而数据漂移指的是收集的数据类型的变化(注意,数据漂移也被称为输入漂移、特征漂移或协变量漂移)。 影响数据价值的几个因素包括准确性、相关性和年龄。例如,销售手机的实体店更有可能销售较新的手机型号而不是旧型号。在某些情况下,数据漂移是在一段时间内发生的,而在其他情况下,它是由于应用程序中特征相关的更改导致的数据不再相关。在特定数据集中可能有多个因素会影响数据漂移。 处理数据漂移的两种技术是领域分类器和黑盒漂移检测器,两者都在以下链接中进行了讨论:blog.dataiku.com/towards-rel…
除了前述类型的漂移之外,数据集中还可能发生其他类型的变化: • 概念漂移 • 协变量漂移 • 领域漂移 • 先验概率漂移 • 虚假相关性漂移 • 子群漂移 • 时间漂移 有关数据集变化的更多信息,请参阅 arxiv.org/abs/1912.08…。执行在线搜索以查找关于上述列表中项目的更多信息。最后,以下列表包含提供漂移检测的基于Python的开源工具的网站:
• alibi-detect(github.com/SeldonIO/al…
• evidently(github.com/evidentlyai…
• Torchdrift(torchdrift.org/)
考虑到上述主题,让我们将焦点转移到关注的概念,这是下一节的主题。有关此主题的更多见解,请阅读以下文章:sebastianraschka.com/blog/2023/s…
什么是注意力机制?
注意力是变压器架构中的一种机制,通过该机制为语料库中的单词确定上下文词嵌入。与word2vec或gloVe不同,注意力机制在为给定句子中的给定单词创建单词嵌入的过程中考虑了句子中的所有单词。例如,考虑以下句子列表:
我去了银行。
我坐在河堤上。
这条路将向右转弯。
正如你所看到的,“银行”一词在这三个句子中具有不同的含义(两次作为名词,一次作为动词)。变压器架构中的注意力机制生成一个不同的上下文向量(即,一个带有浮点数的一维向量)。因此,不同句子中相同的单词将在每个句子中具有不同的单词嵌入。有趣的是,注意力机制在变压器架构之前就存在:在后者中使用注意力机制是注意力机制崭露头角的地方。
相比之下,word2vec算法(由Google于2013年开发)为单词“bank”(以及句子中的任何其他单词)创建一个单一的单词嵌入(向量)。这并不是对word2vec的批评,它在创建时是自然语言处理中的一项重要突破。
注意力的起源
在注意力机制被设计之前,流行的架构基于其他深度学习架构,如RNN、LSTM或双向LSTM。事实上,注意力机制最初是与RNN或LSTM结合使用的。然而,Google团队进行了一些关于完全依赖于注意力机制和变压器架构的模型的机器翻译任务的实验,发现这些模型在性能上超过了包含CNN、RNN或LSTM的模型。这个结果导致了“注意力就是你需要的一切”这个表达,恰好是有关变压器架构的里程碑论文的标题。
有趣的是,去除RNN带来了两个额外的好处。首先,由于无法并行化的顺序计算,RNN相对较慢。其次,RNN受到了梯度消失问题的困扰。因此,去除RNN消除了这两个缺点。
在高度简化的术语中,变压器包括一个编码器和一个解码器,每个都包含一堆执行与注意相关操作的注意力层,这些将在第4章中学习。
自注意力
自注意力可以并行化,以便独立进行计算。因此,自注意力的实现涉及O(N**2)时间和内存的复杂性。Google研究人员设计了一种算法,显著减少了内存复杂性至O(log N)。
尽管标准的自注意力实现具有时间和内存复杂性,但Google研究人员的最新工作表明,通过简单地重新排列操作,内存复杂性可以减少。
如果你熟悉RNN和LSTM,你知道这两种架构都是顺序处理标记的,并且它们可以跟踪标记在输入序列中出现的顺序。相比之下,变压器架构可以以并行化的方式处理句子中的单词,并且不维护单词在输入序列中出现的顺序。变压器架构使用一种称为位置编码的机制(在第3章中讨论)来跟踪输入序列中单词的顺序。
GAtt(Ghost Attention)
GAtt是用于微调Meta的LLM LlaMa 2 Chat的算法(在第9章中讨论)。GAtt的开发是为了解决ChatGPT在长时间对话过程中“遗忘”指令的问题。有关GAtt的更多信息可以在线获取。
注意力类型和算法
除了分层注意力外,还有其他类型的注意力机制,其中三种是:
- 自注意力
- 全局/软
- 本地/硬 自注意力试图确定句子中的单词如何彼此相互关联。多头注意力使用多个自注意力块而不仅仅是一个自注意力块。然而,每个头处理嵌入向量的不同部分。除了前述的注意力机制外,还有几种可用的注意力算法:
- 加法
- 基于内容
- 点积
- 一般
- 基于位置
- 缩放点积 <= 变压器使用此算法 注意力机制的公式分为两类:涉及向量的点积的公式(有时带有缩放因子),以及将softmax()函数或tanh()函数应用于矩阵和向量的乘积的公式。
变压器架构使用缩放的点积机制来计算注意力。有几种可用的注意力类型,下面的文章包含了20多种注意力类型的列表。
注意力的好处在于计算涉及单词向量对之间的内积的并行化,而RNN和LSTM涉及顺序计算而不是并行化。 注意:变压器架构使用缩放的点积机制来计算注意力。
GPT-2与BERT中的注意力
LLM在其自注意力机制方面可能有所不同。例如,GPT-2解码器组件(在第7章中讨论)中的自注意力与BERT编码器组件(在第5章中讨论)中的自注意力不同。有关这些不同注意力机制的更多细节,请阅读Jay Allamar的Illustrated GPT-2帖子,可以在线访问。
计算注意力:高层次视图
计算基于注意力的数值涉及多个步骤。为了便于理解这个过程,让我们回顾神经网络中的前向传播步骤。
神经网络中的前向传播步骤可以帮助我们理解变压器架构中注意力机制中矩阵 Q、K 和 V 的作用。回想一下神经网络由输入层、一个或多个隐藏层和输出层组成。在神经网络中,对于任何相邻层的一对,相邻层之间的参数(即边缘)的权重由矩阵 W 表示。当然,矩阵 W 的内容对于神经网络中不同相邻层的不同对是不同的。
前向传播从输入层开始,并按以下步骤进行,直到达到输出层:
- 输入层是一个向量 v1。
- v2 = 矩阵 W 乘以向量 v1。
- v3 = 应用于 v2 的激活函数。
- 重复步骤 2、3 和 4。
矩阵 W 可以用小的随机值初始化(或者可以使用 He 算法),这些值在反向误差传播期间进行更新(在前向传播完成后进行)。因此,在神经网络的训练过程中,矩阵 W 中的值在调整中。
变压器的矩阵 Q、K 和 V
思考这三个矩阵的一种方式是它们在通过搜索引擎进行互联网搜索时的作用。典型的用例涉及以下步骤:
- 指定搜索字符串(查询)
- 从搜索引擎返回的选项中选择一个(关键字)
- 查看所选选项的内容(值)
尽管在进行搜索时可能不考虑中间步骤,但重要的是将搜索看作前述列表中的三个步骤。让我们将查询、关键字和值视为欧几里得平面上的向量(只是为了简单起见)。
当查看返回的查询字符串的结果时,您将看到多个链接的列表(以及包含多个链接的许多其他页面)。将每个链接视为具有在欧几里得平面上的相应向量的关键字。在概念上,您选择的链接对应于与查询向量最接近的向量。此外,选择(即点击)该链接会导致搜索引擎检索该链接的值(关键字),即相关链接的内容。
总结一下,将输入字符串(查询)与一组向量(关键字)中最接近的向量(关键字)匹配,以检索与所选向量(关键字)相关联的内容(值)。
计算注意力的步骤
尽管计算注意力矩阵的过程与前面讨论的涉及神经网络的矩阵 W 计算的过程不同,但与矩阵 W 的对应物涉及三个矩阵 Q、K 和 V,每个矩阵都是随机初始化的。计算注意力矩阵的步骤如下:
- 对输入句子进行分词。
- 为每个标记生成一个嵌入向量。
- 从嵌入向量创建矩阵 X。
- 初始化三个矩阵:Q、K 和 V。
- 计算 Q*Kt 的成对值。
- 除以标量 dk2 = sqrt(关键字向量的维度)。
- 对 Q*Kt/dk2 应用 softmax() 函数。
- 计算注意力矩阵 Z。
描述计算注意力矩阵步骤的另一种(更简短)方式,包括矩阵的维度,如下所示: ���/��/��=�/�/�XWq/Wk/Wv=Q/K/V 4�512∗512�64=4�644×512∗512×64=4×64
- �×��Q×KT 4�64∗64�4=4�44×64∗64×4=4×4
- �×��/��Q×KT/dk 4�44×4
- softmax[�×��/��][Q×KT/dk] 4�44×4
- softmax[�×��/��]×�[Q×KT/dk]×V 4�4∗4�64=4�644×4∗4×64=4×64
下一部分包含执行前述列表中每个步骤的示例。